Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / trap-abis.ll
blob03ea582698486cec408ceb31f63a5e098a510ab1
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: sed 's/CODE_OBJECT_VERSION/300/g' %s | llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs | FileCheck --check-prefix=NOHSA-TRAP-GFX900-V3 %s
3 ; RUN: sed 's/CODE_OBJECT_VERSION/400/g' %s | llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs | FileCheck --check-prefix=NOHSA-TRAP-GFX900-V4 %s
4 ; RUN: sed 's/CODE_OBJECT_VERSION/300/g' %s | llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -verify-machineinstrs | FileCheck --check-prefix=HSA-TRAP-GFX803-V3 %s
5 ; RUN: sed 's/CODE_OBJECT_VERSION/400/g' %s | llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -verify-machineinstrs | FileCheck --check-prefix=HSA-TRAP-GFX803-V4 %s
6 ; RUN: sed 's/CODE_OBJECT_VERSION/300/g' %s | llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs | FileCheck --check-prefix=HSA-TRAP-GFX900-V3 %s
7 ; RUN: sed 's/CODE_OBJECT_VERSION/400/g' %s | llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs | FileCheck --check-prefix=HSA-TRAP-GFX900-V4 %s
8 ; RUN: sed 's/CODE_OBJECT_VERSION/300/g' %s | llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -mattr=-trap-handler -verify-machineinstrs | FileCheck --check-prefix=HSA-NOTRAP-GFX900-V3 %s
9 ; RUN: sed 's/CODE_OBJECT_VERSION/400/g' %s | llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -mattr=-trap-handler -verify-machineinstrs | FileCheck --check-prefix=HSA-NOTRAP-GFX900-V4 %s
11 declare void @llvm.trap() #0
12 declare void @llvm.debugtrap() #1
14 define amdgpu_kernel void @trap(ptr addrspace(1) nocapture readonly %arg0) {
15 ; NOHSA-TRAP-GFX900-V3-LABEL: trap:
16 ; NOHSA-TRAP-GFX900-V3:       ; %bb.0:
17 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
18 ; NOHSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v0, 0
19 ; NOHSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v1, 1
20 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_waitcnt lgkmcnt(0)
21 ; NOHSA-TRAP-GFX900-V3-NEXT:    global_store_dword v0, v1, s[0:1]
22 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
23 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_endpgm
25 ; NOHSA-TRAP-GFX900-V4-LABEL: trap:
26 ; NOHSA-TRAP-GFX900-V4:       ; %bb.0:
27 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x24
28 ; NOHSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v0, 0
29 ; NOHSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v1, 1
30 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_waitcnt lgkmcnt(0)
31 ; NOHSA-TRAP-GFX900-V4-NEXT:    global_store_dword v0, v1, s[0:1]
32 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
33 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_endpgm
35 ; HSA-TRAP-GFX803-V3-LABEL: trap:
36 ; HSA-TRAP-GFX803-V3:       ; %bb.0:
37 ; HSA-TRAP-GFX803-V3-NEXT:    s_load_dwordx2 s[2:3], s[6:7], 0x0
38 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v2, 1
39 ; HSA-TRAP-GFX803-V3-NEXT:    s_mov_b64 s[0:1], s[4:5]
40 ; HSA-TRAP-GFX803-V3-NEXT:    s_waitcnt lgkmcnt(0)
41 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v0, s2
42 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v1, s3
43 ; HSA-TRAP-GFX803-V3-NEXT:    flat_store_dword v[0:1], v2
44 ; HSA-TRAP-GFX803-V3-NEXT:    s_waitcnt vmcnt(0)
45 ; HSA-TRAP-GFX803-V3-NEXT:    s_trap 2
47 ; HSA-TRAP-GFX803-V4-LABEL: trap:
48 ; HSA-TRAP-GFX803-V4:       ; %bb.0:
49 ; HSA-TRAP-GFX803-V4-NEXT:    s_load_dwordx2 s[2:3], s[6:7], 0x0
50 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v2, 1
51 ; HSA-TRAP-GFX803-V4-NEXT:    s_mov_b64 s[0:1], s[4:5]
52 ; HSA-TRAP-GFX803-V4-NEXT:    s_waitcnt lgkmcnt(0)
53 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v0, s2
54 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v1, s3
55 ; HSA-TRAP-GFX803-V4-NEXT:    flat_store_dword v[0:1], v2
56 ; HSA-TRAP-GFX803-V4-NEXT:    s_waitcnt vmcnt(0)
57 ; HSA-TRAP-GFX803-V4-NEXT:    s_trap 2
59 ; HSA-TRAP-GFX900-V3-LABEL: trap:
60 ; HSA-TRAP-GFX900-V3:       ; %bb.0:
61 ; HSA-TRAP-GFX900-V3-NEXT:    s_load_dwordx2 s[2:3], s[6:7], 0x0
62 ; HSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v0, 0
63 ; HSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v1, 1
64 ; HSA-TRAP-GFX900-V3-NEXT:    s_mov_b64 s[0:1], s[4:5]
65 ; HSA-TRAP-GFX900-V3-NEXT:    s_waitcnt lgkmcnt(0)
66 ; HSA-TRAP-GFX900-V3-NEXT:    global_store_dword v0, v1, s[2:3]
67 ; HSA-TRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
68 ; HSA-TRAP-GFX900-V3-NEXT:    s_trap 2
70 ; HSA-TRAP-GFX900-V4-LABEL: trap:
71 ; HSA-TRAP-GFX900-V4:       ; %bb.0:
72 ; HSA-TRAP-GFX900-V4-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
73 ; HSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v0, 0
74 ; HSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v1, 1
75 ; HSA-TRAP-GFX900-V4-NEXT:    s_waitcnt lgkmcnt(0)
76 ; HSA-TRAP-GFX900-V4-NEXT:    global_store_dword v0, v1, s[0:1]
77 ; HSA-TRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
78 ; HSA-TRAP-GFX900-V4-NEXT:    s_trap 2
80 ; HSA-NOTRAP-GFX900-V3-LABEL: trap:
81 ; HSA-NOTRAP-GFX900-V3:       ; %bb.0:
82 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_load_dwordx2 s[0:1], s[6:7], 0x0
83 ; HSA-NOTRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v0, 0
84 ; HSA-NOTRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v1, 1
85 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_waitcnt lgkmcnt(0)
86 ; HSA-NOTRAP-GFX900-V3-NEXT:    global_store_dword v0, v1, s[0:1]
87 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
88 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_endpgm
90 ; HSA-NOTRAP-GFX900-V4-LABEL: trap:
91 ; HSA-NOTRAP-GFX900-V4:       ; %bb.0:
92 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
93 ; HSA-NOTRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v0, 0
94 ; HSA-NOTRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v1, 1
95 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_waitcnt lgkmcnt(0)
96 ; HSA-NOTRAP-GFX900-V4-NEXT:    global_store_dword v0, v1, s[0:1]
97 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
98 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_endpgm
99   store volatile i32 1, ptr addrspace(1) %arg0
100   call void @llvm.trap()
101   unreachable
102   store volatile i32 2, ptr addrspace(1) %arg0
103   ret void
106 define amdgpu_kernel void @non_entry_trap(ptr addrspace(1) nocapture readonly %arg0) local_unnamed_addr {
107 ; NOHSA-TRAP-GFX900-V3-LABEL: non_entry_trap:
108 ; NOHSA-TRAP-GFX900-V3:       ; %bb.0: ; %entry
109 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
110 ; NOHSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v0, 0
111 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_waitcnt lgkmcnt(0)
112 ; NOHSA-TRAP-GFX900-V3-NEXT:    global_load_dword v1, v0, s[0:1] glc
113 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
114 ; NOHSA-TRAP-GFX900-V3-NEXT:    v_cmp_eq_u32_e32 vcc, -1, v1
115 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_cbranch_vccz .LBB1_2
116 ; NOHSA-TRAP-GFX900-V3-NEXT:  ; %bb.1: ; %ret
117 ; NOHSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v1, 3
118 ; NOHSA-TRAP-GFX900-V3-NEXT:    global_store_dword v0, v1, s[0:1]
119 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
120 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_endpgm
121 ; NOHSA-TRAP-GFX900-V3-NEXT:  .LBB1_2: ; %trap
122 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_endpgm
124 ; NOHSA-TRAP-GFX900-V4-LABEL: non_entry_trap:
125 ; NOHSA-TRAP-GFX900-V4:       ; %bb.0: ; %entry
126 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x24
127 ; NOHSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v0, 0
128 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_waitcnt lgkmcnt(0)
129 ; NOHSA-TRAP-GFX900-V4-NEXT:    global_load_dword v1, v0, s[0:1] glc
130 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
131 ; NOHSA-TRAP-GFX900-V4-NEXT:    v_cmp_eq_u32_e32 vcc, -1, v1
132 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_cbranch_vccz .LBB1_2
133 ; NOHSA-TRAP-GFX900-V4-NEXT:  ; %bb.1: ; %ret
134 ; NOHSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v1, 3
135 ; NOHSA-TRAP-GFX900-V4-NEXT:    global_store_dword v0, v1, s[0:1]
136 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
137 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_endpgm
138 ; NOHSA-TRAP-GFX900-V4-NEXT:  .LBB1_2: ; %trap
139 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_endpgm
141 ; HSA-TRAP-GFX803-V3-LABEL: non_entry_trap:
142 ; HSA-TRAP-GFX803-V3:       ; %bb.0: ; %entry
143 ; HSA-TRAP-GFX803-V3-NEXT:    s_load_dwordx2 s[0:1], s[6:7], 0x0
144 ; HSA-TRAP-GFX803-V3-NEXT:    s_waitcnt lgkmcnt(0)
145 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v0, s0
146 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v1, s1
147 ; HSA-TRAP-GFX803-V3-NEXT:    flat_load_dword v0, v[0:1] glc
148 ; HSA-TRAP-GFX803-V3-NEXT:    s_waitcnt vmcnt(0)
149 ; HSA-TRAP-GFX803-V3-NEXT:    v_cmp_eq_u32_e32 vcc, -1, v0
150 ; HSA-TRAP-GFX803-V3-NEXT:    s_cbranch_vccz .LBB1_2
151 ; HSA-TRAP-GFX803-V3-NEXT:  ; %bb.1: ; %ret
152 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v0, s0
153 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v2, 3
154 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v1, s1
155 ; HSA-TRAP-GFX803-V3-NEXT:    flat_store_dword v[0:1], v2
156 ; HSA-TRAP-GFX803-V3-NEXT:    s_waitcnt vmcnt(0)
157 ; HSA-TRAP-GFX803-V3-NEXT:    s_endpgm
158 ; HSA-TRAP-GFX803-V3-NEXT:  .LBB1_2: ; %trap
159 ; HSA-TRAP-GFX803-V3-NEXT:    s_mov_b64 s[0:1], s[4:5]
160 ; HSA-TRAP-GFX803-V3-NEXT:    s_trap 2
162 ; HSA-TRAP-GFX803-V4-LABEL: non_entry_trap:
163 ; HSA-TRAP-GFX803-V4:       ; %bb.0: ; %entry
164 ; HSA-TRAP-GFX803-V4-NEXT:    s_load_dwordx2 s[0:1], s[6:7], 0x0
165 ; HSA-TRAP-GFX803-V4-NEXT:    s_waitcnt lgkmcnt(0)
166 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v0, s0
167 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v1, s1
168 ; HSA-TRAP-GFX803-V4-NEXT:    flat_load_dword v0, v[0:1] glc
169 ; HSA-TRAP-GFX803-V4-NEXT:    s_waitcnt vmcnt(0)
170 ; HSA-TRAP-GFX803-V4-NEXT:    v_cmp_eq_u32_e32 vcc, -1, v0
171 ; HSA-TRAP-GFX803-V4-NEXT:    s_cbranch_vccz .LBB1_2
172 ; HSA-TRAP-GFX803-V4-NEXT:  ; %bb.1: ; %ret
173 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v0, s0
174 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v2, 3
175 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v1, s1
176 ; HSA-TRAP-GFX803-V4-NEXT:    flat_store_dword v[0:1], v2
177 ; HSA-TRAP-GFX803-V4-NEXT:    s_waitcnt vmcnt(0)
178 ; HSA-TRAP-GFX803-V4-NEXT:    s_endpgm
179 ; HSA-TRAP-GFX803-V4-NEXT:  .LBB1_2: ; %trap
180 ; HSA-TRAP-GFX803-V4-NEXT:    s_mov_b64 s[0:1], s[4:5]
181 ; HSA-TRAP-GFX803-V4-NEXT:    s_trap 2
183 ; HSA-TRAP-GFX900-V3-LABEL: non_entry_trap:
184 ; HSA-TRAP-GFX900-V3:       ; %bb.0: ; %entry
185 ; HSA-TRAP-GFX900-V3-NEXT:    s_load_dwordx2 s[0:1], s[6:7], 0x0
186 ; HSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v0, 0
187 ; HSA-TRAP-GFX900-V3-NEXT:    s_waitcnt lgkmcnt(0)
188 ; HSA-TRAP-GFX900-V3-NEXT:    global_load_dword v1, v0, s[0:1] glc
189 ; HSA-TRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
190 ; HSA-TRAP-GFX900-V3-NEXT:    v_cmp_eq_u32_e32 vcc, -1, v1
191 ; HSA-TRAP-GFX900-V3-NEXT:    s_cbranch_vccz .LBB1_2
192 ; HSA-TRAP-GFX900-V3-NEXT:  ; %bb.1: ; %ret
193 ; HSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v1, 3
194 ; HSA-TRAP-GFX900-V3-NEXT:    global_store_dword v0, v1, s[0:1]
195 ; HSA-TRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
196 ; HSA-TRAP-GFX900-V3-NEXT:    s_endpgm
197 ; HSA-TRAP-GFX900-V3-NEXT:  .LBB1_2: ; %trap
198 ; HSA-TRAP-GFX900-V3-NEXT:    s_mov_b64 s[0:1], s[4:5]
199 ; HSA-TRAP-GFX900-V3-NEXT:    s_trap 2
201 ; HSA-TRAP-GFX900-V4-LABEL: non_entry_trap:
202 ; HSA-TRAP-GFX900-V4:       ; %bb.0: ; %entry
203 ; HSA-TRAP-GFX900-V4-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
204 ; HSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v0, 0
205 ; HSA-TRAP-GFX900-V4-NEXT:    s_waitcnt lgkmcnt(0)
206 ; HSA-TRAP-GFX900-V4-NEXT:    global_load_dword v1, v0, s[0:1] glc
207 ; HSA-TRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
208 ; HSA-TRAP-GFX900-V4-NEXT:    v_cmp_eq_u32_e32 vcc, -1, v1
209 ; HSA-TRAP-GFX900-V4-NEXT:    s_cbranch_vccz .LBB1_2
210 ; HSA-TRAP-GFX900-V4-NEXT:  ; %bb.1: ; %ret
211 ; HSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v1, 3
212 ; HSA-TRAP-GFX900-V4-NEXT:    global_store_dword v0, v1, s[0:1]
213 ; HSA-TRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
214 ; HSA-TRAP-GFX900-V4-NEXT:    s_endpgm
215 ; HSA-TRAP-GFX900-V4-NEXT:  .LBB1_2: ; %trap
216 ; HSA-TRAP-GFX900-V4-NEXT:    s_trap 2
218 ; HSA-NOTRAP-GFX900-V3-LABEL: non_entry_trap:
219 ; HSA-NOTRAP-GFX900-V3:       ; %bb.0: ; %entry
220 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_load_dwordx2 s[0:1], s[6:7], 0x0
221 ; HSA-NOTRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v0, 0
222 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_waitcnt lgkmcnt(0)
223 ; HSA-NOTRAP-GFX900-V3-NEXT:    global_load_dword v1, v0, s[0:1] glc
224 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
225 ; HSA-NOTRAP-GFX900-V3-NEXT:    v_cmp_eq_u32_e32 vcc, -1, v1
226 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_cbranch_vccz .LBB1_2
227 ; HSA-NOTRAP-GFX900-V3-NEXT:  ; %bb.1: ; %ret
228 ; HSA-NOTRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v1, 3
229 ; HSA-NOTRAP-GFX900-V3-NEXT:    global_store_dword v0, v1, s[0:1]
230 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
231 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_endpgm
232 ; HSA-NOTRAP-GFX900-V3-NEXT:  .LBB1_2: ; %trap
233 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_endpgm
235 ; HSA-NOTRAP-GFX900-V4-LABEL: non_entry_trap:
236 ; HSA-NOTRAP-GFX900-V4:       ; %bb.0: ; %entry
237 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
238 ; HSA-NOTRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v0, 0
239 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_waitcnt lgkmcnt(0)
240 ; HSA-NOTRAP-GFX900-V4-NEXT:    global_load_dword v1, v0, s[0:1] glc
241 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
242 ; HSA-NOTRAP-GFX900-V4-NEXT:    v_cmp_eq_u32_e32 vcc, -1, v1
243 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_cbranch_vccz .LBB1_2
244 ; HSA-NOTRAP-GFX900-V4-NEXT:  ; %bb.1: ; %ret
245 ; HSA-NOTRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v1, 3
246 ; HSA-NOTRAP-GFX900-V4-NEXT:    global_store_dword v0, v1, s[0:1]
247 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
248 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_endpgm
249 ; HSA-NOTRAP-GFX900-V4-NEXT:  .LBB1_2: ; %trap
250 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_endpgm
251 entry:
252   %tmp29 = load volatile i32, ptr addrspace(1) %arg0
253   %cmp = icmp eq i32 %tmp29, -1
254   br i1 %cmp, label %ret, label %trap
256 trap:
257   call void @llvm.trap()
258   unreachable
260 ret:
261   store volatile i32 3, ptr addrspace(1) %arg0
262   ret void
265 define amdgpu_kernel void @debugtrap(ptr addrspace(1) nocapture readonly %arg0) {
266 ; NOHSA-TRAP-GFX900-V3-LABEL: debugtrap:
267 ; NOHSA-TRAP-GFX900-V3:       ; %bb.0:
268 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x24
269 ; NOHSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v0, 0
270 ; NOHSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v1, 1
271 ; NOHSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v2, 2
272 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_waitcnt lgkmcnt(0)
273 ; NOHSA-TRAP-GFX900-V3-NEXT:    global_store_dword v0, v1, s[0:1]
274 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
275 ; NOHSA-TRAP-GFX900-V3-NEXT:    global_store_dword v0, v2, s[0:1]
276 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
277 ; NOHSA-TRAP-GFX900-V3-NEXT:    s_endpgm
279 ; NOHSA-TRAP-GFX900-V4-LABEL: debugtrap:
280 ; NOHSA-TRAP-GFX900-V4:       ; %bb.0:
281 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x24
282 ; NOHSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v0, 0
283 ; NOHSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v1, 1
284 ; NOHSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v2, 2
285 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_waitcnt lgkmcnt(0)
286 ; NOHSA-TRAP-GFX900-V4-NEXT:    global_store_dword v0, v1, s[0:1]
287 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
288 ; NOHSA-TRAP-GFX900-V4-NEXT:    global_store_dword v0, v2, s[0:1]
289 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
290 ; NOHSA-TRAP-GFX900-V4-NEXT:    s_endpgm
292 ; HSA-TRAP-GFX803-V3-LABEL: debugtrap:
293 ; HSA-TRAP-GFX803-V3:       ; %bb.0:
294 ; HSA-TRAP-GFX803-V3-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
295 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v2, 1
296 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v3, 2
297 ; HSA-TRAP-GFX803-V3-NEXT:    s_waitcnt lgkmcnt(0)
298 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v0, s0
299 ; HSA-TRAP-GFX803-V3-NEXT:    v_mov_b32_e32 v1, s1
300 ; HSA-TRAP-GFX803-V3-NEXT:    flat_store_dword v[0:1], v2
301 ; HSA-TRAP-GFX803-V3-NEXT:    s_waitcnt vmcnt(0)
302 ; HSA-TRAP-GFX803-V3-NEXT:    s_trap 3
303 ; HSA-TRAP-GFX803-V3-NEXT:    flat_store_dword v[0:1], v3
304 ; HSA-TRAP-GFX803-V3-NEXT:    s_waitcnt vmcnt(0)
305 ; HSA-TRAP-GFX803-V3-NEXT:    s_endpgm
307 ; HSA-TRAP-GFX803-V4-LABEL: debugtrap:
308 ; HSA-TRAP-GFX803-V4:       ; %bb.0:
309 ; HSA-TRAP-GFX803-V4-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
310 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v2, 1
311 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v3, 2
312 ; HSA-TRAP-GFX803-V4-NEXT:    s_waitcnt lgkmcnt(0)
313 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v0, s0
314 ; HSA-TRAP-GFX803-V4-NEXT:    v_mov_b32_e32 v1, s1
315 ; HSA-TRAP-GFX803-V4-NEXT:    flat_store_dword v[0:1], v2
316 ; HSA-TRAP-GFX803-V4-NEXT:    s_waitcnt vmcnt(0)
317 ; HSA-TRAP-GFX803-V4-NEXT:    s_trap 3
318 ; HSA-TRAP-GFX803-V4-NEXT:    flat_store_dword v[0:1], v3
319 ; HSA-TRAP-GFX803-V4-NEXT:    s_waitcnt vmcnt(0)
320 ; HSA-TRAP-GFX803-V4-NEXT:    s_endpgm
322 ; HSA-TRAP-GFX900-V3-LABEL: debugtrap:
323 ; HSA-TRAP-GFX900-V3:       ; %bb.0:
324 ; HSA-TRAP-GFX900-V3-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
325 ; HSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v0, 0
326 ; HSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v1, 1
327 ; HSA-TRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v2, 2
328 ; HSA-TRAP-GFX900-V3-NEXT:    s_waitcnt lgkmcnt(0)
329 ; HSA-TRAP-GFX900-V3-NEXT:    global_store_dword v0, v1, s[0:1]
330 ; HSA-TRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
331 ; HSA-TRAP-GFX900-V3-NEXT:    s_trap 3
332 ; HSA-TRAP-GFX900-V3-NEXT:    global_store_dword v0, v2, s[0:1]
333 ; HSA-TRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
334 ; HSA-TRAP-GFX900-V3-NEXT:    s_endpgm
336 ; HSA-TRAP-GFX900-V4-LABEL: debugtrap:
337 ; HSA-TRAP-GFX900-V4:       ; %bb.0:
338 ; HSA-TRAP-GFX900-V4-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
339 ; HSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v0, 0
340 ; HSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v1, 1
341 ; HSA-TRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v2, 2
342 ; HSA-TRAP-GFX900-V4-NEXT:    s_waitcnt lgkmcnt(0)
343 ; HSA-TRAP-GFX900-V4-NEXT:    global_store_dword v0, v1, s[0:1]
344 ; HSA-TRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
345 ; HSA-TRAP-GFX900-V4-NEXT:    s_trap 3
346 ; HSA-TRAP-GFX900-V4-NEXT:    global_store_dword v0, v2, s[0:1]
347 ; HSA-TRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
348 ; HSA-TRAP-GFX900-V4-NEXT:    s_endpgm
350 ; HSA-NOTRAP-GFX900-V3-LABEL: debugtrap:
351 ; HSA-NOTRAP-GFX900-V3:       ; %bb.0:
352 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
353 ; HSA-NOTRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v0, 0
354 ; HSA-NOTRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v1, 1
355 ; HSA-NOTRAP-GFX900-V3-NEXT:    v_mov_b32_e32 v2, 2
356 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_waitcnt lgkmcnt(0)
357 ; HSA-NOTRAP-GFX900-V3-NEXT:    global_store_dword v0, v1, s[0:1]
358 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
359 ; HSA-NOTRAP-GFX900-V3-NEXT:    global_store_dword v0, v2, s[0:1]
360 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_waitcnt vmcnt(0)
361 ; HSA-NOTRAP-GFX900-V3-NEXT:    s_endpgm
363 ; HSA-NOTRAP-GFX900-V4-LABEL: debugtrap:
364 ; HSA-NOTRAP-GFX900-V4:       ; %bb.0:
365 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
366 ; HSA-NOTRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v0, 0
367 ; HSA-NOTRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v1, 1
368 ; HSA-NOTRAP-GFX900-V4-NEXT:    v_mov_b32_e32 v2, 2
369 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_waitcnt lgkmcnt(0)
370 ; HSA-NOTRAP-GFX900-V4-NEXT:    global_store_dword v0, v1, s[0:1]
371 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
372 ; HSA-NOTRAP-GFX900-V4-NEXT:    global_store_dword v0, v2, s[0:1]
373 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_waitcnt vmcnt(0)
374 ; HSA-NOTRAP-GFX900-V4-NEXT:    s_endpgm
375   store volatile i32 1, ptr addrspace(1) %arg0
376   call void @llvm.debugtrap()
377   store volatile i32 2, ptr addrspace(1) %arg0
378   ret void
381 attributes #0 = { nounwind noreturn }
382 attributes #1 = { nounwind }
384 !llvm.module.flags = !{!0}
385 !0 = !{i32 1, !"amdgpu_code_object_version", i32 CODE_OBJECT_VERSION}