From e3421ae8ff0f5377fe46cfbe244cd571148c24df Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 15 Apr 2022 01:18:44 -0400 Subject: [PATCH] ac/llvm: use soffset correctly in ac_build_buffer_load Reviewed-by: Mihai Preda Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/amd/llvm/ac_llvm_build.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/amd/llvm/ac_llvm_build.c b/src/amd/llvm/ac_llvm_build.c index e892193..d214fa5 100644 --- a/src/amd/llvm/ac_llvm_build.c +++ b/src/amd/llvm/ac_llvm_build.c @@ -1239,8 +1239,6 @@ LLVMValueRef ac_build_buffer_load(struct ac_llvm_context *ctx, LLVMValueRef rsrc LLVMValueRef offset = LLVMConstInt(ctx->i32, inst_offset, 0); if (voffset) offset = LLVMBuildAdd(ctx->builder, offset, voffset, ""); - if (soffset) - offset = LLVMBuildAdd(ctx->builder, offset, soffset, ""); if (allow_smem && !(cache_policy & ac_slc) && (!(cache_policy & ac_glc) || ctx->chip_class >= GFX8)) { @@ -1248,6 +1246,9 @@ LLVMValueRef ac_build_buffer_load(struct ac_llvm_context *ctx, LLVMValueRef rsrc LLVMValueRef result[8]; + if (soffset) + offset = LLVMBuildAdd(ctx->builder, offset, soffset, ""); + for (int i = 0; i < num_channels; i++) { if (i) { offset = LLVMBuildAdd(ctx->builder, offset, LLVMConstInt(ctx->i32, 4, 0), ""); @@ -1268,7 +1269,7 @@ LLVMValueRef ac_build_buffer_load(struct ac_llvm_context *ctx, LLVMValueRef rsrc return ac_build_gather_values(ctx, result, num_channels); } - return ac_build_buffer_load_common(ctx, rsrc, vindex, offset, ctx->i32_0, num_channels, + return ac_build_buffer_load_common(ctx, rsrc, vindex, offset, soffset, num_channels, channel_type, cache_policy, can_speculate, false, false); } -- 2.7.4