summaryrefslogtreecommitdiff
path: root/src/mesa/shader/slang/slang_emit.c
AgeCommit message (Collapse)Author
2007-04-09undo a debug/test changeBrian
2007-03-31always emit BGN/ENDSUB, for now anywayBrian
2007-03-28cond code fixBrian
2007-03-28fix cond code swizzle bugBrian
2007-03-28optimization for the emit_not() functionBrian
2007-03-28remove IR_BREAK_IF_FALSEBrian
2007-03-28Get rid of IR_CONT_IF_FALSEBrian
2007-03-28Don't emit OPCODE_CONT0/1, BRK0/1 instructions, clean-ups elsewhere.Brian
2007-03-28added some null ptr checks to handle error recoveryBrian
2007-03-28Use constant_to_src_reg() to simplify some codeBrian
2007-03-28Fix, clean-up code related to comparisons, condition codes, etc.Brian
2007-03-27Implement true CAL/RET subroutines. Some optimizations, clean-ups coming...Brian
2007-03-26Checkpoint: implementing true CAL/RET instructions for subroutine calls.Brian
Also, found/fixed a code generation regression: the emit_swizzle() function was always returning NULL. This caused emit_move() to miss its chance at peephole optimization.
2007-03-26Get rid of IR_JUMP and related code.Brian
2007-03-26Get rid of SLANG_OPER_GOTO, start rewrite of 'return' handling.Brian
2007-03-26remove debug abort() callsBrian
2007-03-26Additional error checking for 'return' statements.Brian
2007-03-26undo some debugging hacksBrian
2007-03-26Fix a few issues with computing storage sizes with respect to swizzles.Brian
2007-03-26remove incorrect assertionsBrian
2007-03-24move some code into new slang_ir.c fileBrian
2007-03-23Fix issues related to the 'continue' statement.Brian
IR_LOOP now has two children: the body code, and the tail code. Tail code is the "i++" part of a for-loop, or the expression at the end of a "do {} while(expr);" loop. "continue" translates into: "execute tail code; CONT;" Also, the test for infinite do/while loops was incorrect.
2007-03-23Add the ability to generate programs that doesn't use condition codes.Brian
ctx->Shader.EmitCondCodes determines if we use condition codes. If not, IF statement uses first operand's X component as the condition. Added OPCODE_BRK0, OPCODE_BRK1, OPCODE_CONT0, OPCODE_CONT1 to handle the common cases of conditional break/continue.
2007-03-23updated commentBrian
2007-03-22Overhaul emit_compare() function.Brian
Previously, comparing vec2, vec3, vec4 was broken. Added IR_EQUAL, IR_NOTEQUAL nodes/operators to compute boolean equality/inequality vs. IR_SEQUAL/IR_SNEQUAL which work component-wise. Use IR_EQUAL/IR_NOTEQUAL for the == and != operators. To compute vec4 equality, use SNE, DP4, SEQ instruction sequence.
2007-03-22First pass at implementing structure compares.Brian
Need to improve this. There may be holes in a structure so we can't just blindly compare the full 4-float registers.
2007-03-21Support for user-defined structures.Brian
struct == and != operators not finished yet. Struct assignment works though.
2007-03-14remove old assertionBrian
2007-03-13disable some debug outputBrian
2007-03-13Shuffle some code around in the emit_tex() and emit_move() instructions.Brian
Note that the inst ptr returned by new_instruction() may become invalid after calling emit_() since the emit functions may allocate new instructions which is done vial realloc(). Also, add some new assertions to try to catch this kind of bug.
2007-03-10add NULL ptr check in emit_cond()Brian
2007-03-08Added IR_SLE and IR_SLT for <= and < operations.Brian
Using IR_SGE and IR_SGT with transposed args doesn't work since the __asm calls don't do argument matching by name, but by position. This fixes the broken lessThan() and lessThanEqual() functions.
2007-03-08fix tmp storage problem for IR_I_TO_FBrian
2007-03-08fix assertionBrian
2007-03-08IR_CJUMP0/1 no longer used/neededBrian
2007-03-08remove old assertionBrian
2007-03-07remove unneeded return stmtBrian
2007-03-07Fix problem with nested function calls such as y = f(f(x))Brian
Replace CurFunction with curFuncEndLabel.
2007-03-06fix some int arithmetic problemsBrian
2007-02-26Add EmitHighLevelInstructions, EmitComments booleans to gl_shader_state.Brian
These control code generation options. May be overridden by drivers, debuggers, etc.
2007-02-26Overhaul of error handling.Brian
2007-02-26Use new slang_emit_info struct for passing context info around.Brian
2007-02-23comments, clean-upBrian
2007-02-23Replace slang_ir_node::Target w/ Field. Remove Comment field. Clean-up.Brian
2007-02-23Re-implement branching with slang_labels.Brian
This eliminates the NOP instructions that had been used as placeholders for branch targets. Also, fix "return" statement bug.
2007-02-22debug code for emitting variable allocation commentsBrian
2007-02-21remove dead codeBrian
2007-02-21adjustments to STATE_ token layout/format so token[1] is always the array indexBrian
2007-02-21checkpoint overhaul of pre-defined uniform codeBrian
2007-02-20clean-up, move IR_ELEMENT codeBrian