diff options
author | Ian Romanick <[email protected]> | 2013-03-12 12:42:51 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2013-05-13 12:05:18 -0700 |
commit | dafd6918f305274c8374bf9d427d90a3dabe13cb (patch) | |
tree | ffedaac8613427a35f801b23cc8865583655a130 /src/glsl/ir.h | |
parent | f274a2ca8733059bdd4f1c456ed4f6df7d7ec008 (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.h | 11 |
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, |