diff options
author | Ian Romanick <[email protected]> | 2015-04-15 17:19:04 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2016-08-30 16:28:00 -0700 |
commit | 140ec58a07894da12440f1069ade3a4ed0ce0438 (patch) | |
tree | c2ef55bd4350b2f783011103ce9674b05d51522a | |
parent | 7d6af9e59935959689ac9611f17abc06c6837f16 (diff) |
glsl: Generate the ir_last_* values
This ensures that they remain correct if the list is rearranged or new
opcodes are added. I checked a diff of before and after to ensure that
each ir_last_ had the same value.
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Acked-by: Dylan Baker <[email protected]>
-rw-r--r-- | src/compiler/glsl/ir_expression_operation.py | 48 |
1 files changed, 20 insertions, 28 deletions
diff --git a/src/compiler/glsl/ir_expression_operation.py b/src/compiler/glsl/ir_expression_operation.py index 35f1be61dd7..743ca915f1f 100644 --- a/src/compiler/glsl/ir_expression_operation.py +++ b/src/compiler/glsl/ir_expression_operation.py @@ -162,13 +162,7 @@ ir_expression_operation = [ ("vote_any", 1, None, None), ("vote_all", 1, None, None), ("vote_eq", 1, None, None), - -""" - /** - * A sentinel marking the last of the unary operations. - */ - ir_last_unop = ir_unop_vote_eq, -""", + "", ("add", 2, "+", None), ("sub", 2, "-", None), ("mul", 2, "*", "Floating-point or low 32-bit integer multiply."), @@ -284,11 +278,6 @@ ir_expression_operation = [ ("interpolate_at_sample", 2, None, None), """ /** - * A sentinel marking the last of the binary operations. - */ - ir_last_binop = ir_binop_interpolate_at_sample, - - /** * \\name Fused floating-point multiply-add, part of ARB_gpu_shader5. */ /*@{*/""", @@ -319,25 +308,10 @@ ir_expression_operation = [ * operand2 is the index in operand0 to be modified */""", ("vector_insert", 3, None, None), -""" - /** - * A sentinel marking the last of the ternary operations. - */ - ir_last_triop = ir_triop_vector_insert, -""", + "", ("bitfield_insert", 4, None, None), "", ("vector", 4, None, None), -""" - /** - * A sentinel marking the last of the ternary operations. - */ - ir_last_quadop = ir_quadop_vector, - - /** - * A sentinel marking the last of all operations. - */ - ir_last_opcode = ir_quadop_vector""", ] def name_from_item(item): @@ -378,7 +352,25 @@ ${item} ${name_from_item(item)},${"" if item[3] is None else " /**< {} */".format(item[3])} % endif % endfor + + /** + * Sentinels marking the last of each kind of operation; + */ +% for (name, i) in lasts: + ir_last_${("un", "bin", "tri", "quad")[i]}op = ${name_from_item((name, i+1))}, +% endfor + ir_last_opcode = ir_quadop_${lasts[3][0]} };""") + lasts = [None, None, None, None] + for item in reversed(ir_expression_operation): + if isinstance(item, str): + continue + + i = item[1] - 1 + if lasts[i] is None: + lasts[i] = (item[0], i) + print(enum_template.render(values=ir_expression_operation, + lasts=lasts, name_from_item=name_from_item)) |