diff options
author | Timothy Arceri <[email protected]> | 2017-08-09 13:34:02 +1000 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2017-08-11 10:43:12 +1000 |
commit | e2e2c5abd279df1b3aa99c52b81c9cb48fea35fb (patch) | |
tree | 814dcc8cf5c292ebaead53f75580c93b7f95f1ce /src/compiler/glsl/glsl_to_nir.cpp | |
parent | 5563872dbfbf733ed56e1b367bc8944ca59b1c3e (diff) |
glsl: calculate number of operands in an expression once
Extra validation is added to ir_validate to make sure this is
always updated to the correct numer of operands, as passes like
lower_instructions modify the instructions directly rather then
generating a new one.
The reduction in time is so small that it is not really
measurable. However callgrind was reporting this function as
being called just under 34 million times while compiling the
Deus Ex shaders (just pre-linking was profiled) with 0.20%
spent in this function.
v2:
- make num_operands a unit8_t
- fix unsigned/signed mismatches
Reviewed-by: Thomas Helland <[email protected]>
Diffstat (limited to 'src/compiler/glsl/glsl_to_nir.cpp')
-rw-r--r-- | src/compiler/glsl/glsl_to_nir.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index 331438a1835..e5166855e81 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -1494,11 +1494,11 @@ nir_visitor::visit(ir_expression *ir) } nir_ssa_def *srcs[4]; - for (unsigned i = 0; i < ir->get_num_operands(); i++) + for (unsigned i = 0; i < ir->num_operands; i++) srcs[i] = evaluate_rvalue(ir->operands[i]); glsl_base_type types[4]; - for (unsigned i = 0; i < ir->get_num_operands(); i++) + for (unsigned i = 0; i < ir->num_operands; i++) if (supports_ints) types[i] = ir->operands[i]->type->base_type; else |