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

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


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

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

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

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, 13 insertions(+), 2 deletions(-)

diff --git a/src/amd/llvm/ac_llvm_build.c b/src/amd/llvm/ac_llvm_build.c
index b397f3461de..d97dd36480a 100644
--- a/src/amd/llvm/ac_llvm_build.c
+++ b/src/amd/llvm/ac_llvm_build.c
@@ -432,11 +432,19 @@ ac_build_optimization_barrier(struct ac_llvm_context *ctx,
 	} else {
 		LLVMTypeRef ftype = LLVMFunctionType(ctx->i32, &ctx->i32, 1, false);
 		LLVMValueRef inlineasm = LLVMConstInlineAsm(ftype, code, "=v,0", true, false);
+		LLVMTypeRef type = LLVMTypeOf(*pvgpr);
+		unsigned bitsize = ac_get_elem_bits(ctx, type);
 		LLVMValueRef vgpr = *pvgpr;
-		LLVMTypeRef vgpr_type = LLVMTypeOf(vgpr);
-		unsigned vgpr_size = ac_get_type_size(vgpr_type);
+		LLVMTypeRef vgpr_type;
+		unsigned vgpr_size;
 		LLVMValueRef vgpr0;
 
+		if (bitsize < 32)
+			vgpr = LLVMBuildZExt(ctx->builder, vgpr, ctx->i32, "");
+
+		vgpr_type = LLVMTypeOf(vgpr);
+		vgpr_size = ac_get_type_size(vgpr_type);
+
 		assert(vgpr_size % 4 == 0);
 
 		vgpr = LLVMBuildBitCast(builder, vgpr, LLVMVectorType(ctx->i32, vgpr_size / 4), "");
@@ -445,6 +453,9 @@ ac_build_optimization_barrier(struct ac_llvm_context *ctx,
 		vgpr = LLVMBuildInsertElement(builder, vgpr, vgpr0, ctx->i32_0, "");
 		vgpr = LLVMBuildBitCast(builder, vgpr, vgpr_type, "");
 
+		if (bitsize < 32)
+			vgpr = LLVMBuildTrunc(builder, vgpr, type, "");
+
 		*pvgpr = vgpr;
 	}
 }




More information about the mesa-commit mailing list