mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-23 22:40:34 +01:00
ac/llvm: fix atomic var operations if source isn't a deref
Fixes some CTS regressions.
Fixes: e61a826f39 ("ac/llvm: fix pointer type for global atomics")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
parent
dde734030b
commit
f63a3132e8
1 changed files with 8 additions and 6 deletions
|
|
@ -3022,13 +3022,15 @@ static LLVMValueRef visit_var_atomic(struct ac_nir_context *ctx,
|
|||
|
||||
const char *sync_scope = LLVM_VERSION_MAJOR >= 9 ? "workgroup-one-as" : "workgroup";
|
||||
|
||||
nir_deref_instr *deref = nir_instr_as_deref(instr->src[0].ssa->parent_instr);
|
||||
if (deref->mode == nir_var_mem_global) {
|
||||
/* use "singlethread" sync scope to implement relaxed ordering */
|
||||
sync_scope = LLVM_VERSION_MAJOR >= 9 ? "singlethread-one-as" : "singlethread";
|
||||
if (instr->src[0].ssa->parent_instr->type == nir_instr_type_deref) {
|
||||
nir_deref_instr *deref = nir_instr_as_deref(instr->src[0].ssa->parent_instr);
|
||||
if (deref->mode == nir_var_mem_global) {
|
||||
/* use "singlethread" sync scope to implement relaxed ordering */
|
||||
sync_scope = LLVM_VERSION_MAJOR >= 9 ? "singlethread-one-as" : "singlethread";
|
||||
|
||||
LLVMTypeRef ptr_type = LLVMPointerType(LLVMTypeOf(src), LLVMGetPointerAddressSpace(LLVMTypeOf(ptr)));
|
||||
ptr = LLVMBuildBitCast(ctx->ac.builder, ptr, ptr_type , "");
|
||||
LLVMTypeRef ptr_type = LLVMPointerType(LLVMTypeOf(src), LLVMGetPointerAddressSpace(LLVMTypeOf(ptr)));
|
||||
ptr = LLVMBuildBitCast(ctx->ac.builder, ptr, ptr_type , "");
|
||||
}
|
||||
}
|
||||
|
||||
if (instr->intrinsic == nir_intrinsic_shared_atomic_comp_swap ||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue