pan/midgard: Add mir_simple_swizzle helper
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Wed, 24 Jul 2019 03:02:06 +0000 (20:02 -0700)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Thu, 25 Jul 2019 13:37:21 +0000 (06:37 -0700)
Checks for x/xy/xyz/xyzw style swizzles (slightly more general but you
get the idea).

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/panfrost/midgard/helpers.h

index 7a0a9d845e401cb8b5bf83513ea88e99f765808c..81d10936201a46dce9751866d19174308663890a 100644 (file)
@@ -303,4 +303,19 @@ vector_alu_apply_swizzle(unsigned src, unsigned swizzle)
         return vector_alu_srco_unsigned(s);
 }
 
+/* Checks for an xyzw.. swizzle, given a mask */
+
+static inline bool
+mir_is_simple_swizzle(unsigned swizzle, unsigned mask)
+{
+        for (unsigned i = 0; i < 16; ++i) {
+                if (!(mask & (1 << i))) continue;
+
+                if (((swizzle >> (2 * i)) & 0x3) != i)
+                        return false;
+        }
+
+        return true;
+}
+
 #endif