gallivm: handle sub-32 bit masked stores.

This is used for register stores < 32 bit size.

Fixes:
builtin-char-rotate-1.0.generated.cl

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7309>
This commit is contained in:
Dave Airlie 2020-10-08 14:32:33 +10:00
parent 81d8ca70eb
commit 4b6d332843
2 changed files with 5 additions and 5 deletions

View File

@ -62,7 +62,6 @@ program/execute/builtin/builtin-char-mul_hi-1.0.generated/mul_hi char2: fail
program/execute/builtin/builtin-char-mul_hi-1.0.generated/mul_hi char4: fail
program/execute/builtin/builtin-char-mul_hi-1.0.generated/mul_hi char8: fail
program/execute/builtin/builtin-char-popcount-1.2.generated: skip
program/execute/builtin/builtin-char-rotate-1.0.generated: crash
program/execute/builtin/builtin-float-cos-1.0.generated: timeout
program/execute/builtin/builtin-float-fmax-1.0.generated/fmax float1: fail
program/execute/builtin/builtin-float-fmax-1.0.generated/fmax float16: fail
@ -140,7 +139,6 @@ program/execute/builtin/builtin-uchar-mul_hi-1.0.generated/mul_hi uchar2: fail
program/execute/builtin/builtin-uchar-mul_hi-1.0.generated/mul_hi uchar4: fail
program/execute/builtin/builtin-uchar-mul_hi-1.0.generated/mul_hi uchar8: fail
program/execute/builtin/builtin-uchar-popcount-1.2.generated: skip
program/execute/builtin/builtin-uchar-rotate-1.0.generated: crash
program/execute/builtin/builtin-uint-popcount-1.2.generated: skip
program/execute/builtin/builtin-ulong-mad_hi-1.0.generated/mad_hi ulong1: fail
program/execute/builtin/builtin-ulong-mad_hi-1.0.generated/mad_hi ulong16: fail
@ -193,9 +191,9 @@ program/execute/vstore/vstore-half-private: skip
summary:
name: results
---- --------
pass: 3654
pass: 3672
fail: 107
crash: 8
crash: 6
skip: 73
timeout: 4
warn: 0
@ -205,4 +203,4 @@ summary:
changes: 0
fixes: 0
regressions: 0
total: 3846
total: 3862

View File

@ -216,6 +216,8 @@ void lp_exec_mask_store(struct lp_exec_mask *mask,
LLVMValueRef res, dst;
dst = LLVMBuildLoad(builder, dst_ptr, "");
if (bld_store->type.width < 32)
exec_mask = LLVMBuildTrunc(builder, exec_mask, bld_store->vec_type, "");
res = lp_build_select(bld_store, exec_mask, val, dst);
LLVMBuildStore(builder, res, dst_ptr);
} else