Mesa (master): nir/algebraic: Loosen a restriction on variables

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Oct 22 21:00:28 UTC 2018


Module: Mesa
Branch: master
Commit: 932c650e0b1b3a0845f138c216ae1f235bdfa070
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=932c650e0b1b3a0845f138c216ae1f235bdfa070

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Fri Oct 19 14:31:19 2018 -0500

nir/algebraic: Loosen a restriction on variables

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.

Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>

---

 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 34ea2ba9e6..bcefa3372b 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
 




More information about the mesa-commit mailing list