R600: Add support for local memory atomic add
[oota-llvm.git] / test / CodeGen / R600 / atomic_load_add.ll
1 ; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s --check-prefix=R600-CHECK
2 ; RUN: llc < %s -march=r600 -mcpu=SI | FileCheck %s --check-prefix=SI-CHECK
3
4 ; R600-CHECK-LABEL: @atomic_add_local
5 ; R600-CHECK: LDS_ADD *
6 ; SI-CHECK-LABEL: @atomic_add_local
7 ; SI-CHECK: DS_ADD_U32_RTN 0
8 define void @atomic_add_local(i32 addrspace(3)* %local) {
9 entry:
10    %0 = atomicrmw volatile add i32 addrspace(3)* %local, i32 5 seq_cst
11    ret void
12 }
13
14 ; R600-CHECK-LABEL: @atomic_add_ret_local
15 ; R600-CHECK: LDS_ADD_RET *
16 ; SI-CHECK-LABEL: @atomic_add_ret_local
17 ; SI-CHECK: DS_ADD_U32_RTN 0
18 define void @atomic_add_ret_local(i32 addrspace(1)* %out, i32 addrspace(3)* %local) {
19 entry:
20   %0 = atomicrmw volatile add i32 addrspace(3)* %local, i32 5 seq_cst
21   store i32 %0, i32 addrspace(1)* %out
22   ret void
23 }