summaryrefslogtreecommitdiff
path: root/src/mesa/shader/slang/slang_codegen.c
AgeCommit message (Collapse)Author
2007-02-06Implement CONT, improve BRK.Brian
IR_LOOP's BranchNode ptr is the head of a linked list of CONT and BRK nodes. After emitting loop, walk over the linked list, filling in the CONT/BRK instruction's BranchTarget field (location of the ENDLOOP instruction, or one past).
2007-02-06replace IR_BEGIN_LOOP/IR_END_LOOP with IR_LOOPBrian
2007-02-06new_node[0123]() functionsBrian
2007-02-06redo IR_IF node, removing IR_ELSE, IR_ENDIFBrian
2007-02-05BRK instruction's BranchTarget field now used for efficiently breaking out ↵Brian
of loops. BRK's BranchTarget field actually points to the top of the loop, not the bottom, since we don't know the later's location yet. In the interpreter, basically do an indirect jump to update the PC.
2007-02-05Use IR node's BranchNode field for IF/ELSE/ENDIF instructions.Brian
This allows us to back-patch the IF/ELSE instruction's BranchTarget field to point to the location of the ELSE/ENDIF instructions. No longer have to search for ELSE/ENDIF in the interpreter. Also makes it trivial to translate IF/ELSE instructions into conditional/unconditional BRA instructions.
2007-02-05set UseHighLevelInstructions = false for nowBrian
2007-02-05Initial implementation of high-level flow-control instructions.Brian
IF/ELSE/ENDIF and BEGIN_LOOP/END_LOOP/BREAK instructions seem to work. Disabled by default though until better tested. Implemented IR_NOT, but needs optimization.
2007-02-05Initial support of loop and subroutine instructions.Brian
New high-level flow-control instructions, both at IR level and GPU instructions for looping and subroutines.
2007-02-03Add literal_size field to slang_operation.Brian
Used to track the number of components in a float/int/bool literal. Helps with some typechecking things. Fixes problems with calls such as "distance(v2, vec2(1.0, 2.0))"
2007-02-02add vec4_texcube to AsmInfo[]Brian
2007-02-02move _slang_locate_function()Brian
2007-02-02s/slang_assembly_typeinfo/slang_typeinfo/Brian
2007-02-02s/slang_assembly_name_space/slang_name_space/Brian
2007-02-02rename slang_assemble_typeinfo.[ch] to slang_typeinfo.[ch]Brian
2007-02-02remove more slang assembly-related codeBrian
2007-02-02move some functions, disable some code in preparation for removing assembly codeBrian
2007-02-02Move guts of slang_lookup_constant() into a new function in slang_simplify.cBrian
2007-02-02replace abort() with _mesa_problem()Brian
2007-02-02try to simplify variable initializersBrian
2007-02-01Fix logic in _slang_simplify(): vec2() constructor case wasn't getting used.Brian
2007-01-31Overhaul handling of writemasks/swizzling. This fixes two problem cases:Brian
vec2 v; v.x = v.y = 1.0; // chained assignment vec4 v; v.zx = vec2(a,b); // swizzled writemask
2007-01-31New asm instruction and IR_CLAMP node type to allow clamping to [0,1] with ↵Brian
instruction saturate-write option. Not finished yet.
2007-01-28noise functionsBrian
2007-01-28implement mix() with LRP instructionBrian
2007-01-28Lots of vartable clean-ups, fixes. Report an error message when we run outBrian
of registers, rather than crash.
2007-01-23fix g++ warnings/errorsBrian
2007-01-20Initial implementation of OPCODE_IF/ELSE/ENDIF instructions.Brian
2007-01-20Reimplement && and || to do short-circuit evaluation.Brian
Improved shader error handling.
2007-01-19Implement do/while loops. Replace IR_CJUMP with IR_CJUMP0 and IR_CJUMP1 soBrian
we can either jump on zero, or non-zero predicate.
2007-01-19Implement fragment discard/kill.Brian
2007-01-18Implement constant sharing so that 4 float constants can share a singleBrian
float[4] register slot.
2007-01-18Reimplement code for swizzling so that expressions like (p+q).x for vectors ↵Brian
p and q works correctly.
2007-01-18remove swizzle param from new_var()Brian
2007-01-17_slang_gen_function_call_name() now tries to adapt function calls (expandBrian
vectors, insert casts) when a perfect match isn't found.
2007-01-17Fix/clean-up a number of things related to variable/temporary allocation.Brian
2007-01-16Implement codegen for the selection operator ( b ? x : y )Brian
2007-01-16fix typoBrian
2007-01-16 remove dead codeBrian
2007-01-16implement logical or, xor, notBrian
2007-01-16fix _slang_gen_subscript() for the case when a simple vector is accessed as ↵Brian
an array: convert index to a swizzle/writemask
2007-01-15Reimplement the post-increment/decrement functions.Brian
Instead of defining functions with an extra dummy parameter to distinguish from the pre-incr/decr functions, just use new function names: __postIncr and __postDecr.
2007-01-15Implement the ++var and --var operators, improve some constructors.Brian
2007-01-15checkpoint: ++, -- and && operatorsBrian
2007-01-15Redo the way array indexes are handled. Resolve storage location at code ↵Brian
emit time, not codegen time.
2007-01-15remove old globalsBrian
2007-01-15Move some global vars into slang_assemble_ctx.Brian
2007-01-15fix the subassig, mulassign and divassign casesBrian
2007-01-15clean-up slang_allocate_storage()Brian
2007-01-13Rework code related to temp register allocation, both for user variablesBrian
and expression temporarires. Much better register utilization now. Lots of other fixes. The OpenGL GLSL "orange book" brick shader demo works now.