summaryrefslogtreecommitdiffstats
path: root/src/mesa/shader/slang/slang_ir.h
diff options
context:
space:
mode:
authorBrian <[email protected]>2007-02-05 11:28:15 -0700
committerBrian <[email protected]>2007-02-05 11:28:15 -0700
commit01001d80e26143ac768115ccb2266db2b24d4fa0 (patch)
tree193823bef28d0fb428e7ad42317811ed4116316a /src/mesa/shader/slang/slang_ir.h
parentdd34fe8679fa200e55cfaf8e80bbecdecea084e3 (diff)
Initial support of loop and subroutine instructions.
New high-level flow-control instructions, both at IR level and GPU instructions for looping and subroutines.
Diffstat (limited to 'src/mesa/shader/slang/slang_ir.h')
-rw-r--r--src/mesa/shader/slang/slang_ir.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/mesa/shader/slang/slang_ir.h b/src/mesa/shader/slang/slang_ir.h
index 5fd72be36a0..ac1ea4dbb4a 100644
--- a/src/mesa/shader/slang/slang_ir.h
+++ b/src/mesa/shader/slang/slang_ir.h
@@ -46,15 +46,27 @@ typedef enum
IR_NOP = 0,
IR_SEQ, /* sequence (eval left, then right) */
IR_SCOPE, /* new variable scope (one child) */
+
IR_LABEL, /* target of a jump or cjump */
IR_JUMP, /* unconditional jump */
IR_CJUMP0, /* conditional jump if zero */
IR_CJUMP1, /* conditional jump if one (or non-zero) */
- IR_COND, /* conditional expression */
+ IR_COND, /* conditional expression/predicate */
+
IR_IF, /* high-level IF */
IR_ELSE, /* high-level ELSE */
IR_ENDIF, /* high-level ENDIF */
- IR_CALL, /* call subroutine */
+
+ IR_BEGIN_SUB, /* begin subroutine */
+ IR_END_SUB, /* end subroutine */
+ IR_RETURN, /* return from subroutine */
+ IR_CALL, /* call subroutine */
+
+ IR_BEGIN_LOOP,/* begin loop */
+ IR_END_LOOP, /* end loop */
+ IR_CONT, /* continue loop */
+ IR_BREAK, /* break loop */
+
IR_MOVE,
IR_ADD,
IR_SUB,
@@ -90,17 +102,22 @@ typedef enum
IR_NOISE3, /* noise(x, y, z) */
IR_NOISE4, /* noise(x, y, z, w) */
IR_NOT, /* logical not */
+
IR_VAR, /* variable reference */
IR_VAR_DECL,/* var declaration */
+
IR_ELEMENT, /* array element */
+ IR_FIELD, /* struct field */
IR_SWIZZLE, /* swizzled storage access */
+
IR_TEX, /* texture lookup */
IR_TEXB, /* texture lookup with LOD bias */
IR_TEXP, /* texture lookup with projection */
+
IR_FLOAT,
- IR_FIELD,
IR_I_TO_F, /* int[4] to float[4] conversion */
IR_F_TO_I, /* float[4] to int[4] conversion */
+
IR_KILL /* fragment kill/discard */
} slang_ir_opcode;