intel/fs: handle ishl in surface/sampler rematerialization
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Fri, 8 Sep 2023 06:52:14 +0000 (09:52 +0300)
committerMarge Bot <emma+marge@anholt.net>
Fri, 29 Sep 2023 10:46:47 +0000 (10:46 +0000)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24554>

src/intel/compiler/brw_fs_nir.cpp

index 36b328e..1012121 100644 (file)
@@ -4082,6 +4082,16 @@ fs_visitor::try_rebuild_resource(const brw::fs_builder &bld, nir_def *resource_d
             nir_resource_insts[def->index] = ubld1.SHR(dst, src0, src1);
             break;
          }
+         case nir_op_ishl: {
+            fs_reg dst = ubld1.vgrf(BRW_REGISTER_TYPE_UD);
+            ubld1.UNDEF(dst);
+            fs_reg src0 = nir_resource_insts[alu->src[0].src.ssa->index]->dst;
+            fs_reg src1 = nir_resource_insts[alu->src[1].src.ssa->index]->dst;
+            assert(src0.file != BAD_FILE && src1.file != BAD_FILE);
+            assert(src0.type == BRW_REGISTER_TYPE_UD);
+            nir_resource_insts[def->index] = ubld1.SHL(dst, src0, src1);
+            break;
+         }
          case nir_op_mov: {
             break;
          }