blob: 8ac7c3e14a172d337e706fd662208de6474f4ff8 [file] [log] [blame]
Ron Liebermanf48e43b2018-11-30 18:29:17 +00001# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass si-fixup-vector-isel -amdgpu-enable-global-sgpr-addr %s -o - | FileCheck -check-prefix=GCN %s
Ron Liebermancac749a2018-11-16 01:13:34 +00002
3# Coverage tests for GLOBAL_* to their _SADDR equivalent.
4
5# GCN-LABEL: name: global_load_store_atomics
6# GCN: GLOBAL_LOAD_DWORD_SADDR
7# GCN: GLOBAL_STORE_DWORD_SADDR
8# GCN: GLOBAL_LOAD_DWORDX2_SADDR
9# GCN: GLOBAL_STORE_DWORDX2_SADDR
10# GCN: GLOBAL_LOAD_DWORDX3_SADDR
11# GCN: GLOBAL_STORE_DWORDX3_SADDR
12# GCN: GLOBAL_LOAD_DWORDX4_SADDR
13# GCN: GLOBAL_STORE_DWORDX4_SADDR
14# GCN: GLOBAL_LOAD_SSHORT_SADDR
15# GCN: GLOBAL_STORE_SHORT_SADDR
16# GCN: GLOBAL_LOAD_USHORT_SADDR
17# GCN: GLOBAL_STORE_SHORT_SADDR
18# GCN: GLOBAL_LOAD_UBYTE_SADDR
19# GCN: GLOBAL_STORE_BYTE_SADDR
20# GCN: GLOBAL_LOAD_SBYTE_SADDR
21# GCN: GLOBAL_STORE_BYTE_SADDR
22# GCN: GLOBAL_LOAD_SBYTE_D16_SADDR
23# GCN: GLOBAL_STORE_BYTE_D16_HI_SADDR
24# GCN: GLOBAL_LOAD_UBYTE_D16_SADDR
25# GCN: GLOBAL_STORE_BYTE_D16_HI_SADDR
26# GCN: GLOBAL_LOAD_SBYTE_D16_HI_SADDR
27# GCN: GLOBAL_STORE_BYTE_D16_HI_SADDR
28# GCN: GLOBAL_LOAD_UBYTE_D16_HI_SADDR
29# GCN: GLOBAL_STORE_BYTE_D16_HI_SADDR
30# GCN: GLOBAL_LOAD_SHORT_D16_HI_SADDR
31# GCN: GLOBAL_STORE_SHORT_D16_HI_SADDR
32# GCN: GLOBAL_LOAD_SHORT_D16_SADDR
33# GCN: GLOBAL_STORE_SHORT_D16_HI_SADDR
34
35# GCN: GLOBAL_ATOMIC_XOR_SADDR_RTN
36# GCN: GLOBAL_ATOMIC_XOR_SADDR %
37# GCN: GLOBAL_ATOMIC_SMIN_SADDR_RTN
38# GCN: GLOBAL_ATOMIC_SMIN_SADDR %
39# GCN: GLOBAL_ATOMIC_AND_SADDR_RTN
40# GCN: GLOBAL_ATOMIC_AND_SADDR %
41# GCN: GLOBAL_ATOMIC_SWAP_SADDR_RTN
42# GCN: GLOBAL_ATOMIC_SWAP_SADDR %
43# GCN: GLOBAL_ATOMIC_SMAX_SADDR_RTN
44# GCN: GLOBAL_ATOMIC_SMAX_SADDR %
45# GCN: GLOBAL_ATOMIC_UMIN_SADDR_RTN
46# GCN: GLOBAL_ATOMIC_UMIN_SADDR %
47# GCN: GLOBAL_ATOMIC_UMAX_SADDR_RTN
48# GCN: GLOBAL_ATOMIC_UMAX_SADDR %
49# GCN: GLOBAL_ATOMIC_OR_SADDR_RTN
50# GCN: GLOBAL_ATOMIC_OR_SADDR %
51# GCN: GLOBAL_ATOMIC_ADD_SADDR_RTN
52# GCN: GLOBAL_ATOMIC_ADD_SADDR %
53# GCN: GLOBAL_ATOMIC_SUB_SADDR_RTN
54# GCN: GLOBAL_ATOMIC_SUB_SADDR %
55# GCN: GLOBAL_ATOMIC_CMPSWAP_SADDR_RTN
56# GCN: GLOBAL_ATOMIC_CMPSWAP_SADDR %
57# GCN: GLOBAL_ATOMIC_INC_SADDR_RTN
58# GCN: GLOBAL_ATOMIC_INC_SADDR %
59# GCN: GLOBAL_ATOMIC_DEC_SADDR_RTN
60# GCN: GLOBAL_ATOMIC_DEC_SADDR %
61
62# GCN: GLOBAL_ATOMIC_OR_X2_SADDR_RTN
63# GCN: GLOBAL_ATOMIC_OR_X2_SADDR %
64# GCN: GLOBAL_ATOMIC_XOR_X2_SADDR_RTN
65# GCN: GLOBAL_ATOMIC_XOR_X2_SADDR %
66# GCN: GLOBAL_ATOMIC_AND_X2_SADDR_RTN
67# GCN: GLOBAL_ATOMIC_AND_X2_SADDR %
68# GCN: GLOBAL_ATOMIC_ADD_X2_SADDR_RTN
69# GCN: GLOBAL_ATOMIC_ADD_X2_SADDR %
70# GCN: GLOBAL_ATOMIC_SUB_X2_SADDR_RTN
71# GCN: GLOBAL_ATOMIC_SUB_X2_SADDR %
72# GCN: GLOBAL_ATOMIC_DEC_X2_SADDR_RTN
73# GCN: GLOBAL_ATOMIC_DEC_X2_SADDR %
74# GCN: GLOBAL_ATOMIC_INC_X2_SADDR_RTN
75# GCN: GLOBAL_ATOMIC_INC_X2_SADDR %
76# GCN: GLOBAL_ATOMIC_SMIN_X2_SADDR_RTN
77# GCN: GLOBAL_ATOMIC_SMIN_X2_SADDR %
78# GCN: GLOBAL_ATOMIC_SWAP_X2_SADDR_RTN
79# GCN: GLOBAL_ATOMIC_SWAP_X2_SADDR %
80# GCN: GLOBAL_ATOMIC_SMAX_X2_SADDR_RTN
81# GCN: GLOBAL_ATOMIC_SMAX_X2_SADDR %
82# GCN: GLOBAL_ATOMIC_UMIN_X2_SADDR_RTN
83# GCN: GLOBAL_ATOMIC_UMIN_X2_SADDR %
84# GCN: GLOBAL_ATOMIC_UMAX_X2_SADDR_RTN
85# GCN: GLOBAL_ATOMIC_UMAX_X2_SADDR %
86# GCN: GLOBAL_ATOMIC_CMPSWAP_X2_SADDR_RTN
87# GCN: GLOBAL_ATOMIC_CMPSWAP_X2_SADDR %
88
89name: global_load_store_atomics
90body: |
91 bb.0:
92 liveins: $vgpr0, $sgpr0_sgpr1
93
94 %1:sgpr_64 = COPY $sgpr0_sgpr1
95 %0:vgpr_32 = COPY $vgpr0
96 %4:sreg_64_xexec = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load 8 )
97 %5:sreg_32_xm0 = S_MOV_B32 2
98 %6:vgpr_32 = V_LSHLREV_B32_e64 killed %5, %0, implicit $exec
99 %7:sreg_32_xm0 = S_MOV_B32 0
100 %15:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
101 %14:vreg_64 = REG_SEQUENCE killed %6, %subreg.sub0, killed %15, %subreg.sub1
102 %21:sgpr_32 = COPY %4.sub0
103 %22:vgpr_32 = COPY %14.sub0
104 %23:sgpr_32 = COPY %4.sub1
105 %24:vgpr_32 = COPY %14.sub1
106 %17:vgpr_32, %19:sreg_64_xexec = V_ADD_I32_e64 %21, %22, implicit $exec
107 %25:vgpr_32 = COPY %23
108 %18:vgpr_32, dead %20:sreg_64_xexec = V_ADDC_U32_e64 %25, %24, killed %19, implicit $exec
109 %16:vreg_64 = REG_SEQUENCE %17, %subreg.sub0, %18, %subreg.sub1
110 %11:vreg_64 = COPY %16
111
112 %10:vgpr_32 = GLOBAL_LOAD_DWORD %11, 16, 0, 0, implicit $exec :: (load 4)
113 GLOBAL_STORE_DWORD %11, %10, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
114 %40:vreg_64 = GLOBAL_LOAD_DWORDX2 %11, 16, 0, 0, implicit $exec :: (load 4)
115 GLOBAL_STORE_DWORDX2 %11, %40, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
116 %41:vreg_96 = GLOBAL_LOAD_DWORDX3 %11, 16, 0, 0, implicit $exec :: (load 4)
117 GLOBAL_STORE_DWORDX3 %11, %41, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
118 %42:vreg_128 = GLOBAL_LOAD_DWORDX4 %11, 16, 0, 0, implicit $exec :: (load 4)
119 GLOBAL_STORE_DWORDX4 %11, %42, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
120 %43:vgpr_32 = GLOBAL_LOAD_SSHORT %11, 16, 0, 0, implicit $exec :: (load 4)
121 GLOBAL_STORE_SHORT %11, %43, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
122 %44:vgpr_32 = GLOBAL_LOAD_USHORT %11, 16, 0, 0, implicit $exec :: (load 4)
123 GLOBAL_STORE_SHORT %11, %44, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
124 %45:vgpr_32 = GLOBAL_LOAD_UBYTE %11, 16, 0, 0, implicit $exec :: (load 4)
125 GLOBAL_STORE_BYTE %11, %45, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
126 %46:vgpr_32 = GLOBAL_LOAD_SBYTE %11, 16, 0, 0, implicit $exec :: (load 4)
127 GLOBAL_STORE_BYTE %11, %46, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
128 %47:vgpr_32 = GLOBAL_LOAD_SBYTE_D16 %11, 16, 0, 0, %46, implicit $exec :: (load 4)
129 GLOBAL_STORE_BYTE_D16_HI %11, %47, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
130 %48:vgpr_32 = GLOBAL_LOAD_UBYTE_D16 %11, 16, 0, 0, %46, implicit $exec :: (load 4)
131 GLOBAL_STORE_BYTE_D16_HI %11, %48, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
132 %49:vgpr_32 = GLOBAL_LOAD_SBYTE_D16_HI %11, 16, 0, 0, %46, implicit $exec :: (load 4)
133 GLOBAL_STORE_BYTE_D16_HI %11, %49, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
134 %50:vgpr_32 = GLOBAL_LOAD_UBYTE_D16_HI %11, 16, 0, 0, %46, implicit $exec :: (load 4)
135 GLOBAL_STORE_BYTE_D16_HI %11, %50, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
136 %51:vgpr_32 = GLOBAL_LOAD_SHORT_D16_HI %11, 16, 0, 0, %46, implicit $exec :: (load 4)
137 GLOBAL_STORE_SHORT_D16_HI %11, %51, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
138 %52:vgpr_32 = GLOBAL_LOAD_SHORT_D16 %11, 16, 0, 0, %46, implicit $exec :: (load 4)
139 GLOBAL_STORE_SHORT_D16_HI %11, %52, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
140
141 %53:vgpr_32 = GLOBAL_ATOMIC_XOR_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
142 GLOBAL_STORE_DWORD %11, %53, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
143 GLOBAL_ATOMIC_XOR %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
144
145 %54:vgpr_32 = GLOBAL_ATOMIC_SMIN_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
146 GLOBAL_STORE_DWORD %11, %54, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
147 GLOBAL_ATOMIC_SMIN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
148
149 %55:vgpr_32 = GLOBAL_ATOMIC_AND_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
150 GLOBAL_STORE_DWORD %11, %55, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
151 GLOBAL_ATOMIC_AND %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
152
153 %56:vgpr_32 = GLOBAL_ATOMIC_SWAP_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
154 GLOBAL_STORE_DWORD %11, %56, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
155 GLOBAL_ATOMIC_SWAP %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
156
157 %57:vgpr_32 = GLOBAL_ATOMIC_SMAX_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
158 GLOBAL_STORE_DWORD %11, %57, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
159 GLOBAL_ATOMIC_SMAX %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
160
161 %58:vgpr_32 = GLOBAL_ATOMIC_UMIN_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
162 GLOBAL_STORE_DWORD %11, %58, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
163 GLOBAL_ATOMIC_UMIN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
164
165 %59:vgpr_32 = GLOBAL_ATOMIC_UMAX_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
166 GLOBAL_STORE_DWORD %11, %59, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
167 GLOBAL_ATOMIC_UMAX %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
168
169 %60:vgpr_32 = GLOBAL_ATOMIC_OR_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
170 GLOBAL_STORE_DWORD %11, %60, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
171 GLOBAL_ATOMIC_OR %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
172
173 %61:vgpr_32 = GLOBAL_ATOMIC_ADD_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
174 GLOBAL_STORE_DWORD %11, %61, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
175 GLOBAL_ATOMIC_ADD %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
176
177 %62:vgpr_32 = GLOBAL_ATOMIC_SUB_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
178 GLOBAL_STORE_DWORD %11, %62, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
179 GLOBAL_ATOMIC_SUB %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
180
181 %63:vgpr_32 = GLOBAL_ATOMIC_CMPSWAP_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
182 GLOBAL_STORE_DWORD %11, %63, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
183 GLOBAL_ATOMIC_CMPSWAP %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
184
185 %64:vgpr_32 = GLOBAL_ATOMIC_INC_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
186 GLOBAL_STORE_DWORD %11, %64, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
187 GLOBAL_ATOMIC_INC %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
188
189 %65:vgpr_32 = GLOBAL_ATOMIC_DEC_RTN %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
190 GLOBAL_STORE_DWORD %11, %65, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
191 GLOBAL_ATOMIC_DEC %11, %15, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
192
193 %66:vreg_64 = GLOBAL_ATOMIC_OR_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
194 GLOBAL_STORE_DWORDX2 %11, %66, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
195 GLOBAL_ATOMIC_OR_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
196
197 %67:vreg_64 = GLOBAL_ATOMIC_XOR_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
198 GLOBAL_STORE_DWORDX2 %11, %67, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
199 GLOBAL_ATOMIC_XOR_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
200
201 %68:vreg_64 = GLOBAL_ATOMIC_AND_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
202 GLOBAL_STORE_DWORDX2 %11, %68, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
203 GLOBAL_ATOMIC_AND_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
204
205 %69:vreg_64 = GLOBAL_ATOMIC_ADD_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
206 GLOBAL_STORE_DWORDX2 %11, %69, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
207 GLOBAL_ATOMIC_ADD_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
208
209 %70:vreg_64 = GLOBAL_ATOMIC_SUB_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
210 GLOBAL_STORE_DWORDX2 %11, %70, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
211 GLOBAL_ATOMIC_SUB_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
212
213 %71:vreg_64 = GLOBAL_ATOMIC_DEC_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
214 GLOBAL_STORE_DWORDX2 %11, %71, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
215 GLOBAL_ATOMIC_DEC_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
216
217 %72:vreg_64 = GLOBAL_ATOMIC_INC_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
218 GLOBAL_STORE_DWORDX2 %11, %72, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
219 GLOBAL_ATOMIC_INC_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
220
221 %73:vreg_64 = GLOBAL_ATOMIC_SMIN_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
222 GLOBAL_STORE_DWORDX2 %11, %73, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
223 GLOBAL_ATOMIC_SMIN_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
224
225 %74:vreg_64 = GLOBAL_ATOMIC_SWAP_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
226 GLOBAL_STORE_DWORDX2 %11, %74, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
227 GLOBAL_ATOMIC_SWAP_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
228
229 %75:vreg_64 = GLOBAL_ATOMIC_SMAX_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
230 GLOBAL_STORE_DWORDX2 %11, %75, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
231 GLOBAL_ATOMIC_SMAX_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
232
233 %76:vreg_64 = GLOBAL_ATOMIC_UMIN_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
234 GLOBAL_STORE_DWORDX2 %11, %76, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
235 GLOBAL_ATOMIC_UMIN_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
236
237 %77:vreg_64 = GLOBAL_ATOMIC_UMAX_X2_RTN %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
238 GLOBAL_STORE_DWORDX2 %11, %77, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
239 GLOBAL_ATOMIC_UMAX_X2 %11, %16, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
240
241 %79:sreg_128 = REG_SEQUENCE %4, %subreg.sub0, %4, %subreg.sub1, %4, %subreg.sub2, %4, %subreg.sub3
242 %80:vreg_128 = COPY %79
243
244 %78:vreg_64 = GLOBAL_ATOMIC_CMPSWAP_X2_RTN %11, %80, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
245 GLOBAL_STORE_DWORDX2 %11, %78, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
246 GLOBAL_ATOMIC_CMPSWAP_X2 %11, %80, 16, 0, implicit $exec :: (volatile load store seq_cst 4, addrspace 1)
247
248 S_ENDPGM
249...