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

Author: Rhys Perry <[email protected]>
Date:   Wed Nov 27 16:49:33 2019 +0000

ac/llvm: fix pointer type for global atomics

Signed-off-by: Rhys Perry <[email protected]>
Reviewed-by: Samuel Pitoiset <[email protected]>

---

 src/amd/llvm/ac_nir_to_llvm.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c
index db3ed1436b7..ddf9f09fe0c 100644
--- a/src/amd/llvm/ac_nir_to_llvm.c
+++ b/src/amd/llvm/ac_nir_to_llvm.c
@@ -3022,6 +3022,12 @@ 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) {
+               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 ||
            instr->intrinsic == nir_intrinsic_deref_atomic_comp_swap) {
                LLVMValueRef src1 = get_src(ctx, instr->src[src_idx + 1]);

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to