Signed-off-by: Rhys Perry <pendingchao...@gmail.com> --- src/amd/common/ac_llvm_build.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c index f394d16bc9..6266058b77 100644 --- a/src/amd/common/ac_llvm_build.c +++ b/src/amd/common/ac_llvm_build.c @@ -3149,9 +3149,15 @@ ac_build_readlane(struct ac_llvm_context *ctx, LLVMValueRef src, LLVMValueRef la { LLVMTypeRef src_type = LLVMTypeOf(src); src = ac_to_integer(ctx, src); - unsigned bits = LLVMGetIntTypeWidth(LLVMTypeOf(src)); + unsigned src_bits = LLVMGetIntTypeWidth(LLVMTypeOf(src)); + unsigned bits = src_bits; LLVMValueRef ret; + if (bits < 32) { + src = LLVMBuildZExt(ctx->builder, src, ctx->i32, ""); + bits = 32; + } + if (bits == 32) { ret = _ac_build_readlane(ctx, src, lane); } else { @@ -3168,6 +3174,10 @@ ac_build_readlane(struct ac_llvm_context *ctx, LLVMValueRef src, LLVMValueRef la LLVMConstInt(ctx->i32, i, 0), ""); } } + + if (src_bits < 32) + ret = LLVMBuildTrunc(ctx->builder, ret, ac_int_of_size(ctx, src_bits), ""); + return LLVMBuildBitCast(ctx->builder, ret, src_type, ""); } -- 2.19.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev