nir: validate that store_buffer_amd doesn't use a non-trivial writemask
authorMarek Olšák <marek.olsak@amd.com>
Wed, 7 Dec 2022 09:29:59 +0000 (04:29 -0500)
committerMarge Bot <emma+marge@anholt.net>
Tue, 13 Dec 2022 20:33:05 +0000 (20:33 +0000)
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19422>

src/compiler/nir/nir_validate.c

index 166dca8..4ff7297 100644 (file)
@@ -787,6 +787,17 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state)
       break;
    }
 
+   case nir_intrinsic_store_buffer_amd:
+      if (nir_intrinsic_access(instr) & ACCESS_USES_FORMAT_AMD) {
+         unsigned writemask = nir_intrinsic_write_mask(instr);
+
+         /* Make sure the writemask is derived from the component count. */
+         validate_assert(state,
+                         writemask ==
+                         BITFIELD_MASK(nir_src_num_components(instr->src[0])));
+      }
+      break;
+
    default:
       break;
    }