ac/llvm: use soffset correctly in ac_build_buffer_load
Reviewed-by: Mihai Preda <mhpreda@gmail.com> Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15966>
This commit is contained in:
parent
f68aeaa2c2
commit
e3421ae8ff
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue