[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AMDGPU / global-load-store-atomics.mir
blob9b6b086c5c42fa301cdc7c31692847d863ce2ff7
1 # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass si-fixup-vector-isel -amdgpu-enable-global-sgpr-addr %s -o - | FileCheck -check-prefix=GCN %s
3 # Coverage tests for GLOBAL_* to their _SADDR equivalent.
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
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 %
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 %
89 name:            global_load_store_atomics
90 body:             |
91   bb.0:
92     liveins: $vgpr0, $sgpr0_sgpr1
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, 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, 0, 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, 0, implicit $exec
109     %16:vreg_64 = REG_SEQUENCE %17, %subreg.sub0, %18, %subreg.sub1
110     %11:vreg_64 = COPY %16
112     %10:vgpr_32 = GLOBAL_LOAD_DWORD %11, 16, 0, 0, 0, implicit $exec :: (load 4)
113     GLOBAL_STORE_DWORD %11, %10, 0, 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, 0, implicit $exec :: (load 4)
115     GLOBAL_STORE_DWORDX2 %11, %40, 0, 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, 0, implicit $exec :: (load 4)
117     GLOBAL_STORE_DWORDX3 %11, %41, 0, 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, 0, implicit $exec :: (load 4)
119     GLOBAL_STORE_DWORDX4 %11, %42, 0, 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, 0, implicit $exec :: (load 4)
121     GLOBAL_STORE_SHORT %11, %43, 0, 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, 0, implicit $exec :: (load 4)
123     GLOBAL_STORE_SHORT %11, %44, 0, 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, 0, implicit $exec :: (load 4)
125     GLOBAL_STORE_BYTE %11, %45, 0, 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, 0, implicit $exec :: (load 4)
127     GLOBAL_STORE_BYTE %11, %46, 0, 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, 0, %46, implicit $exec :: (load 4)
129     GLOBAL_STORE_BYTE_D16_HI %11, %47, 0, 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, 0, %46, implicit $exec :: (load 4)
131     GLOBAL_STORE_BYTE_D16_HI %11, %48, 0, 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, 0, %46, implicit $exec :: (load 4)
133     GLOBAL_STORE_BYTE_D16_HI %11, %49, 0, 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, 0, %46, implicit $exec :: (load 4)
135     GLOBAL_STORE_BYTE_D16_HI %11, %50, 0, 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, 0, %46, implicit $exec :: (load 4)
137     GLOBAL_STORE_SHORT_D16_HI %11, %51, 0, 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, 0, %46, implicit $exec :: (load 4)
139     GLOBAL_STORE_SHORT_D16_HI %11, %52, 0, 0, 0, 0, implicit $exec :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
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, 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)
241     %79:sgpr_128 = REG_SEQUENCE %4, %subreg.sub0, %4, %subreg.sub1, %4, %subreg.sub2, %4, %subreg.sub3
242     %80:vreg_128 = COPY %79
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, 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)
248     S_ENDPGM 0