Mesa (master): ac: add 8-bit and 16-bit supports to ac_build_shuffle()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Nov 19 18:01:47 UTC 2019


Module: Mesa
Branch: master
Commit: 58d5ab98a3fde7dfafc2d48e91bf29a604e04b3b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=58d5ab98a3fde7dfafc2d48e91bf29a604e04b3b

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Fri Nov  8 12:44:39 2019 +0100

ac: add 8-bit and 16-bit supports to ac_build_shuffle()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 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




More information about the mesa-commit mailing list