Re: [Mesa-dev] [PATCH 19/22] glsl: Kill ir_assignment::condition with fire

2017-09-21 Thread Ian Romanick
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

2017-09-21 Thread Ian Romanick
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 @@