summaryrefslogtreecommitdiffstats
path: root/src/glsl/ir.h
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2013-03-12 12:42:51 -0700
committerIan Romanick <[email protected]>2013-05-13 12:05:18 -0700
commitdafd6918f305274c8374bf9d427d90a3dabe13cb (patch)
treeffedaac8613427a35f801b23cc8865583655a130 /src/glsl/ir.h
parentf274a2ca8733059bdd4f1c456ed4f6df7d7ec008 (diff)
glsl: Add ir_triop_vector_insert
The new opcode is used to generate a new vector with a single field from the source vector replaced. This will eventually replace ir_dereference_array of vectors in the LHS of assignments. v2: Convert tabs to spaces. Suggested by Eric. v3: Add constant expression handling for ir_triop_vector_insert. This prevents the constant matrix inversion tests from regressing. Duh. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/glsl/ir.h')
-rw-r--r--src/glsl/ir.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index e3e3b7119a8..6d4150136cd 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -1162,9 +1162,18 @@ enum ir_expression_operation {
ir_triop_bitfield_extract,
/**
+ * Generate a value with one field of a vector changed
+ *
+ * operand0 is the vector
+ * operand1 is the value to write into the vector result
+ * operand2 is the index in operand0 to be modified
+ */
+ ir_triop_vector_insert,
+
+ /**
* A sentinel marking the last of the ternary operations.
*/
- ir_last_triop = ir_triop_bitfield_extract,
+ ir_last_triop = ir_triop_vector_insert,
ir_quadop_bitfield_insert,