comparison llvm/test/CodeGen/AMDGPU/atomic_store_local.ll @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children c4bab56944e8
comparison
equal deleted inserted replaced
147:c2174574ed3a 150:1d019706d866
1 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,CI %s
2 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,GFX9 %s
3
4 ; GCN-LABEL: {{^}}atomic_store_monotonic_i32:
5 ; GCN: s_waitcnt
6 ; GFX9-NOT: s_mov_b32 m0
7 ; CI-NEXT: s_mov_b32 m0
8 ; GCN-NEXT: ds_write_b32 v0, v1{{$}}
9 ; GCN-NEXT: s_waitcnt lgkmcnt(0)
10 ; GCN-NEXT: s_setpc_b64
11 define void @atomic_store_monotonic_i32(i32 addrspace(3)* %ptr, i32 %val) {
12 store atomic i32 %val, i32 addrspace(3)* %ptr monotonic, align 4
13 ret void
14 }
15
16 ; GCN-LABEL: {{^}}atomic_store_monotonic_offset_i32:
17 ; GCN: s_waitcnt
18 ; GFX9-NOT: s_mov_b32 m0
19 ; CI-NEXT: s_mov_b32 m0
20 ; GCN-NEXT: ds_write_b32 v0, v1 offset:64{{$}}
21 ; GCN-NEXT: s_waitcnt lgkmcnt(0)
22 ; GCN-NEXT: s_setpc_b64
23 define void @atomic_store_monotonic_offset_i32(i32 addrspace(3)* %ptr, i32 %val) {
24 %gep = getelementptr inbounds i32, i32 addrspace(3)* %ptr, i32 16
25 store atomic i32 %val, i32 addrspace(3)* %gep monotonic, align 4
26 ret void
27 }
28
29 ; GCN-LABEL: {{^}}atomic_store_monotonic_i64:
30 ; GCN: s_waitcnt
31 ; GFX9-NOT: s_mov_b32 m0
32 ; CI-NEXT: s_mov_b32 m0
33 ; GCN-NEXT: ds_write_b64 v0, v[1:2]{{$}}
34 ; GCN-NEXT: s_waitcnt lgkmcnt(0)
35 ; GCN-NEXT: s_setpc_b64
36 define void @atomic_store_monotonic_i64(i64 addrspace(3)* %ptr, i64 %val) {
37 store atomic i64 %val, i64 addrspace(3)* %ptr monotonic, align 8
38 ret void
39 }
40
41 ; GCN-LABEL: {{^}}atomic_store_monotonic_offset_i64:
42 ; GCN: s_waitcnt
43 ; GFX9-NOT: s_mov_b32 m0
44 ; CI-NEXT: s_mov_b32 m0
45 ; GCN-NEXT: ds_write_b64 v0, v[1:2] offset:128{{$}}
46 ; GCN-NEXT: s_waitcnt lgkmcnt(0)
47 ; GCN-NEXT: s_setpc_b64
48 define void @atomic_store_monotonic_offset_i64(i64 addrspace(3)* %ptr, i64 %val) {
49 %gep = getelementptr inbounds i64, i64 addrspace(3)* %ptr, i64 16
50 store atomic i64 %val, i64 addrspace(3)* %gep monotonic, align 8
51 ret void
52 }
53