From fe524d59023559524702d05fbb72d0cca1786039 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Wed, 18 Feb 2015 02:04:35 +0000 Subject: [PATCH] R600/SI: Add missing soffset operand to global atomics git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229604 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/R600/SIInstrInfo.td | 4 ++-- test/CodeGen/R600/mubuf.ll | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/Target/R600/SIInstrInfo.td b/lib/Target/R600/SIInstrInfo.td index 4082b570c41..966ce894699 100644 --- a/lib/Target/R600/SIInstrInfo.td +++ b/lib/Target/R600/SIInstrInfo.td @@ -1780,8 +1780,8 @@ multiclass MUBUF_Atomic ; defm _OFFSET : MUBUFAtomicOffset_m < diff --git a/test/CodeGen/R600/mubuf.ll b/test/CodeGen/R600/mubuf.ll index e43c83d0b40..988e5c128e5 100644 --- a/test/CodeGen/R600/mubuf.ll +++ b/test/CodeGen/R600/mubuf.ll @@ -158,6 +158,15 @@ define void @store_sgpr_ptr_large_offset(i32 addrspace(1)* %out) #0 { ret void } +; CHECK-LABEL: {{^}}store_sgpr_ptr_large_offset_atomic: +; CHECK: s_mov_b32 [[SOFFSET:s[0-9]+]], 0x20000 +; CHECK: buffer_atomic_add v{{[0-9]+}}, s{{\[[0-9]+:[0-9]+\]}}, [[SOFFSET]] +define void @store_sgpr_ptr_large_offset_atomic(i32 addrspace(1)* %out) #0 { + %gep = getelementptr i32 addrspace(1)* %out, i32 32768 + %val = atomicrmw volatile add i32 addrspace(1)* %gep, i32 5 seq_cst + ret void +} + ; CHECK-LABEL: {{^}}store_vgpr_ptr: ; CHECK: buffer_store_dword v{{[0-9]+}}, v{{\[[0-9]+:[0-9]+\]}}, s{{\[[0-9]+:[0-9]+\]}}, 0 addr64 define void @store_vgpr_ptr(i32 addrspace(1)* %out) #0 { -- 2.34.1