[Mesa-dev] [PATCH 5/6] nir/algebraic: Losten a restriction on variables

Jason Ekstrand jason at jlekstrand.net
Sat Oct 20 18:01:33 UTC 2018


Previously, we would fail if a variable had an assigned but unknown bit
size X and we tried to assign it an actual bit size.  However, this is
ok because, at the time we do the search, the variable does have an
actual bit size and it will match X because of the NIR rules.
---
 src/compiler/nir/nir_algebraic.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/compiler/nir/nir_algebraic.py b/src/compiler/nir/nir_algebraic.py
index 34ea2ba9e68..bcefa3372b3 100644
--- a/src/compiler/nir/nir_algebraic.py
+++ b/src/compiler/nir/nir_algebraic.py
@@ -352,8 +352,12 @@ class BitSizeValidator(object):
       if var_class == 0:
          self._var_classes[var.index] = bit_class
       else:
-         canon_class = self._class_relation.get_canonical(var_class)
-         assert canon_class < 0 or canon_class == bit_class
+         canon_bit_class = self._class_relation.get_canonical(var_class)
+         canon_var_class = self._class_relation.get_canonical(bit_class)
+         assert canon_var_class < 0 or canon_bit_class < 0 or \
+                canon_var_class == canon_bit_class, \
+                'Variable {0} cannot be both {1}-bit and {2}-bit' \
+                .format(str(var), bit_class, var_class)
          var_class = self._class_relation.add_equiv(var_class, bit_class)
          self._var_classes[var.index] = var_class
 
-- 
2.19.1



More information about the mesa-dev mailing list