From 58d5ab98a3fde7dfafc2d48e91bf29a604e04b3b Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 8 Nov 2019 12:44:39 +0100 Subject: [PATCH] ac: add 8-bit and 16-bit supports to ac_build_shuffle() Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen --- src/amd/llvm/ac_llvm_build.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/amd/llvm/ac_llvm_build.c b/src/amd/llvm/ac_llvm_build.c index 8137713d086..f2349018dee 100644 --- a/src/amd/llvm/ac_llvm_build.c +++ b/src/amd/llvm/ac_llvm_build.c @@ -4320,12 +4320,17 @@ ac_build_quad_swizzle(struct ac_llvm_context *ctx, LLVMValueRef src, LLVMValueRef ac_build_shuffle(struct ac_llvm_context *ctx, LLVMValueRef src, LLVMValueRef index) { + LLVMTypeRef type = LLVMTypeOf(src); + LLVMValueRef result; + index = LLVMBuildMul(ctx->builder, index, LLVMConstInt(ctx->i32, 4, 0), ""); - return ac_build_intrinsic(ctx, - "llvm.amdgcn.ds.bpermute", ctx->i32, - (LLVMValueRef []) {index, src}, 2, - AC_FUNC_ATTR_READNONE | - AC_FUNC_ATTR_CONVERGENT); + src = LLVMBuildZExt(ctx->builder, src, ctx->i32, ""); + + result = ac_build_intrinsic(ctx, "llvm.amdgcn.ds.bpermute", ctx->i32, + (LLVMValueRef []) {index, src}, 2, + AC_FUNC_ATTR_READNONE | + AC_FUNC_ATTR_CONVERGENT); + return LLVMBuildTrunc(ctx->builder, result, type, ""); } LLVMValueRef -- 2.30.2