Skip to content

Commit 18fc7ab

Browse files
committed
fixup! [AMDGPU] Add llvm.amdgcn.raw.atomic.ptr.buffer.load
1 parent 88311cf commit 18fc7ab

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1092,8 +1092,9 @@ Value *SplitPtrStructs::handleMemoryInst(Instruction *I, Value *Arg, Value *Ptr,
10921092

10931093
Intrinsic::ID IID = Intrinsic::not_intrinsic;
10941094
if (isa<LoadInst>(I))
1095-
// TODO: Do we need to do something about atomic loads?
1096-
IID = Intrinsic::amdgcn_raw_ptr_buffer_load;
1095+
IID = Order == AtomicOrdering::NotAtomic
1096+
? Intrinsic::amdgcn_raw_ptr_buffer_load
1097+
: Intrinsic::amdgcn_raw_atomic_ptr_buffer_load;
10971098
else if (isa<StoreInst>(I))
10981099
IID = Intrinsic::amdgcn_raw_ptr_buffer_store;
10991100
else if (auto *RMW = dyn_cast<AtomicRMWInst>(I)) {

llvm/test/CodeGen/AMDGPU/lower-buffer-fat-pointers-memops.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ define void @loads(ptr addrspace(8) %buf) {
1717
; CHECK-NEXT: [[VOLATILE:%.*]] = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) align 4 [[BUF]], i32 16, i32 0, i32 -2147483648)
1818
; CHECK-NEXT: [[VOLATILE_NONTEMPORAL:%.*]] = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) align 4 [[BUF]], i32 16, i32 0, i32 -2147483646), !nontemporal [[META0]]
1919
; CHECK-NEXT: fence syncscope("wavefront") release
20-
; CHECK-NEXT: [[ATOMIC:%.*]] = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) align 4 [[BUF]], i32 16, i32 0, i32 -2147483647)
20+
; CHECK-NEXT: [[ATOMIC:%.*]] = call float @llvm.amdgcn.raw.atomic.ptr.buffer.load.f32(ptr addrspace(8) align 4 [[BUF]], i32 16, i32 0, i32 -2147483647)
2121
; CHECK-NEXT: fence syncscope("wavefront") acquire
22-
; CHECK-NEXT: [[ATOMIC_MONOTONIC:%.*]] = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) align 4 [[BUF]], i32 16, i32 0, i32 1)
23-
; CHECK-NEXT: [[ATOMIC_ACQUIRE:%.*]] = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) align 4 [[BUF]], i32 16, i32 0, i32 1)
22+
; CHECK-NEXT: [[ATOMIC_MONOTONIC:%.*]] = call float @llvm.amdgcn.raw.atomic.ptr.buffer.load.f32(ptr addrspace(8) align 4 [[BUF]], i32 16, i32 0, i32 1)
23+
; CHECK-NEXT: [[ATOMIC_ACQUIRE:%.*]] = call float @llvm.amdgcn.raw.atomic.ptr.buffer.load.f32(ptr addrspace(8) align 4 [[BUF]], i32 16, i32 0, i32 1)
2424
; CHECK-NEXT: fence acquire
2525
; CHECK-NEXT: ret void
2626
;

0 commit comments

Comments
 (0)