pan/bi: Add bi_is_intr_immediate helper
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Wed, 9 Dec 2020 13:58:57 +0000 (08:58 -0500)
committerMarge Bot <eric+marge@anholt.net>
Thu, 31 Dec 2020 14:39:01 +0000 (14:39 +0000)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8135>

src/panfrost/bifrost/bifrost_compile.c

index 769bbd9..f96bfc7 100644 (file)
@@ -174,6 +174,21 @@ bi_interp_for_intrinsic(nir_intrinsic_op op)
         }
 }
 
+/* Checks if the _IMM variant of an intrinsic can be used, returning in imm the
+ * immediate to be used (which applies even if _IMM can't be used) */
+
+static bool
+bi_is_intr_immediate(nir_intrinsic_instr *instr, unsigned *immediate)
+{
+        nir_src *offset = nir_get_io_offset_src(instr);
+
+        if (!nir_src_is_const(*offset))
+                return false;
+
+        *immediate = nir_intrinsic_base(instr) + nir_src_as_uint(*offset);
+        return (*immediate) < 20;
+}
+
 static void
 bi_emit_ld_vary(bi_context *ctx, nir_intrinsic_instr *instr)
 {