Re: [Mesa-dev] [PATCH 19/22] glsl: Kill ir_assignment::condition with fire
And I just pushed an update to my branch that rebases this on the merge of loop_analysis.cpp and loop_controls.cpp. On 09/21/2017 09:34 AM, Ian Romanick wrote: > From: "\"Ian Romanick\""> > From: Ian Romanick > > Signed-off-by: Ian Romanick > --- > src/compiler/glsl/glsl_to_nir.cpp | 16 ++ > src/compiler/glsl/ir.cpp | 5 ++--- > src/compiler/glsl/ir.h| 6 -- > .../glsl/ir_builder_print_visitor.cpp | 4 > src/compiler/glsl/ir_clone.cpp| 2 -- > src/compiler/glsl/ir_constant_expression.cpp | 12 +-- > src/compiler/glsl/ir_hv_accept.cpp| 3 --- > src/compiler/glsl/ir_print_visitor.cpp| 3 --- > src/compiler/glsl/ir_rvalue_visitor.cpp | 2 -- > src/compiler/glsl/loop_analysis.cpp | 3 +-- > src/compiler/glsl/loop_controls.cpp | 2 +- > src/compiler/glsl/lower_distance.cpp | 2 +- > .../lower_variable_index_to_cond_assign.cpp | 17 +-- > .../glsl/lower_vec_index_to_cond_assign.cpp | 4 > src/compiler/glsl/opt_array_splitting.cpp | 7 --- > src/compiler/glsl/opt_constant_folding.cpp| 17 --- > .../glsl/opt_constant_propagation.cpp | 3 --- > src/compiler/glsl/opt_constant_variable.cpp | 3 --- > src/compiler/glsl/opt_copy_propagation.cpp| 3 --- > .../glsl/opt_copy_propagation_elements.cpp| 3 --- > .../glsl/opt_dead_builtin_varyings.cpp| 1 - > src/compiler/glsl/opt_dead_code_local.cpp | 21 +++ > src/compiler/glsl/opt_structure_splitting.cpp | 7 ++- > src/compiler/glsl/opt_tree_grafting.cpp | 3 +-- > src/compiler/glsl/opt_vectorize.cpp | 3 +-- > src/mesa/program/ir_to_mesa.cpp | 16 -- > src/mesa/state_tracker/st_glsl_to_tgsi.cpp| 17 ++- > 27 files changed, 26 insertions(+), 159 deletions(-) > > diff --git a/src/compiler/glsl/glsl_to_nir.cpp > b/src/compiler/glsl/glsl_to_nir.cpp > index 99df6e0..57b832f 100644 > --- a/src/compiler/glsl/glsl_to_nir.cpp > +++ b/src/compiler/glsl/glsl_to_nir.cpp > @@ -1253,13 +1253,7 @@ nir_visitor::visit(ir_assignment *ir) >copy->variables[0] = evaluate_deref(>instr, ir->lhs); >copy->variables[1] = evaluate_deref(>instr, ir->rhs); > > - if (ir->condition) { > - nir_push_if(, evaluate_rvalue(ir->condition)); > - nir_builder_instr_insert(, >instr); > - nir_pop_if(, NULL); > - } else { > - nir_builder_instr_insert(, >instr); > - } > + nir_builder_instr_insert(, >instr); >return; > } > > @@ -1290,13 +1284,7 @@ nir_visitor::visit(ir_assignment *ir) > store->variables[0] = nir_deref_var_clone(lhs_deref, store); > store->src[0] = nir_src_for_ssa(src); > > - if (ir->condition) { > - nir_push_if(, evaluate_rvalue(ir->condition)); > - nir_builder_instr_insert(, >instr); > - nir_pop_if(, NULL); > - } else { > - nir_builder_instr_insert(, >instr); > - } > + nir_builder_instr_insert(, >instr); > } > > /* > diff --git a/src/compiler/glsl/ir.cpp b/src/compiler/glsl/ir.cpp > index 4cf322d..52f9133 100644 > --- a/src/compiler/glsl/ir.cpp > +++ b/src/compiler/glsl/ir.cpp > @@ -151,7 +151,7 @@ ir_assignment::whole_variable_written() > ir_assignment::ir_assignment(ir_dereference *lhs, ir_rvalue *rhs, > unsigned write_mask) > : ir_instruction(ir_type_assignment), lhs(lhs), rhs(rhs), > - condition(NULL), write_mask(write_mask) > + write_mask(write_mask) > { > if (lhs->type->is_scalar() || lhs->type->is_vector()) { >int lhs_components = 0; > @@ -165,8 +165,7 @@ ir_assignment::ir_assignment(ir_dereference *lhs, > ir_rvalue *rhs, > } > > ir_assignment::ir_assignment(ir_rvalue *lhs, ir_rvalue *rhs) > - : ir_instruction(ir_type_assignment), lhs(NULL), rhs(rhs), > - condition(NULL), write_mask(0) > + : ir_instruction(ir_type_assignment), lhs(NULL), rhs(rhs), write_mask(0) > { > /* If the RHS is a vector type, assume that all components of the vector > * type are being written to the LHS. The write mask comes from the RHS > diff --git a/src/compiler/glsl/ir.h b/src/compiler/glsl/ir.h > index 28a356a..d7f8630 100644 > --- a/src/compiler/glsl/ir.h > +++ b/src/compiler/glsl/ir.h > @@ -1475,12 +1475,6 @@ public: > ir_rvalue *rhs; > > /** > -* Optional condition for the assignment. > -*/ > - ir_rvalue *condition; > - > - > - /** > * Component mask written > * > * For non-vector types in the LHS, this field will be zero. For vector > diff --git a/src/compiler/glsl/ir_builder_print_visitor.cpp > b/src/compiler/glsl/ir_builder_print_visitor.cpp > index 3e30c5d..1f29562 100644 > --- a/src/compiler/glsl/ir_builder_print_visitor.cpp > +++
[Mesa-dev] [PATCH 19/22] glsl: Kill ir_assignment::condition with fire
From: "\"Ian Romanick\""From: Ian Romanick Signed-off-by: Ian Romanick --- src/compiler/glsl/glsl_to_nir.cpp | 16 ++ src/compiler/glsl/ir.cpp | 5 ++--- src/compiler/glsl/ir.h| 6 -- .../glsl/ir_builder_print_visitor.cpp | 4 src/compiler/glsl/ir_clone.cpp| 2 -- src/compiler/glsl/ir_constant_expression.cpp | 12 +-- src/compiler/glsl/ir_hv_accept.cpp| 3 --- src/compiler/glsl/ir_print_visitor.cpp| 3 --- src/compiler/glsl/ir_rvalue_visitor.cpp | 2 -- src/compiler/glsl/loop_analysis.cpp | 3 +-- src/compiler/glsl/loop_controls.cpp | 2 +- src/compiler/glsl/lower_distance.cpp | 2 +- .../lower_variable_index_to_cond_assign.cpp | 17 +-- .../glsl/lower_vec_index_to_cond_assign.cpp | 4 src/compiler/glsl/opt_array_splitting.cpp | 7 --- src/compiler/glsl/opt_constant_folding.cpp| 17 --- .../glsl/opt_constant_propagation.cpp | 3 --- src/compiler/glsl/opt_constant_variable.cpp | 3 --- src/compiler/glsl/opt_copy_propagation.cpp| 3 --- .../glsl/opt_copy_propagation_elements.cpp| 3 --- .../glsl/opt_dead_builtin_varyings.cpp| 1 - src/compiler/glsl/opt_dead_code_local.cpp | 21 +++ src/compiler/glsl/opt_structure_splitting.cpp | 7 ++- src/compiler/glsl/opt_tree_grafting.cpp | 3 +-- src/compiler/glsl/opt_vectorize.cpp | 3 +-- src/mesa/program/ir_to_mesa.cpp | 16 -- src/mesa/state_tracker/st_glsl_to_tgsi.cpp| 17 ++- 27 files changed, 26 insertions(+), 159 deletions(-) diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index 99df6e0..57b832f 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -1253,13 +1253,7 @@ nir_visitor::visit(ir_assignment *ir) copy->variables[0] = evaluate_deref(>instr, ir->lhs); copy->variables[1] = evaluate_deref(>instr, ir->rhs); - if (ir->condition) { - nir_push_if(, evaluate_rvalue(ir->condition)); - nir_builder_instr_insert(, >instr); - nir_pop_if(, NULL); - } else { - nir_builder_instr_insert(, >instr); - } + nir_builder_instr_insert(, >instr); return; } @@ -1290,13 +1284,7 @@ nir_visitor::visit(ir_assignment *ir) store->variables[0] = nir_deref_var_clone(lhs_deref, store); store->src[0] = nir_src_for_ssa(src); - if (ir->condition) { - nir_push_if(, evaluate_rvalue(ir->condition)); - nir_builder_instr_insert(, >instr); - nir_pop_if(, NULL); - } else { - nir_builder_instr_insert(, >instr); - } + nir_builder_instr_insert(, >instr); } /* diff --git a/src/compiler/glsl/ir.cpp b/src/compiler/glsl/ir.cpp index 4cf322d..52f9133 100644 --- a/src/compiler/glsl/ir.cpp +++ b/src/compiler/glsl/ir.cpp @@ -151,7 +151,7 @@ ir_assignment::whole_variable_written() ir_assignment::ir_assignment(ir_dereference *lhs, ir_rvalue *rhs, unsigned write_mask) : ir_instruction(ir_type_assignment), lhs(lhs), rhs(rhs), - condition(NULL), write_mask(write_mask) + write_mask(write_mask) { if (lhs->type->is_scalar() || lhs->type->is_vector()) { int lhs_components = 0; @@ -165,8 +165,7 @@ ir_assignment::ir_assignment(ir_dereference *lhs, ir_rvalue *rhs, } ir_assignment::ir_assignment(ir_rvalue *lhs, ir_rvalue *rhs) - : ir_instruction(ir_type_assignment), lhs(NULL), rhs(rhs), - condition(NULL), write_mask(0) + : ir_instruction(ir_type_assignment), lhs(NULL), rhs(rhs), write_mask(0) { /* If the RHS is a vector type, assume that all components of the vector * type are being written to the LHS. The write mask comes from the RHS diff --git a/src/compiler/glsl/ir.h b/src/compiler/glsl/ir.h index 28a356a..d7f8630 100644 --- a/src/compiler/glsl/ir.h +++ b/src/compiler/glsl/ir.h @@ -1475,12 +1475,6 @@ public: ir_rvalue *rhs; /** -* Optional condition for the assignment. -*/ - ir_rvalue *condition; - - - /** * Component mask written * * For non-vector types in the LHS, this field will be zero. For vector diff --git a/src/compiler/glsl/ir_builder_print_visitor.cpp b/src/compiler/glsl/ir_builder_print_visitor.cpp index 3e30c5d..1f29562 100644 --- a/src/compiler/glsl/ir_builder_print_visitor.cpp +++ b/src/compiler/glsl/ir_builder_print_visitor.cpp @@ -503,8 +503,6 @@ ir_builder_print_visitor::visit_enter(ir_assignment *ir) if (s != visit_continue) return (s == visit_continue_with_parent) ? visit_continue : s; - assert(ir->condition == NULL); - const struct hash_entry *const he_lhs = _mesa_hash_table_search(index_map, ir->lhs); @@ -525,8 +523,6 @@