gallivvm/nir: handle non-32bit mask scatter stores
authorDave Airlie <airlied@redhat.com>
Thu, 22 Jul 2021 04:08:31 +0000 (14:08 +1000)
committerMarge Bot <eric+marge@anholt.net>
Thu, 16 Sep 2021 04:15:41 +0000 (04:15 +0000)
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11816>

src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c

index 5874e76..a861f07 100644 (file)
@@ -300,7 +300,8 @@ emit_mask_scatter(struct lp_build_nir_soa_context *bld,
       if (scalar_pred) {
          LLVMValueRef real_val, dst_val;
          dst_val = LLVMBuildLoad(builder, scalar_ptr, "");
-         real_val = lp_build_select(&bld->uint_elem_bld, scalar_pred, val, dst_val);
+         scalar_pred = LLVMBuildTrunc(builder, scalar_pred, LLVMInt1TypeInContext(gallivm->context), "");
+         real_val = LLVMBuildSelect(builder, scalar_pred, val, dst_val, "");
          LLVMBuildStore(builder, real_val, scalar_ptr);
       }
       else {