[Mesa-dev] [PATCH 2.1/3?] squash! nir_algebraic.py: don't store a dictionary of indexes

Kenneth Graunke kenneth at whitecape.org
Wed Feb 11 12:04:57 PST 2015


Since condition_list is an ordered list, we can just use enumerate()
when walking through it to get (index, value) pairs, rather than storing
a second dictionary mapping items to their indices.  When looking for an
existing entry, use list.index() to get the index of that item.
---
 src/glsl/nir/nir_algebraic.py | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

Here's my review feedback for this patch.  I haven't tested it, but it does
compile at least.  With this squashed in, patches 1-2 of the miniseries are

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

diff --git a/src/glsl/nir/nir_algebraic.py b/src/glsl/nir/nir_algebraic.py
index 9c5a906..1acf1ce 100644
--- a/src/glsl/nir/nir_algebraic.py
+++ b/src/glsl/nir/nir_algebraic.py
@@ -128,7 +128,6 @@ class Expression(Value):
 
 _optimization_ids = itertools.count()
 
-condition_index_map = {'true' : 0}
 condition_list = ['true']
 
 class SearchAndReplace(object):
@@ -142,12 +141,9 @@ class SearchAndReplace(object):
       else:
          self.condition = 'true'
 
-      if self.condition in condition_index_map:
-         self.condition_index = condition_index_map[self.condition]
-      else:
-         self.condition_index = len(condition_list)
+      if self.condition not in condition_list:
          condition_list.append(self.condition)
-         condition_index_map[self.condition] = self.condition_index
+      self.condition_index = condition_list.index(self.condition)
 
       varset = VarSet()
       if isinstance(search, Expression):
@@ -250,8 +246,8 @@ ${pass_name}(nir_shader *shader)
    bool condition_flags[${len(condition_list)}];
    const nir_shader_compiler_options *options = shader->options;
 
-   % for condition in condition_list:
-   condition_flags[${condition_index_map[condition]}] = ${condition};
+   % for index, condition in enumerate(condition_list):
+   condition_flags[${index}] = ${condition};
    % endfor
 
    nir_foreach_overload(shader, overload) {
@@ -280,5 +276,4 @@ class AlgebraicPass(object):
    def render(self):
       return _algebraic_pass_template.render(pass_name=self.pass_name,
                                              xform_dict=self.xform_dict,
-                                             condition_list=condition_list,
-                                             condition_index_map=condition_index_map)
+                                             condition_list=condition_list)
-- 
2.2.2



More information about the mesa-dev mailing list