summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2019-11-08 14:15:59 +0100
committerSamuel Pitoiset <[email protected]>2019-11-19 18:01:13 +0000
commit2113867f0cfcd5b6a32e1a3b3091f5aa0ea46f17 (patch)
tree314b5daec96cff2b963d09e6c85080273895542f
parentc29514bd226028631b12ae92529d862f8b5de707 (diff)
ac: add 8-bit and 16-bit supports to ac_build_set_inactive()
Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
-rw-r--r--src/amd/llvm/ac_llvm_build.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/amd/llvm/ac_llvm_build.c b/src/amd/llvm/ac_llvm_build.c
index 13c093fb3e6..fdf66c9f52b 100644
--- a/src/amd/llvm/ac_llvm_build.c
+++ b/src/amd/llvm/ac_llvm_build.c
@@ -3864,8 +3864,15 @@ ac_build_set_inactive(struct ac_llvm_context *ctx, LLVMValueRef src,
{
char name[33], type[8];
LLVMTypeRef src_type = LLVMTypeOf(src);
+ unsigned bitsize = ac_get_elem_bits(ctx, src_type);
src = ac_to_integer(ctx, src);
inactive = ac_to_integer(ctx, inactive);
+
+ if (bitsize < 32) {
+ src = LLVMBuildZExt(ctx->builder, src, ctx->i32, "");
+ inactive = LLVMBuildZExt(ctx->builder, inactive, ctx->i32, "");
+ }
+
ac_build_type_name_for_intr(LLVMTypeOf(src), type, sizeof(type));
snprintf(name, sizeof(name), "llvm.amdgcn.set.inactive.%s", type);
LLVMValueRef ret =
@@ -3874,6 +3881,8 @@ ac_build_set_inactive(struct ac_llvm_context *ctx, LLVMValueRef src,
src, inactive }, 2,
AC_FUNC_ATTR_READNONE |
AC_FUNC_ATTR_CONVERGENT);
+ if (bitsize < 32)
+ ret = LLVMBuildTrunc(ctx->builder, ret, src_type, "");
return ret;
}