From 252b5d5ecdbb04b02beb40328acd4d0b7198c92f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Fri, 19 Feb 2021 17:30:08 +0100 Subject: [PATCH] ac/llvm: Make shared loads/stores work correctly for non-CS stages. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Timur Kristóf Reviewed-by: Marek Olšák Part-of: --- src/amd/llvm/ac_nir_to_llvm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index f5a2624876f..64b521da066 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -83,7 +83,11 @@ static LLVMValueRef get_src(struct ac_nir_context *nir, nir_src src) static LLVMValueRef get_memory_ptr(struct ac_nir_context *ctx, nir_src src, unsigned bit_size) { LLVMValueRef ptr = get_src(ctx, src); - ptr = LLVMBuildGEP(ctx->ac.builder, ctx->ac.lds, &ptr, 1, ""); + LLVMValueRef lds_i8 = ctx->ac.lds; + if (ctx->stage != MESA_SHADER_COMPUTE) + lds_i8 = LLVMBuildBitCast(ctx->ac.builder, ctx->ac.lds, LLVMPointerType(ctx->ac.i8, AC_ADDR_SPACE_LDS), ""); + + ptr = LLVMBuildGEP(ctx->ac.builder, lds_i8, &ptr, 1, ""); int addr_space = LLVMGetPointerAddressSpace(LLVMTypeOf(ptr)); LLVMTypeRef type = LLVMIntTypeInContext(ctx->ac.context, bit_size);