nir: Support algebraic opts on vectors larger than 4
authorJesse Natalie <jenatali@microsoft.com>
Mon, 22 Jun 2020 18:49:41 +0000 (11:49 -0700)
committerJesse Natalie <jenatali@microsoft.com>
Fri, 24 Jul 2020 01:23:17 +0000 (18:23 -0700)
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6030>

src/compiler/nir/nir_algebraic.py

index 2112854570daa7f5d309749299c5014b45f15366..6871af36ef8f06ace44749b0bbd63ad2d9ea67f2 100644 (file)
@@ -348,9 +348,13 @@ class Variable(Value):
 
    def swizzle(self):
       if self.swiz is not None:
 
    def swizzle(self):
       if self.swiz is not None:
-         swizzles = {'x' : 0, 'y' : 1, 'z' : 2, 'w': 3}
+         swizzles = {'x' : 0, 'y' : 1, 'z' : 2, 'w' : 3,
+                     'a' : 0, 'b' : 1, 'c' : 2, 'd' : 3,
+                     'e' : 4, 'f' : 5, 'g' : 6, 'h' : 7,
+                     'i' : 8, 'j' : 9, 'k' : 10, 'l' : 11,
+                     'm' : 12, 'n' : 13, 'o' : 14, 'p' : 15 }
          return '{' + ', '.join([str(swizzles[c]) for c in self.swiz[1:]]) + '}'
          return '{' + ', '.join([str(swizzles[c]) for c in self.swiz[1:]]) + '}'
-      return '{0, 1, 2, 3}'
+      return '{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}'
 
 _opcode_re = re.compile(r"(?P<inexact>~)?(?P<exact>!)?(?P<opcode>\w+)(?:@(?P<bits>\d+))?"
                         r"(?P<cond>\([^\)]+\))?")
 
 _opcode_re = re.compile(r"(?P<inexact>~)?(?P<exact>!)?(?P<opcode>\w+)(?:@(?P<bits>\d+))?"
                         r"(?P<cond>\([^\)]+\))?")