Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / load-constant-i16.ll
blob5332da6827ec3f6b4b93b4c7993fc158c8415895
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=amdgcn -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-NOHSA-SI %s
3 ; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-HSA %s
4 ; RUN: llc -mtriple=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-NOHSA-VI %s
5 ; RUN: llc -march=r600 -mcpu=redwood -verify-machineinstrs < %s | FileCheck --check-prefix=EG %s
7 define amdgpu_kernel void @constant_load_i16(ptr addrspace(1) %out, ptr addrspace(4) %in) {
8 ; GCN-NOHSA-SI-LABEL: constant_load_i16:
9 ; GCN-NOHSA-SI:       ; %bb.0: ; %entry
10 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
11 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
12 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
13 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
14 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
15 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
16 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
17 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
18 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
19 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
20 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
21 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
22 ; GCN-NOHSA-SI-NEXT:    buffer_store_short v0, off, s[4:7], 0
23 ; GCN-NOHSA-SI-NEXT:    s_endpgm
25 ; GCN-HSA-LABEL: constant_load_i16:
26 ; GCN-HSA:       ; %bb.0: ; %entry
27 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
28 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
29 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
30 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
31 ; GCN-HSA-NEXT:    flat_load_ushort v2, v[0:1]
32 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
33 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
34 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
35 ; GCN-HSA-NEXT:    flat_store_short v[0:1], v2
36 ; GCN-HSA-NEXT:    s_endpgm
38 ; GCN-NOHSA-VI-LABEL: constant_load_i16:
39 ; GCN-NOHSA-VI:       ; %bb.0: ; %entry
40 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
41 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
42 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
43 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
44 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v2, v[0:1]
45 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
46 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
47 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
48 ; GCN-NOHSA-VI-NEXT:    flat_store_short v[0:1], v2
49 ; GCN-NOHSA-VI-NEXT:    s_endpgm
51 ; EG-LABEL: constant_load_i16:
52 ; EG:       ; %bb.0: ; %entry
53 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
54 ; EG-NEXT:    TEX 0 @6
55 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
56 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
57 ; EG-NEXT:    CF_END
58 ; EG-NEXT:    PAD
59 ; EG-NEXT:    Fetch clause starting at 6:
60 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
61 ; EG-NEXT:    ALU clause starting at 8:
62 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
63 ; EG-NEXT:    ALU clause starting at 9:
64 ; EG-NEXT:     AND_INT T0.W, KC0[2].Y, literal.x,
65 ; EG-NEXT:     AND_INT * T1.W, T0.X, literal.y,
66 ; EG-NEXT:    3(4.203895e-45), 65535(9.183409e-41)
67 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
68 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
69 ; EG-NEXT:     LSHL T0.X, T1.W, PV.W,
70 ; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
71 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
72 ; EG-NEXT:     MOV T0.Y, 0.0,
73 ; EG-NEXT:     MOV * T0.Z, 0.0,
74 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
75 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
76 entry:
77   %ld = load i16, ptr addrspace(4) %in
78   store i16 %ld, ptr addrspace(1) %out
79   ret void
82 define amdgpu_kernel void @constant_load_v2i16(ptr addrspace(1) %out, ptr addrspace(4) %in) {
83 ; GCN-NOHSA-SI-LABEL: constant_load_v2i16:
84 ; GCN-NOHSA-SI:       ; %bb.0: ; %entry
85 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
86 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
87 ; GCN-NOHSA-SI-NEXT:    s_load_dword s4, s[2:3], 0x0
88 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
89 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
90 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
91 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
92 ; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
93 ; GCN-NOHSA-SI-NEXT:    s_endpgm
95 ; GCN-HSA-LABEL: constant_load_v2i16:
96 ; GCN-HSA:       ; %bb.0: ; %entry
97 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
98 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
99 ; GCN-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
100 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
101 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
102 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
103 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
104 ; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
105 ; GCN-HSA-NEXT:    s_endpgm
107 ; GCN-NOHSA-VI-LABEL: constant_load_v2i16:
108 ; GCN-NOHSA-VI:       ; %bb.0: ; %entry
109 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
110 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
111 ; GCN-NOHSA-VI-NEXT:    s_load_dword s2, s[2:3], 0x0
112 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
113 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
114 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
115 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
116 ; GCN-NOHSA-VI-NEXT:    flat_store_dword v[0:1], v2
117 ; GCN-NOHSA-VI-NEXT:    s_endpgm
119 ; EG-LABEL: constant_load_v2i16:
120 ; EG:       ; %bb.0: ; %entry
121 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
122 ; EG-NEXT:    TEX 0 @6
123 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
124 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
125 ; EG-NEXT:    CF_END
126 ; EG-NEXT:    PAD
127 ; EG-NEXT:    Fetch clause starting at 6:
128 ; EG-NEXT:     VTX_READ_32 T0.X, T0.X, 0, #1
129 ; EG-NEXT:    ALU clause starting at 8:
130 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
131 ; EG-NEXT:    ALU clause starting at 9:
132 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
133 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
134 entry:
135   %ld = load <2 x i16>, ptr addrspace(4) %in
136   store <2 x i16> %ld, ptr addrspace(1) %out
137   ret void
140 define amdgpu_kernel void @constant_load_v3i16(ptr addrspace(1) %out, ptr addrspace(4) %in) {
141 ; GCN-NOHSA-SI-LABEL: constant_load_v3i16:
142 ; GCN-NOHSA-SI:       ; %bb.0: ; %entry
143 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
144 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
145 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
146 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
147 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
148 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
149 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
150 ; GCN-NOHSA-SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 offset:4
151 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
152 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
153 ; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
154 ; GCN-NOHSA-SI-NEXT:    s_endpgm
156 ; GCN-HSA-LABEL: constant_load_v3i16:
157 ; GCN-HSA:       ; %bb.0: ; %entry
158 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
159 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
160 ; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
161 ; GCN-HSA-NEXT:    s_add_u32 s4, s0, 4
162 ; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
163 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s4
164 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
165 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s5
166 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
167 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s3
168 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
169 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s2
170 ; GCN-HSA-NEXT:    flat_store_short v[2:3], v4
171 ; GCN-HSA-NEXT:    flat_store_dword v[0:1], v5
172 ; GCN-HSA-NEXT:    s_endpgm
174 ; GCN-NOHSA-VI-LABEL: constant_load_v3i16:
175 ; GCN-NOHSA-VI:       ; %bb.0: ; %entry
176 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
177 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
178 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
179 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s0, 4
180 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s1, 0
181 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
182 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
183 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s5
184 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
185 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s3
186 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
187 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s2
188 ; GCN-NOHSA-VI-NEXT:    flat_store_short v[2:3], v4
189 ; GCN-NOHSA-VI-NEXT:    flat_store_dword v[0:1], v5
190 ; GCN-NOHSA-VI-NEXT:    s_endpgm
192 ; EG-LABEL: constant_load_v3i16:
193 ; EG:       ; %bb.0: ; %entry
194 ; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
195 ; EG-NEXT:    TEX 2 @6
196 ; EG-NEXT:    ALU 19, @13, KC0[CB0:0-32], KC1[]
197 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.X, T7.X, 0
198 ; EG-NEXT:    MEM_RAT MSKOR T5.XW, T8.X
199 ; EG-NEXT:    CF_END
200 ; EG-NEXT:    Fetch clause starting at 6:
201 ; EG-NEXT:     VTX_READ_16 T6.X, T5.X, 0, #1
202 ; EG-NEXT:     VTX_READ_16 T7.X, T5.X, 2, #1
203 ; EG-NEXT:     VTX_READ_16 T5.X, T5.X, 4, #1
204 ; EG-NEXT:    ALU clause starting at 12:
205 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
206 ; EG-NEXT:    ALU clause starting at 13:
207 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
208 ; EG-NEXT:    4(5.605194e-45), 0(0.000000e+00)
209 ; EG-NEXT:     AND_INT T1.W, PV.W, literal.x,
210 ; EG-NEXT:     AND_INT * T2.W, T5.X, literal.y,
211 ; EG-NEXT:    3(4.203895e-45), 65535(9.183409e-41)
212 ; EG-NEXT:     LSHL * T1.W, PV.W, literal.x,
213 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
214 ; EG-NEXT:     LSHL T5.X, T2.W, PV.W,
215 ; EG-NEXT:     LSHL * T5.W, literal.x, PV.W,
216 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
217 ; EG-NEXT:     MOV T5.Y, 0.0,
218 ; EG-NEXT:     MOV * T5.Z, 0.0,
219 ; EG-NEXT:     LSHR T8.X, T0.W, literal.x,
220 ; EG-NEXT:     LSHL T0.W, T7.X, literal.y,
221 ; EG-NEXT:     AND_INT * T1.W, T6.X, literal.z,
222 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
223 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
224 ; EG-NEXT:     OR_INT T6.X, PV.W, PS,
225 ; EG-NEXT:     LSHR * T7.X, KC0[2].Y, literal.x,
226 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
227 entry:
228   %ld = load <3 x i16>, ptr addrspace(4) %in
229   store <3 x i16> %ld, ptr addrspace(1) %out
230   ret void
233 define amdgpu_kernel void @constant_load_v4i16(ptr addrspace(1) %out, ptr addrspace(4) %in) {
234 ; GCN-NOHSA-SI-LABEL: constant_load_v4i16:
235 ; GCN-NOHSA-SI:       ; %bb.0: ; %entry
236 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
237 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
238 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
239 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
240 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
241 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
242 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
243 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s5
244 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
245 ; GCN-NOHSA-SI-NEXT:    s_endpgm
247 ; GCN-HSA-LABEL: constant_load_v4i16:
248 ; GCN-HSA:       ; %bb.0: ; %entry
249 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
250 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
251 ; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
252 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
253 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
254 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
255 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
256 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s3
257 ; GCN-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
258 ; GCN-HSA-NEXT:    s_endpgm
260 ; GCN-NOHSA-VI-LABEL: constant_load_v4i16:
261 ; GCN-NOHSA-VI:       ; %bb.0: ; %entry
262 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
263 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
264 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
265 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
266 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
267 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
268 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
269 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s3
270 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
271 ; GCN-NOHSA-VI-NEXT:    s_endpgm
273 ; EG-LABEL: constant_load_v4i16:
274 ; EG:       ; %bb.0: ; %entry
275 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
276 ; EG-NEXT:    TEX 0 @6
277 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
278 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
279 ; EG-NEXT:    CF_END
280 ; EG-NEXT:    PAD
281 ; EG-NEXT:    Fetch clause starting at 6:
282 ; EG-NEXT:     VTX_READ_64 T0.XY, T0.X, 0, #1
283 ; EG-NEXT:    ALU clause starting at 8:
284 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
285 ; EG-NEXT:    ALU clause starting at 9:
286 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
287 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
288 entry:
289   %ld = load <4 x i16>, ptr addrspace(4) %in
290   store <4 x i16> %ld, ptr addrspace(1) %out
291   ret void
294 define amdgpu_kernel void @constant_load_v8i16(ptr addrspace(1) %out, ptr addrspace(4) %in) {
295 ; GCN-NOHSA-SI-LABEL: constant_load_v8i16:
296 ; GCN-NOHSA-SI:       ; %bb.0: ; %entry
297 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
298 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
299 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
300 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
301 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
302 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
303 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
304 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s5
305 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s6
306 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s7
307 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
308 ; GCN-NOHSA-SI-NEXT:    s_endpgm
310 ; GCN-HSA-LABEL: constant_load_v8i16:
311 ; GCN-HSA:       ; %bb.0: ; %entry
312 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
313 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
314 ; GCN-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
315 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
316 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
317 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
318 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
319 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
320 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
321 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
322 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
323 ; GCN-HSA-NEXT:    s_endpgm
325 ; GCN-NOHSA-VI-LABEL: constant_load_v8i16:
326 ; GCN-NOHSA-VI:       ; %bb.0: ; %entry
327 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
328 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
329 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
330 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
331 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
332 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
333 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
334 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s5
335 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
336 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s7
337 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
338 ; GCN-NOHSA-VI-NEXT:    s_endpgm
340 ; EG-LABEL: constant_load_v8i16:
341 ; EG:       ; %bb.0: ; %entry
342 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
343 ; EG-NEXT:    TEX 0 @6
344 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
345 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
346 ; EG-NEXT:    CF_END
347 ; EG-NEXT:    PAD
348 ; EG-NEXT:    Fetch clause starting at 6:
349 ; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
350 ; EG-NEXT:    ALU clause starting at 8:
351 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
352 ; EG-NEXT:    ALU clause starting at 9:
353 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
354 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
355 entry:
356   %ld = load <8 x i16>, ptr addrspace(4) %in
357   store <8 x i16> %ld, ptr addrspace(1) %out
358   ret void
361 define amdgpu_kernel void @constant_load_v16i16(ptr addrspace(1) %out, ptr addrspace(4) %in) {
362 ; GCN-NOHSA-SI-LABEL: constant_load_v16i16:
363 ; GCN-NOHSA-SI:       ; %bb.0: ; %entry
364 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x9
365 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
366 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
367 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, 0xf000
368 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, -1
369 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
370 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
371 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s5
372 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s6
373 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s7
374 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16
375 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
376 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s0
377 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s1
378 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s2
379 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s3
380 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
381 ; GCN-NOHSA-SI-NEXT:    s_endpgm
383 ; GCN-HSA-LABEL: constant_load_v16i16:
384 ; GCN-HSA:       ; %bb.0: ; %entry
385 ; GCN-HSA-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x0
386 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
387 ; GCN-HSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
388 ; GCN-HSA-NEXT:    s_add_u32 s10, s8, 16
389 ; GCN-HSA-NEXT:    s_addc_u32 s11, s9, 0
390 ; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s10
391 ; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s11
392 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
393 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
394 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
395 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
396 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
397 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
398 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
399 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
400 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
401 ; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s2
402 ; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s3
403 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
404 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
405 ; GCN-HSA-NEXT:    s_endpgm
407 ; GCN-NOHSA-VI-LABEL: constant_load_v16i16:
408 ; GCN-NOHSA-VI:       ; %bb.0: ; %entry
409 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x24
410 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
411 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
412 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s8, 16
413 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s9, 0
414 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v6, s10
415 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v7, s11
416 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
417 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
418 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s5
419 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
420 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s7
421 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
422 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
423 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
424 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
425 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v6, s2
426 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v7, s3
427 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s9
428 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
429 ; GCN-NOHSA-VI-NEXT:    s_endpgm
431 ; EG-LABEL: constant_load_v16i16:
432 ; EG:       ; %bb.0: ; %entry
433 ; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
434 ; EG-NEXT:    TEX 0 @8
435 ; EG-NEXT:    ALU 3, @13, KC0[CB0:0-32], KC1[]
436 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
437 ; EG-NEXT:    TEX 0 @10
438 ; EG-NEXT:    ALU 1, @17, KC0[CB0:0-32], KC1[]
439 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
440 ; EG-NEXT:    CF_END
441 ; EG-NEXT:    Fetch clause starting at 8:
442 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1
443 ; EG-NEXT:    Fetch clause starting at 10:
444 ; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
445 ; EG-NEXT:    ALU clause starting at 12:
446 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
447 ; EG-NEXT:    ALU clause starting at 13:
448 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
449 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
450 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
451 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
452 ; EG-NEXT:    ALU clause starting at 17:
453 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
454 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
455 entry:
456   %ld = load <16 x i16>, ptr addrspace(4) %in
457   store <16 x i16> %ld, ptr addrspace(1) %out
458   ret void
461 define amdgpu_kernel void @constant_load_v16i16_align2(ptr addrspace(4) %ptr0) #0 {
462 ; GCN-NOHSA-SI-LABEL: constant_load_v16i16_align2:
463 ; GCN-NOHSA-SI:       ; %bb.0: ; %entry
464 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x9
465 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
466 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
467 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
468 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[0:3], 0
469 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v1, off, s[0:3], 0 offset:2
470 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v4, off, s[0:3], 0 offset:4
471 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v2, off, s[0:3], 0 offset:6
472 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v5, off, s[0:3], 0 offset:8
473 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v3, off, s[0:3], 0 offset:10
474 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v6, off, s[0:3], 0 offset:12
475 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v7, off, s[0:3], 0 offset:14
476 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v8, off, s[0:3], 0 offset:16
477 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v9, off, s[0:3], 0 offset:18
478 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v10, off, s[0:3], 0 offset:20
479 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v11, off, s[0:3], 0 offset:22
480 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v12, off, s[0:3], 0 offset:24
481 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v13, off, s[0:3], 0 offset:26
482 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v14, off, s[0:3], 0 offset:28
483 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v15, off, s[0:3], 0 offset:30
484 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(8)
485 ; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
486 ; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v3
487 ; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v2
488 ; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v18, 16, v1
489 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
490 ; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
491 ; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
492 ; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
493 ; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
494 ; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v3, v7, v6
495 ; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v2, v16, v5
496 ; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v1, v17, v4
497 ; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v0, v18, v0
498 ; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v7, v15, v14
499 ; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v6, v13, v12
500 ; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v5, v11, v10
501 ; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v4, v9, v8
502 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
503 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
504 ; GCN-NOHSA-SI-NEXT:    s_endpgm
506 ; GCN-HSA-LABEL: constant_load_v16i16_align2:
507 ; GCN-HSA:       ; %bb.0: ; %entry
508 ; GCN-HSA-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
509 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
510 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
511 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
512 ; GCN-HSA-NEXT:    s_add_u32 s0, s0, 16
513 ; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
514 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
515 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
516 ; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
517 ; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
518 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
519 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[0:3]
520 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
521 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
522 ; GCN-HSA-NEXT:    s_endpgm
524 ; GCN-NOHSA-VI-LABEL: constant_load_v16i16_align2:
525 ; GCN-NOHSA-VI:       ; %bb.0: ; %entry
526 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x24
527 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
528 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 14
529 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
530 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
531 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
532 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 12
533 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
534 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
535 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s3
536 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 10
537 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
538 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
539 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
540 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 8
541 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
542 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v7, s3
543 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v6, s2
544 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 6
545 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
546 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v9, s3
547 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v8, s2
548 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 4
549 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
550 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v11, s3
551 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v10, s2
552 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 30
553 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
554 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v13, s3
555 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v12, s2
556 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 28
557 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
558 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v15, s3
559 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v14, s2
560 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 26
561 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v16, v[0:1]
562 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v17, v[2:3]
563 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v18, v[4:5]
564 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v19, v[6:7]
565 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v20, v[8:9]
566 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v21, v[10:11]
567 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v22, v[12:13]
568 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v23, v[14:15]
569 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
570 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
571 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
572 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 24
573 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
574 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
575 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s3
576 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 22
577 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
578 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
579 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
580 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 20
581 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
582 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v7, s3
583 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v6, s2
584 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 18
585 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
586 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v9, s3
587 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v8, s2
588 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 16
589 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
590 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v11, s3
591 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v10, s2
592 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 2
593 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
594 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v13, s3
595 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v15, s1
596 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v12, s2
597 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v14, s0
598 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v0, v[0:1]
599 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v24, v[2:3]
600 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v4, v[4:5]
601 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v5, v[6:7]
602 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v8, v[8:9]
603 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v9, v[10:11]
604 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v10, v[12:13]
605 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v11, v[14:15]
606 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(14)
607 ; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v16
608 ; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v3, v17, v1
609 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(13)
610 ; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v18
611 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(12)
612 ; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v2, v19, v1
613 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(11)
614 ; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v20
615 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(10)
616 ; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v1, v21, v1
617 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(9)
618 ; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v6, 16, v22
619 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(8)
620 ; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v7, v23, v6
621 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(7)
622 ; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
623 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(6)
624 ; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v6, v24, v0
625 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(5)
626 ; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v0, 16, v4
627 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(4)
628 ; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v5, v5, v0
629 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(3)
630 ; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v0, 16, v8
631 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(2)
632 ; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v4, v9, v0
633 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
634 ; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v0, 16, v10
635 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
636 ; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v0, v11, v0
637 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
638 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[0:1], v[0:3]
639 ; GCN-NOHSA-VI-NEXT:    s_endpgm
641 ; EG-LABEL: constant_load_v16i16_align2:
642 ; EG:       ; %bb.0: ; %entry
643 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
644 ; EG-NEXT:    TEX 1 @6
645 ; EG-NEXT:    ALU 1, @11, KC0[], KC1[]
646 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
647 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T2.X, 1
648 ; EG-NEXT:    CF_END
649 ; EG-NEXT:    Fetch clause starting at 6:
650 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1
651 ; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
652 ; EG-NEXT:    ALU clause starting at 10:
653 ; EG-NEXT:     MOV * T0.X, KC0[2].Y,
654 ; EG-NEXT:    ALU clause starting at 11:
655 ; EG-NEXT:     MOV * T2.X, literal.x,
656 ; EG-NEXT:    0(0.000000e+00), 0(0.000000e+00)
657 entry:
658   %ld =  load <16 x i16>, ptr addrspace(4) %ptr0, align 2
659   store <16 x i16> %ld, ptr addrspace(1) undef, align 32
660   ret void
663 define amdgpu_kernel void @constant_zextload_i16_to_i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
664 ; GCN-NOHSA-SI-LABEL: constant_zextload_i16_to_i32:
665 ; GCN-NOHSA-SI:       ; %bb.0:
666 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
667 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
668 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
669 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
670 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
671 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
672 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
673 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
674 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
675 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
676 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
677 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
678 ; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
679 ; GCN-NOHSA-SI-NEXT:    s_endpgm
681 ; GCN-HSA-LABEL: constant_zextload_i16_to_i32:
682 ; GCN-HSA:       ; %bb.0:
683 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
684 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
685 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
686 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
687 ; GCN-HSA-NEXT:    flat_load_ushort v2, v[0:1]
688 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
689 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
690 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
691 ; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
692 ; GCN-HSA-NEXT:    s_endpgm
694 ; GCN-NOHSA-VI-LABEL: constant_zextload_i16_to_i32:
695 ; GCN-NOHSA-VI:       ; %bb.0:
696 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
697 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
698 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
699 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
700 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v2, v[0:1]
701 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
702 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
703 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
704 ; GCN-NOHSA-VI-NEXT:    flat_store_dword v[0:1], v2
705 ; GCN-NOHSA-VI-NEXT:    s_endpgm
707 ; EG-LABEL: constant_zextload_i16_to_i32:
708 ; EG:       ; %bb.0:
709 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
710 ; EG-NEXT:    TEX 0 @6
711 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
712 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
713 ; EG-NEXT:    CF_END
714 ; EG-NEXT:    PAD
715 ; EG-NEXT:    Fetch clause starting at 6:
716 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
717 ; EG-NEXT:    ALU clause starting at 8:
718 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
719 ; EG-NEXT:    ALU clause starting at 9:
720 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
721 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
722   %a = load i16, ptr addrspace(4) %in
723   %ext = zext i16 %a to i32
724   store i32 %ext, ptr addrspace(1) %out
725   ret void
728 define amdgpu_kernel void @constant_sextload_i16_to_i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
729 ; GCN-NOHSA-SI-LABEL: constant_sextload_i16_to_i32:
730 ; GCN-NOHSA-SI:       ; %bb.0:
731 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
732 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
733 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
734 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
735 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
736 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
737 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
738 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
739 ; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
740 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
741 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
742 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
743 ; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
744 ; GCN-NOHSA-SI-NEXT:    s_endpgm
746 ; GCN-HSA-LABEL: constant_sextload_i16_to_i32:
747 ; GCN-HSA:       ; %bb.0:
748 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
749 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
750 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
751 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
752 ; GCN-HSA-NEXT:    flat_load_sshort v2, v[0:1]
753 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
754 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
755 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
756 ; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
757 ; GCN-HSA-NEXT:    s_endpgm
759 ; GCN-NOHSA-VI-LABEL: constant_sextload_i16_to_i32:
760 ; GCN-NOHSA-VI:       ; %bb.0:
761 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
762 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
763 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
764 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
765 ; GCN-NOHSA-VI-NEXT:    flat_load_sshort v2, v[0:1]
766 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
767 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
768 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
769 ; GCN-NOHSA-VI-NEXT:    flat_store_dword v[0:1], v2
770 ; GCN-NOHSA-VI-NEXT:    s_endpgm
772 ; EG-LABEL: constant_sextload_i16_to_i32:
773 ; EG:       ; %bb.0:
774 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
775 ; EG-NEXT:    TEX 0 @6
776 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
777 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
778 ; EG-NEXT:    CF_END
779 ; EG-NEXT:    PAD
780 ; EG-NEXT:    Fetch clause starting at 6:
781 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
782 ; EG-NEXT:    ALU clause starting at 8:
783 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
784 ; EG-NEXT:    ALU clause starting at 9:
785 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
786 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
787 ; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
788   %a = load i16, ptr addrspace(4) %in
789   %ext = sext i16 %a to i32
790   store i32 %ext, ptr addrspace(1) %out
791   ret void
794 define amdgpu_kernel void @constant_zextload_v1i16_to_v1i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
795 ; GCN-NOHSA-SI-LABEL: constant_zextload_v1i16_to_v1i32:
796 ; GCN-NOHSA-SI:       ; %bb.0:
797 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
798 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
799 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
800 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
801 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
802 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
803 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
804 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
805 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
806 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
807 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
808 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
809 ; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
810 ; GCN-NOHSA-SI-NEXT:    s_endpgm
812 ; GCN-HSA-LABEL: constant_zextload_v1i16_to_v1i32:
813 ; GCN-HSA:       ; %bb.0:
814 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
815 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
816 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
817 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
818 ; GCN-HSA-NEXT:    flat_load_ushort v2, v[0:1]
819 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
820 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
821 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
822 ; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
823 ; GCN-HSA-NEXT:    s_endpgm
825 ; GCN-NOHSA-VI-LABEL: constant_zextload_v1i16_to_v1i32:
826 ; GCN-NOHSA-VI:       ; %bb.0:
827 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
828 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
829 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
830 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
831 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v2, v[0:1]
832 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
833 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
834 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
835 ; GCN-NOHSA-VI-NEXT:    flat_store_dword v[0:1], v2
836 ; GCN-NOHSA-VI-NEXT:    s_endpgm
838 ; EG-LABEL: constant_zextload_v1i16_to_v1i32:
839 ; EG:       ; %bb.0:
840 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
841 ; EG-NEXT:    TEX 0 @6
842 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
843 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
844 ; EG-NEXT:    CF_END
845 ; EG-NEXT:    PAD
846 ; EG-NEXT:    Fetch clause starting at 6:
847 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
848 ; EG-NEXT:    ALU clause starting at 8:
849 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
850 ; EG-NEXT:    ALU clause starting at 9:
851 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
852 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
853   %load = load <1 x i16>, ptr addrspace(4) %in
854   %ext = zext <1 x i16> %load to <1 x i32>
855   store <1 x i32> %ext, ptr addrspace(1) %out
856   ret void
859 define amdgpu_kernel void @constant_sextload_v1i16_to_v1i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
860 ; GCN-NOHSA-SI-LABEL: constant_sextload_v1i16_to_v1i32:
861 ; GCN-NOHSA-SI:       ; %bb.0:
862 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
863 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
864 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
865 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
866 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
867 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
868 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
869 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
870 ; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
871 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
872 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
873 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
874 ; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
875 ; GCN-NOHSA-SI-NEXT:    s_endpgm
877 ; GCN-HSA-LABEL: constant_sextload_v1i16_to_v1i32:
878 ; GCN-HSA:       ; %bb.0:
879 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
880 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
881 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
882 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
883 ; GCN-HSA-NEXT:    flat_load_sshort v2, v[0:1]
884 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
885 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
886 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
887 ; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
888 ; GCN-HSA-NEXT:    s_endpgm
890 ; GCN-NOHSA-VI-LABEL: constant_sextload_v1i16_to_v1i32:
891 ; GCN-NOHSA-VI:       ; %bb.0:
892 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
893 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
894 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
895 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
896 ; GCN-NOHSA-VI-NEXT:    flat_load_sshort v2, v[0:1]
897 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
898 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
899 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
900 ; GCN-NOHSA-VI-NEXT:    flat_store_dword v[0:1], v2
901 ; GCN-NOHSA-VI-NEXT:    s_endpgm
903 ; EG-LABEL: constant_sextload_v1i16_to_v1i32:
904 ; EG:       ; %bb.0:
905 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
906 ; EG-NEXT:    TEX 0 @6
907 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
908 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
909 ; EG-NEXT:    CF_END
910 ; EG-NEXT:    PAD
911 ; EG-NEXT:    Fetch clause starting at 6:
912 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
913 ; EG-NEXT:    ALU clause starting at 8:
914 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
915 ; EG-NEXT:    ALU clause starting at 9:
916 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
917 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
918 ; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
919   %load = load <1 x i16>, ptr addrspace(4) %in
920   %ext = sext <1 x i16> %load to <1 x i32>
921   store <1 x i32> %ext, ptr addrspace(1) %out
922   ret void
925 define amdgpu_kernel void @constant_zextload_v2i16_to_v2i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
926 ; GCN-NOHSA-SI-LABEL: constant_zextload_v2i16_to_v2i32:
927 ; GCN-NOHSA-SI:       ; %bb.0:
928 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
929 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
930 ; GCN-NOHSA-SI-NEXT:    s_load_dword s2, s[2:3], 0x0
931 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
932 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
933 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s4, s2, 16
934 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s2, 0xffff
935 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
936 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
937 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s4
938 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
939 ; GCN-NOHSA-SI-NEXT:    s_endpgm
941 ; GCN-HSA-LABEL: constant_zextload_v2i16_to_v2i32:
942 ; GCN-HSA:       ; %bb.0:
943 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
944 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
945 ; GCN-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
946 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
947 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
948 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
949 ; GCN-HSA-NEXT:    s_lshr_b32 s0, s2, 16
950 ; GCN-HSA-NEXT:    s_and_b32 s1, s2, 0xffff
951 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
952 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
953 ; GCN-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
954 ; GCN-HSA-NEXT:    s_endpgm
956 ; GCN-NOHSA-VI-LABEL: constant_zextload_v2i16_to_v2i32:
957 ; GCN-NOHSA-VI:       ; %bb.0:
958 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
959 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
960 ; GCN-NOHSA-VI-NEXT:    s_load_dword s2, s[2:3], 0x0
961 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
962 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
963 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
964 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s0, s2, 16
965 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s1, s2, 0xffff
966 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s1
967 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s0
968 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
969 ; GCN-NOHSA-VI-NEXT:    s_endpgm
971 ; EG-LABEL: constant_zextload_v2i16_to_v2i32:
972 ; EG:       ; %bb.0:
973 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
974 ; EG-NEXT:    TEX 0 @6
975 ; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
976 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XY, T5.X, 1
977 ; EG-NEXT:    CF_END
978 ; EG-NEXT:    PAD
979 ; EG-NEXT:    Fetch clause starting at 6:
980 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
981 ; EG-NEXT:    ALU clause starting at 8:
982 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
983 ; EG-NEXT:    ALU clause starting at 9:
984 ; EG-NEXT:     LSHR * T4.Y, T4.X, literal.x,
985 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
986 ; EG-NEXT:     AND_INT T4.X, T4.X, literal.x,
987 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
988 ; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
989   %load = load <2 x i16>, ptr addrspace(4) %in
990   %ext = zext <2 x i16> %load to <2 x i32>
991   store <2 x i32> %ext, ptr addrspace(1) %out
992   ret void
995 ; TODO: We should use ASHR instead of LSHR + BFE
996 define amdgpu_kernel void @constant_sextload_v2i16_to_v2i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
997 ; GCN-NOHSA-SI-LABEL: constant_sextload_v2i16_to_v2i32:
998 ; GCN-NOHSA-SI:       ; %bb.0:
999 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1000 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1001 ; GCN-NOHSA-SI-NEXT:    s_load_dword s2, s[2:3], 0x0
1002 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1003 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1004 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s4, s2, 16
1005 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s2
1006 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1007 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
1008 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s4
1009 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
1010 ; GCN-NOHSA-SI-NEXT:    s_endpgm
1012 ; GCN-HSA-LABEL: constant_sextload_v2i16_to_v2i32:
1013 ; GCN-HSA:       ; %bb.0:
1014 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1015 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1016 ; GCN-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1017 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
1018 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
1019 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1020 ; GCN-HSA-NEXT:    s_ashr_i32 s0, s2, 16
1021 ; GCN-HSA-NEXT:    s_sext_i32_i16 s1, s2
1022 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
1023 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
1024 ; GCN-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1025 ; GCN-HSA-NEXT:    s_endpgm
1027 ; GCN-NOHSA-VI-LABEL: constant_sextload_v2i16_to_v2i32:
1028 ; GCN-NOHSA-VI:       ; %bb.0:
1029 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1030 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1031 ; GCN-NOHSA-VI-NEXT:    s_load_dword s2, s[2:3], 0x0
1032 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
1033 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
1034 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1035 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s0, s2, 16
1036 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s1, s2
1037 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s1
1038 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s0
1039 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1040 ; GCN-NOHSA-VI-NEXT:    s_endpgm
1042 ; EG-LABEL: constant_sextload_v2i16_to_v2i32:
1043 ; EG:       ; %bb.0:
1044 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1045 ; EG-NEXT:    TEX 0 @6
1046 ; EG-NEXT:    ALU 5, @9, KC0[CB0:0-32], KC1[]
1047 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XY, T4.X, 1
1048 ; EG-NEXT:    CF_END
1049 ; EG-NEXT:    PAD
1050 ; EG-NEXT:    Fetch clause starting at 6:
1051 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1052 ; EG-NEXT:    ALU clause starting at 8:
1053 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1054 ; EG-NEXT:    ALU clause starting at 9:
1055 ; EG-NEXT:     BFE_INT T5.X, T4.X, 0.0, literal.x,
1056 ; EG-NEXT:     LSHR T0.W, T4.X, literal.x,
1057 ; EG-NEXT:     LSHR * T4.X, KC0[2].Y, literal.y,
1058 ; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
1059 ; EG-NEXT:     BFE_INT * T5.Y, PV.W, 0.0, literal.x,
1060 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1061   %load = load <2 x i16>, ptr addrspace(4) %in
1062   %ext = sext <2 x i16> %load to <2 x i32>
1063   store <2 x i32> %ext, ptr addrspace(1) %out
1064   ret void
1067 define amdgpu_kernel void @constant_zextload_v3i16_to_v3i32(ptr addrspace(1) %out, ptr addrspace(4) %in) {
1068 ; GCN-NOHSA-SI-LABEL: constant_zextload_v3i16_to_v3i32:
1069 ; GCN-NOHSA-SI:       ; %bb.0: ; %entry
1070 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1071 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1072 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1073 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1074 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1075 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1076 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s6, s4, 16
1077 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
1078 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
1079 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
1080 ; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:8
1081 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1082 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1083 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s6
1084 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
1085 ; GCN-NOHSA-SI-NEXT:    s_endpgm
1087 ; GCN-HSA-LABEL: constant_zextload_v3i16_to_v3i32:
1088 ; GCN-HSA:       ; %bb.0: ; %entry
1089 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1090 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1091 ; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1092 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
1093 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s1
1094 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1095 ; GCN-HSA-NEXT:    s_lshr_b32 s0, s2, 16
1096 ; GCN-HSA-NEXT:    s_and_b32 s1, s3, 0xffff
1097 ; GCN-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
1098 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1099 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s0
1100 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
1101 ; GCN-HSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1102 ; GCN-HSA-NEXT:    s_endpgm
1104 ; GCN-NOHSA-VI-LABEL: constant_zextload_v3i16_to_v3i32:
1105 ; GCN-NOHSA-VI:       ; %bb.0: ; %entry
1106 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1107 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1108 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1109 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s0
1110 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s1
1111 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1112 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s0, s3, 0xffff
1113 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s1, s2, 16
1114 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s2, s2, 0xffff
1115 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
1116 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
1117 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s0
1118 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1119 ; GCN-NOHSA-VI-NEXT:    s_endpgm
1121 ; EG-LABEL: constant_zextload_v3i16_to_v3i32:
1122 ; EG:       ; %bb.0: ; %entry
1123 ; EG-NEXT:    ALU 4, @12, KC0[CB0:0-32], KC1[]
1124 ; EG-NEXT:    TEX 2 @6
1125 ; EG-NEXT:    ALU 2, @17, KC0[], KC1[]
1126 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T2.X, T4.X, 0
1127 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T3.XY, T0.X, 1
1128 ; EG-NEXT:    CF_END
1129 ; EG-NEXT:    Fetch clause starting at 6:
1130 ; EG-NEXT:     VTX_READ_16 T2.X, T1.X, 4, #1
1131 ; EG-NEXT:     VTX_READ_16 T3.X, T1.X, 0, #1
1132 ; EG-NEXT:     VTX_READ_16 T1.X, T1.X, 2, #1
1133 ; EG-NEXT:    ALU clause starting at 12:
1134 ; EG-NEXT:     LSHR T0.X, KC0[2].Y, literal.x,
1135 ; EG-NEXT:     MOV * T1.X, KC0[2].Z,
1136 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1137 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
1138 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1139 ; EG-NEXT:    ALU clause starting at 17:
1140 ; EG-NEXT:     LSHR T4.X, T0.W, literal.x,
1141 ; EG-NEXT:     MOV * T3.Y, T1.X,
1142 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1143 entry:
1144   %ld = load <3 x i16>, ptr addrspace(4) %in
1145   %ext = zext <3 x i16> %ld to <3 x i32>
1146   store <3 x i32> %ext, ptr addrspace(1) %out
1147   ret void
1150 define amdgpu_kernel void @constant_sextload_v3i16_to_v3i32(ptr addrspace(1) %out, ptr addrspace(4) %in) {
1151 ; GCN-NOHSA-SI-LABEL: constant_sextload_v3i16_to_v3i32:
1152 ; GCN-NOHSA-SI:       ; %bb.0: ; %entry
1153 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1154 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1155 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1156 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1157 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1158 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1159 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s6, s4, 16
1160 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
1161 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
1162 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
1163 ; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:8
1164 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1165 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1166 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s6
1167 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
1168 ; GCN-NOHSA-SI-NEXT:    s_endpgm
1170 ; GCN-HSA-LABEL: constant_sextload_v3i16_to_v3i32:
1171 ; GCN-HSA:       ; %bb.0: ; %entry
1172 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1173 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1174 ; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1175 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
1176 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s1
1177 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1178 ; GCN-HSA-NEXT:    s_ashr_i32 s0, s2, 16
1179 ; GCN-HSA-NEXT:    s_sext_i32_i16 s1, s3
1180 ; GCN-HSA-NEXT:    s_sext_i32_i16 s2, s2
1181 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1182 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s0
1183 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
1184 ; GCN-HSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1185 ; GCN-HSA-NEXT:    s_endpgm
1187 ; GCN-NOHSA-VI-LABEL: constant_sextload_v3i16_to_v3i32:
1188 ; GCN-NOHSA-VI:       ; %bb.0: ; %entry
1189 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1190 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1191 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1192 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s0
1193 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s1
1194 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1195 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s0, s2, 16
1196 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s1, s3
1197 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s2, s2
1198 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
1199 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s0
1200 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s1
1201 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1202 ; GCN-NOHSA-VI-NEXT:    s_endpgm
1204 ; EG-LABEL: constant_sextload_v3i16_to_v3i32:
1205 ; EG:       ; %bb.0: ; %entry
1206 ; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
1207 ; EG-NEXT:    TEX 2 @6
1208 ; EG-NEXT:    ALU 9, @13, KC0[CB0:0-32], KC1[]
1209 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T2.X, T3.X, 0
1210 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
1211 ; EG-NEXT:    CF_END
1212 ; EG-NEXT:    Fetch clause starting at 6:
1213 ; EG-NEXT:     VTX_READ_16 T1.X, T0.X, 2, #1
1214 ; EG-NEXT:     VTX_READ_16 T2.X, T0.X, 4, #1
1215 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
1216 ; EG-NEXT:    ALU clause starting at 12:
1217 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
1218 ; EG-NEXT:    ALU clause starting at 13:
1219 ; EG-NEXT:     BFE_INT * T0.Y, T1.X, 0.0, literal.x,
1220 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1221 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
1222 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
1223 ; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
1224 ; EG-NEXT:     BFE_INT T2.X, T2.X, 0.0, literal.x,
1225 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1226 ; EG-NEXT:    16(2.242078e-44), 8(1.121039e-44)
1227 ; EG-NEXT:     LSHR * T3.X, PV.W, literal.x,
1228 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1229 entry:
1230   %ld = load <3 x i16>, ptr addrspace(4) %in
1231   %ext = sext <3 x i16> %ld to <3 x i32>
1232   store <3 x i32> %ext, ptr addrspace(1) %out
1233   ret void
1236 ; v4i16 is naturally 8 byte aligned
1237 ; TODO: This should use LD, but for some there are redundant MOVs
1238 define amdgpu_kernel void @constant_zextload_v4i16_to_v4i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1239 ; GCN-NOHSA-SI-LABEL: constant_zextload_v4i16_to_v4i32:
1240 ; GCN-NOHSA-SI:       ; %bb.0:
1241 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1242 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1243 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1244 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1245 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1246 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s6, s5, 16
1247 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s7, s4, 16
1248 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
1249 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
1250 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1251 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1252 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s7
1253 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1254 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s6
1255 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1256 ; GCN-NOHSA-SI-NEXT:    s_endpgm
1258 ; GCN-HSA-LABEL: constant_zextload_v4i16_to_v4i32:
1259 ; GCN-HSA:       ; %bb.0:
1260 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1261 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1262 ; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1263 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1264 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1265 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1266 ; GCN-HSA-NEXT:    s_lshr_b32 s0, s3, 16
1267 ; GCN-HSA-NEXT:    s_lshr_b32 s1, s2, 16
1268 ; GCN-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
1269 ; GCN-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
1270 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1271 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
1272 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s3
1273 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
1274 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1275 ; GCN-HSA-NEXT:    s_endpgm
1277 ; GCN-NOHSA-VI-LABEL: constant_zextload_v4i16_to_v4i32:
1278 ; GCN-NOHSA-VI:       ; %bb.0:
1279 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1280 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1281 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1282 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
1283 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
1284 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1285 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s0, s3, 16
1286 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s1, s3, 0xffff
1287 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s3, s2, 16
1288 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s2, s2, 0xffff
1289 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
1290 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
1291 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s1
1292 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s0
1293 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1294 ; GCN-NOHSA-VI-NEXT:    s_endpgm
1296 ; EG-LABEL: constant_zextload_v4i16_to_v4i32:
1297 ; EG:       ; %bb.0:
1298 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1299 ; EG-NEXT:    TEX 0 @6
1300 ; EG-NEXT:    ALU 8, @9, KC0[CB0:0-32], KC1[]
1301 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1
1302 ; EG-NEXT:    CF_END
1303 ; EG-NEXT:    PAD
1304 ; EG-NEXT:    Fetch clause starting at 6:
1305 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1306 ; EG-NEXT:    ALU clause starting at 8:
1307 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
1308 ; EG-NEXT:    ALU clause starting at 9:
1309 ; EG-NEXT:     LSHR * T5.W, T5.Y, literal.x,
1310 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1311 ; EG-NEXT:     AND_INT * T5.Z, T5.Y, literal.x,
1312 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1313 ; EG-NEXT:     LSHR * T5.Y, T5.X, literal.x,
1314 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1315 ; EG-NEXT:     AND_INT T5.X, T5.X, literal.x,
1316 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.y,
1317 ; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
1318   %load = load <4 x i16>, ptr addrspace(4) %in
1319   %ext = zext <4 x i16> %load to <4 x i32>
1320   store <4 x i32> %ext, ptr addrspace(1) %out
1321   ret void
1324 ; v4i16 is naturally 8 byte aligned
1325 ; TODO: This should use LD, but for some there are redundant MOVs
1326 ; TODO: We should use ASHR instead of LSHR + BFE
1327 define amdgpu_kernel void @constant_sextload_v4i16_to_v4i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1328 ; GCN-NOHSA-SI-LABEL: constant_sextload_v4i16_to_v4i32:
1329 ; GCN-NOHSA-SI:       ; %bb.0:
1330 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1331 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1332 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1333 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1334 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1335 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s8, s4, 16
1336 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[6:7], s[4:5], 48
1337 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
1338 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
1339 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1340 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1341 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s8
1342 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1343 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s6
1344 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1345 ; GCN-NOHSA-SI-NEXT:    s_endpgm
1347 ; GCN-HSA-LABEL: constant_sextload_v4i16_to_v4i32:
1348 ; GCN-HSA:       ; %bb.0:
1349 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1350 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1351 ; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1352 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1353 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1354 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1355 ; GCN-HSA-NEXT:    s_ashr_i64 s[0:1], s[2:3], 48
1356 ; GCN-HSA-NEXT:    s_ashr_i32 s4, s2, 16
1357 ; GCN-HSA-NEXT:    s_sext_i32_i16 s1, s3
1358 ; GCN-HSA-NEXT:    s_sext_i32_i16 s2, s2
1359 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1360 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s4
1361 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
1362 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
1363 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1364 ; GCN-HSA-NEXT:    s_endpgm
1366 ; GCN-NOHSA-VI-LABEL: constant_sextload_v4i16_to_v4i32:
1367 ; GCN-NOHSA-VI:       ; %bb.0:
1368 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1369 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1370 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1371 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
1372 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
1373 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1374 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s0, s3, 16
1375 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s1, s2, 16
1376 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s3, s3
1377 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s2, s2
1378 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
1379 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
1380 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
1381 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s0
1382 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1383 ; GCN-NOHSA-VI-NEXT:    s_endpgm
1385 ; EG-LABEL: constant_sextload_v4i16_to_v4i32:
1386 ; EG:       ; %bb.0:
1387 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1388 ; EG-NEXT:    TEX 0 @6
1389 ; EG-NEXT:    ALU 10, @9, KC0[CB0:0-32], KC1[]
1390 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T5.X, 1
1391 ; EG-NEXT:    CF_END
1392 ; EG-NEXT:    PAD
1393 ; EG-NEXT:    Fetch clause starting at 6:
1394 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1395 ; EG-NEXT:    ALU clause starting at 8:
1396 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
1397 ; EG-NEXT:    ALU clause starting at 9:
1398 ; EG-NEXT:     BFE_INT * T6.Z, T5.Y, 0.0, literal.x,
1399 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1400 ; EG-NEXT:     BFE_INT T6.X, T5.X, 0.0, literal.x,
1401 ; EG-NEXT:     LSHR * T0.W, T5.Y, literal.x,
1402 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1403 ; EG-NEXT:     BFE_INT T6.W, PV.W, 0.0, literal.x,
1404 ; EG-NEXT:     LSHR * T0.W, T5.X, literal.x,
1405 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1406 ; EG-NEXT:     LSHR T5.X, KC0[2].Y, literal.x,
1407 ; EG-NEXT:     BFE_INT * T6.Y, PS, 0.0, literal.y,
1408 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1409   %load = load <4 x i16>, ptr addrspace(4) %in
1410   %ext = sext <4 x i16> %load to <4 x i32>
1411   store <4 x i32> %ext, ptr addrspace(1) %out
1412   ret void
1415 ; v8i16 is naturally 16 byte aligned
1416 ; TODO: These should use LSHR instead of BFE_UINT
1417 ; TODO: This should use DST, but for some there are redundant MOVs
1418 define amdgpu_kernel void @constant_zextload_v8i16_to_v8i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1419 ; GCN-NOHSA-SI-LABEL: constant_zextload_v8i16_to_v8i32:
1420 ; GCN-NOHSA-SI:       ; %bb.0:
1421 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1422 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1423 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1424 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1425 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1426 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1427 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s8, s5, 16
1428 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s9, s4, 16
1429 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s10, s7, 16
1430 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s11, s6, 16
1431 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
1432 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
1433 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
1434 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
1435 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
1436 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s11
1437 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
1438 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s10
1439 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1440 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1441 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1442 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s9
1443 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1444 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s8
1445 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1446 ; GCN-NOHSA-SI-NEXT:    s_endpgm
1448 ; GCN-HSA-LABEL: constant_zextload_v8i16_to_v8i32:
1449 ; GCN-HSA:       ; %bb.0:
1450 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1451 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1452 ; GCN-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1453 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1454 ; GCN-HSA-NEXT:    s_lshr_b32 s8, s5, 16
1455 ; GCN-HSA-NEXT:    s_lshr_b32 s9, s4, 16
1456 ; GCN-HSA-NEXT:    s_lshr_b32 s2, s7, 16
1457 ; GCN-HSA-NEXT:    s_lshr_b32 s3, s6, 16
1458 ; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
1459 ; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
1460 ; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
1461 ; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
1462 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s2
1463 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
1464 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1465 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1466 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1467 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
1468 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
1469 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1470 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1471 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1472 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
1473 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
1474 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
1475 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s8
1476 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1477 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1478 ; GCN-HSA-NEXT:    s_endpgm
1480 ; GCN-NOHSA-VI-LABEL: constant_zextload_v8i16_to_v8i32:
1481 ; GCN-NOHSA-VI:       ; %bb.0:
1482 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1483 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1484 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1485 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1486 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s8, s5, 16
1487 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
1488 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s9, s4, 16
1489 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
1490 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s7, 16
1491 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s3, s7, 0xffff
1492 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s7, s6, 16
1493 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
1494 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s2
1495 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 16
1496 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
1497 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
1498 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
1499 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
1500 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s7
1501 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
1502 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1503 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
1504 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
1505 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s9
1506 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
1507 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s8
1508 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
1509 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1510 ; GCN-NOHSA-VI-NEXT:    s_endpgm
1512 ; EG-LABEL: constant_zextload_v8i16_to_v8i32:
1513 ; EG:       ; %bb.0:
1514 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1515 ; EG-NEXT:    TEX 0 @6
1516 ; EG-NEXT:    ALU 17, @9, KC0[CB0:0-32], KC1[]
1517 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0
1518 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1
1519 ; EG-NEXT:    CF_END
1520 ; EG-NEXT:    Fetch clause starting at 6:
1521 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
1522 ; EG-NEXT:    ALU clause starting at 8:
1523 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
1524 ; EG-NEXT:    ALU clause starting at 9:
1525 ; EG-NEXT:     LSHR * T8.W, T7.Y, literal.x,
1526 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1527 ; EG-NEXT:     AND_INT * T8.Z, T7.Y, literal.x,
1528 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1529 ; EG-NEXT:     LSHR T8.Y, T7.X, literal.x,
1530 ; EG-NEXT:     LSHR * T9.W, T7.W, literal.x,
1531 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1532 ; EG-NEXT:     AND_INT T8.X, T7.X, literal.x,
1533 ; EG-NEXT:     AND_INT T9.Z, T7.W, literal.x,
1534 ; EG-NEXT:     LSHR * T7.X, KC0[2].Y, literal.y,
1535 ; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
1536 ; EG-NEXT:     LSHR * T9.Y, T7.Z, literal.x,
1537 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1538 ; EG-NEXT:     AND_INT T9.X, T7.Z, literal.x,
1539 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1540 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
1541 ; EG-NEXT:     LSHR * T10.X, PV.W, literal.x,
1542 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1543   %load = load <8 x i16>, ptr addrspace(4) %in
1544   %ext = zext <8 x i16> %load to <8 x i32>
1545   store <8 x i32> %ext, ptr addrspace(1) %out
1546   ret void
1549 ; v8i16 is naturally 16 byte aligned
1550 ; TODO: 4 of these should use ASHR instead of LSHR + BFE_INT
1551 ; TODO: This should use DST, but for some there are redundant MOVs
1552 define amdgpu_kernel void @constant_sextload_v8i16_to_v8i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1553 ; GCN-NOHSA-SI-LABEL: constant_sextload_v8i16_to_v8i32:
1554 ; GCN-NOHSA-SI:       ; %bb.0:
1555 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1556 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1557 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1558 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1559 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1560 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1561 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s8, s5, 16
1562 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s9, s4, 16
1563 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
1564 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s10, s7, 16
1565 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s11, s6, 16
1566 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s7, s7
1567 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s6, s6
1568 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
1569 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
1570 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s11
1571 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
1572 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s10
1573 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1574 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1575 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1576 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s9
1577 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1578 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s8
1579 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1580 ; GCN-NOHSA-SI-NEXT:    s_endpgm
1582 ; GCN-HSA-LABEL: constant_sextload_v8i16_to_v8i32:
1583 ; GCN-HSA:       ; %bb.0:
1584 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1585 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1586 ; GCN-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1587 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1588 ; GCN-HSA-NEXT:    s_ashr_i32 s8, s5, 16
1589 ; GCN-HSA-NEXT:    s_ashr_i32 s9, s4, 16
1590 ; GCN-HSA-NEXT:    s_ashr_i32 s2, s7, 16
1591 ; GCN-HSA-NEXT:    s_ashr_i32 s3, s6, 16
1592 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s2
1593 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
1594 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1595 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1596 ; GCN-HSA-NEXT:    s_sext_i32_i16 s7, s7
1597 ; GCN-HSA-NEXT:    s_sext_i32_i16 s6, s6
1598 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1599 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
1600 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
1601 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1602 ; GCN-HSA-NEXT:    s_sext_i32_i16 s5, s5
1603 ; GCN-HSA-NEXT:    s_sext_i32_i16 s4, s4
1604 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1605 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1606 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
1607 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
1608 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
1609 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s8
1610 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1611 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1612 ; GCN-HSA-NEXT:    s_endpgm
1614 ; GCN-NOHSA-VI-LABEL: constant_sextload_v8i16_to_v8i32:
1615 ; GCN-NOHSA-VI:       ; %bb.0:
1616 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1617 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1618 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1619 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1620 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s8, s5, 16
1621 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s9, s4, 16
1622 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s2, s7, 16
1623 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s3, s6, 16
1624 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s2
1625 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 16
1626 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
1627 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
1628 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s7, s7
1629 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s6, s6
1630 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
1631 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
1632 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
1633 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
1634 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s5, s5
1635 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
1636 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1637 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
1638 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
1639 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s9
1640 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
1641 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s8
1642 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
1643 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1644 ; GCN-NOHSA-VI-NEXT:    s_endpgm
1646 ; EG-LABEL: constant_sextload_v8i16_to_v8i32:
1647 ; EG:       ; %bb.0:
1648 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1649 ; EG-NEXT:    TEX 0 @6
1650 ; EG-NEXT:    ALU 19, @9, KC0[CB0:0-32], KC1[]
1651 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0
1652 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1
1653 ; EG-NEXT:    CF_END
1654 ; EG-NEXT:    Fetch clause starting at 6:
1655 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
1656 ; EG-NEXT:    ALU clause starting at 8:
1657 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
1658 ; EG-NEXT:    ALU clause starting at 9:
1659 ; EG-NEXT:     BFE_INT * T8.Z, T7.Y, 0.0, literal.x,
1660 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1661 ; EG-NEXT:     BFE_INT T8.X, T7.X, 0.0, literal.x,
1662 ; EG-NEXT:     BFE_INT T9.Z, T7.W, 0.0, literal.x,
1663 ; EG-NEXT:     LSHR * T0.W, T7.Y, literal.x,
1664 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1665 ; EG-NEXT:     BFE_INT T9.X, T7.Z, 0.0, literal.x,
1666 ; EG-NEXT:     LSHR T0.Z, T7.W, literal.x,
1667 ; EG-NEXT:     BFE_INT T8.W, PV.W, 0.0, literal.x,
1668 ; EG-NEXT:     LSHR * T0.W, T7.X, literal.x,
1669 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1670 ; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
1671 ; EG-NEXT:     BFE_INT T8.Y, PS, 0.0, literal.y,
1672 ; EG-NEXT:     LSHR T1.Z, T7.Z, literal.y,
1673 ; EG-NEXT:     BFE_INT T9.W, PV.Z, 0.0, literal.y,
1674 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1675 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1676 ; EG-NEXT:     LSHR T10.X, PS, literal.x,
1677 ; EG-NEXT:     BFE_INT * T9.Y, PV.Z, 0.0, literal.y,
1678 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1679   %load = load <8 x i16>, ptr addrspace(4) %in
1680   %ext = sext <8 x i16> %load to <8 x i32>
1681   store <8 x i32> %ext, ptr addrspace(1) %out
1682   ret void
1685 define amdgpu_kernel void @constant_zextload_v16i16_to_v16i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1686 ; GCN-NOHSA-SI-LABEL: constant_zextload_v16i16_to_v16i32:
1687 ; GCN-NOHSA-SI:       ; %bb.0:
1688 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1689 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1690 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1691 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1692 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1693 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1694 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s12, s5, 16
1695 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s13, s4, 16
1696 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s14, s7, 16
1697 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s15, s6, 16
1698 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s16, s9, 16
1699 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s17, s8, 16
1700 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s18, s11, 16
1701 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s19, s10, 16
1702 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
1703 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
1704 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
1705 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
1706 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s9, s9, 0xffff
1707 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s11, s11, 0xffff
1708 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s10, s10, 0xffff
1709 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s8, s8, 0xffff
1710 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
1711 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
1712 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
1713 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s18
1714 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
1715 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1716 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
1717 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s17
1718 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
1719 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s16
1720 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
1721 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1722 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
1723 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s15
1724 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
1725 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s14
1726 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1727 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1728 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1729 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s13
1730 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1731 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s12
1732 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1733 ; GCN-NOHSA-SI-NEXT:    s_endpgm
1735 ; GCN-HSA-LABEL: constant_zextload_v16i16_to_v16i32:
1736 ; GCN-HSA:       ; %bb.0:
1737 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1738 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1739 ; GCN-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1740 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1741 ; GCN-HSA-NEXT:    s_lshr_b32 s12, s5, 16
1742 ; GCN-HSA-NEXT:    s_lshr_b32 s13, s4, 16
1743 ; GCN-HSA-NEXT:    s_lshr_b32 s14, s7, 16
1744 ; GCN-HSA-NEXT:    s_lshr_b32 s15, s6, 16
1745 ; GCN-HSA-NEXT:    s_lshr_b32 s16, s9, 16
1746 ; GCN-HSA-NEXT:    s_lshr_b32 s17, s8, 16
1747 ; GCN-HSA-NEXT:    s_lshr_b32 s2, s11, 16
1748 ; GCN-HSA-NEXT:    s_lshr_b32 s3, s10, 16
1749 ; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
1750 ; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
1751 ; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
1752 ; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
1753 ; GCN-HSA-NEXT:    s_and_b32 s9, s9, 0xffff
1754 ; GCN-HSA-NEXT:    s_and_b32 s8, s8, 0xffff
1755 ; GCN-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
1756 ; GCN-HSA-NEXT:    s_and_b32 s10, s10, 0xffff
1757 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s2
1758 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
1759 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1760 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1761 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1762 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1763 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
1764 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
1765 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s11
1766 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1767 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1768 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1769 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1770 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
1771 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
1772 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s17
1773 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
1774 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s16
1775 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1776 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1777 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1778 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
1779 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s15
1780 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
1781 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s14
1782 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1783 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1784 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1785 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
1786 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s13
1787 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
1788 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s12
1789 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1790 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1791 ; GCN-HSA-NEXT:    s_endpgm
1793 ; GCN-NOHSA-VI-LABEL: constant_zextload_v16i16_to_v16i32:
1794 ; GCN-NOHSA-VI:       ; %bb.0:
1795 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1796 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1797 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1798 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1799 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s12, s5, 16
1800 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
1801 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s13, s4, 16
1802 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
1803 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s14, s7, 16
1804 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s7, s7, 0xffff
1805 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s15, s6, 16
1806 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
1807 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s16, s9, 16
1808 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s9, s9, 0xffff
1809 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s17, s8, 16
1810 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s8, s8, 0xffff
1811 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s11, 16
1812 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s3, s11, 0xffff
1813 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s11, s10, 16
1814 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s10, s10, 0xffff
1815 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s2
1816 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 48
1817 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
1818 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
1819 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
1820 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
1821 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 32
1822 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
1823 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s11
1824 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
1825 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1826 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
1827 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
1828 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 16
1829 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
1830 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s17
1831 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
1832 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s16
1833 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
1834 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1835 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
1836 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
1837 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s15
1838 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
1839 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s14
1840 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
1841 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1842 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
1843 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
1844 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s13
1845 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
1846 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s12
1847 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
1848 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1849 ; GCN-NOHSA-VI-NEXT:    s_endpgm
1851 ; EG-LABEL: constant_zextload_v16i16_to_v16i32:
1852 ; EG:       ; %bb.0:
1853 ; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
1854 ; EG-NEXT:    TEX 1 @8
1855 ; EG-NEXT:    ALU 35, @13, KC0[CB0:0-32], KC1[]
1856 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T18.X, 0
1857 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T11.X, 0
1858 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T16.X, 0
1859 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T12.X, 1
1860 ; EG-NEXT:    CF_END
1861 ; EG-NEXT:    Fetch clause starting at 8:
1862 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 0, #1
1863 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 16, #1
1864 ; EG-NEXT:    ALU clause starting at 12:
1865 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
1866 ; EG-NEXT:    ALU clause starting at 13:
1867 ; EG-NEXT:     LSHR * T13.W, T12.Y, literal.x,
1868 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1869 ; EG-NEXT:     AND_INT * T13.Z, T12.Y, literal.x,
1870 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1871 ; EG-NEXT:     LSHR T13.Y, T12.X, literal.x,
1872 ; EG-NEXT:     LSHR * T14.W, T12.W, literal.x,
1873 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1874 ; EG-NEXT:     AND_INT T13.X, T12.X, literal.x,
1875 ; EG-NEXT:     AND_INT T14.Z, T12.W, literal.x,
1876 ; EG-NEXT:     LSHR * T12.X, KC0[2].Y, literal.y,
1877 ; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
1878 ; EG-NEXT:     LSHR T14.Y, T12.Z, literal.x,
1879 ; EG-NEXT:     LSHR * T15.W, T11.Y, literal.x,
1880 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1881 ; EG-NEXT:     AND_INT T14.X, T12.Z, literal.x,
1882 ; EG-NEXT:     AND_INT T15.Z, T11.Y, literal.x,
1883 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1884 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
1885 ; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
1886 ; EG-NEXT:     LSHR T15.Y, T11.X, literal.y,
1887 ; EG-NEXT:     LSHR T17.W, T11.W, literal.y,
1888 ; EG-NEXT:     AND_INT * T15.X, T11.X, literal.z,
1889 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1890 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1891 ; EG-NEXT:     AND_INT T17.Z, T11.W, literal.x,
1892 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1893 ; EG-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
1894 ; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
1895 ; EG-NEXT:     LSHR T17.Y, T11.Z, literal.y,
1896 ; EG-NEXT:     AND_INT * T17.X, T11.Z, literal.z,
1897 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1898 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1899 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
1900 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
1901 ; EG-NEXT:     LSHR * T18.X, PV.W, literal.x,
1902 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1903   %load = load <16 x i16>, ptr addrspace(4) %in
1904   %ext = zext <16 x i16> %load to <16 x i32>
1905   store <16 x i32> %ext, ptr addrspace(1) %out
1906   ret void
1909 define amdgpu_kernel void @constant_sextload_v16i16_to_v16i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1910 ; GCN-NOHSA-SI-LABEL: constant_sextload_v16i16_to_v16i32:
1911 ; GCN-NOHSA-SI:       ; %bb.0:
1912 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1913 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1914 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1915 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1916 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1917 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1918 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s12, s5, 16
1919 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s13, s4, 16
1920 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
1921 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
1922 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s14, s7, 16
1923 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s15, s6, 16
1924 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s7, s7
1925 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s6, s6
1926 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s16, s9, 16
1927 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s17, s8, 16
1928 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s9, s9
1929 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s18, s11, 16
1930 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s19, s10, 16
1931 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s11, s11
1932 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s10, s10
1933 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s8, s8
1934 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
1935 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
1936 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
1937 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s18
1938 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
1939 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1940 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
1941 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s17
1942 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
1943 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s16
1944 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
1945 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1946 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
1947 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s15
1948 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
1949 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s14
1950 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1951 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1952 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1953 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s13
1954 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1955 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s12
1956 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1957 ; GCN-NOHSA-SI-NEXT:    s_endpgm
1959 ; GCN-HSA-LABEL: constant_sextload_v16i16_to_v16i32:
1960 ; GCN-HSA:       ; %bb.0:
1961 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1962 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1963 ; GCN-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1964 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1965 ; GCN-HSA-NEXT:    s_ashr_i32 s12, s5, 16
1966 ; GCN-HSA-NEXT:    s_ashr_i32 s13, s4, 16
1967 ; GCN-HSA-NEXT:    s_ashr_i32 s14, s7, 16
1968 ; GCN-HSA-NEXT:    s_ashr_i32 s15, s6, 16
1969 ; GCN-HSA-NEXT:    s_ashr_i32 s16, s9, 16
1970 ; GCN-HSA-NEXT:    s_ashr_i32 s17, s8, 16
1971 ; GCN-HSA-NEXT:    s_ashr_i32 s2, s11, 16
1972 ; GCN-HSA-NEXT:    s_ashr_i32 s3, s10, 16
1973 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s2
1974 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
1975 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1976 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1977 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1978 ; GCN-HSA-NEXT:    s_sext_i32_i16 s11, s11
1979 ; GCN-HSA-NEXT:    s_sext_i32_i16 s10, s10
1980 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1981 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
1982 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
1983 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s11
1984 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1985 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1986 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1987 ; GCN-HSA-NEXT:    s_sext_i32_i16 s9, s9
1988 ; GCN-HSA-NEXT:    s_sext_i32_i16 s8, s8
1989 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1990 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
1991 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
1992 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s17
1993 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
1994 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s16
1995 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1996 ; GCN-HSA-NEXT:    s_sext_i32_i16 s7, s7
1997 ; GCN-HSA-NEXT:    s_sext_i32_i16 s6, s6
1998 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1999 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2000 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
2001 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s15
2002 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
2003 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s14
2004 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2005 ; GCN-HSA-NEXT:    s_sext_i32_i16 s5, s5
2006 ; GCN-HSA-NEXT:    s_sext_i32_i16 s4, s4
2007 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2008 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2009 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
2010 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s13
2011 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
2012 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s12
2013 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2014 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2015 ; GCN-HSA-NEXT:    s_endpgm
2017 ; GCN-NOHSA-VI-LABEL: constant_sextload_v16i16_to_v16i32:
2018 ; GCN-NOHSA-VI:       ; %bb.0:
2019 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
2020 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2021 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
2022 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2023 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s12, s5, 16
2024 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s13, s4, 16
2025 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s14, s7, 16
2026 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s15, s6, 16
2027 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s16, s9, 16
2028 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s17, s8, 16
2029 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s2, s11, 16
2030 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s3, s10, 16
2031 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s2
2032 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 48
2033 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
2034 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
2035 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
2036 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s11, s11
2037 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s10, s10
2038 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
2039 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 32
2040 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
2041 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
2042 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
2043 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2044 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
2045 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s9, s9
2046 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s8, s8
2047 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
2048 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 16
2049 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
2050 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s17
2051 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
2052 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s16
2053 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
2054 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s7, s7
2055 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s6, s6
2056 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2057 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
2058 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
2059 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s15
2060 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
2061 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s14
2062 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
2063 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s5, s5
2064 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
2065 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2066 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2067 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
2068 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s13
2069 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
2070 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s12
2071 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2072 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2073 ; GCN-NOHSA-VI-NEXT:    s_endpgm
2075 ; EG-LABEL: constant_sextload_v16i16_to_v16i32:
2076 ; EG:       ; %bb.0:
2077 ; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
2078 ; EG-NEXT:    TEX 1 @8
2079 ; EG-NEXT:    ALU 39, @13, KC0[CB0:0-32], KC1[]
2080 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T12.X, 0
2081 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T11.X, 0
2082 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T14.X, 0
2083 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T13.X, 1
2084 ; EG-NEXT:    CF_END
2085 ; EG-NEXT:    Fetch clause starting at 8:
2086 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
2087 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
2088 ; EG-NEXT:    ALU clause starting at 12:
2089 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
2090 ; EG-NEXT:    ALU clause starting at 13:
2091 ; EG-NEXT:     LSHR T13.X, KC0[2].Y, literal.x,
2092 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2093 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2094 ; EG-NEXT:     LSHR T14.X, PV.W, literal.x,
2095 ; EG-NEXT:     BFE_INT * T15.Z, T11.Y, 0.0, literal.y,
2096 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2097 ; EG-NEXT:     BFE_INT T15.X, T11.X, 0.0, literal.x,
2098 ; EG-NEXT:     LSHR T0.Y, T12.W, literal.x,
2099 ; EG-NEXT:     BFE_INT T16.Z, T11.W, 0.0, literal.x, BS:VEC_120/SCL_212
2100 ; EG-NEXT:     LSHR T0.W, T12.Y, literal.x,
2101 ; EG-NEXT:     LSHR * T1.W, T11.Y, literal.x,
2102 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2103 ; EG-NEXT:     BFE_INT T16.X, T11.Z, 0.0, literal.x,
2104 ; EG-NEXT:     LSHR T1.Y, T11.W, literal.x,
2105 ; EG-NEXT:     BFE_INT T17.Z, T12.Y, 0.0, literal.x,
2106 ; EG-NEXT:     BFE_INT T15.W, PS, 0.0, literal.x,
2107 ; EG-NEXT:     LSHR * T1.W, T11.X, literal.x,
2108 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2109 ; EG-NEXT:     BFE_INT T17.X, T12.X, 0.0, literal.x,
2110 ; EG-NEXT:     BFE_INT T15.Y, PS, 0.0, literal.x,
2111 ; EG-NEXT:     BFE_INT T18.Z, T12.W, 0.0, literal.x,
2112 ; EG-NEXT:     BFE_INT T16.W, PV.Y, 0.0, literal.x,
2113 ; EG-NEXT:     LSHR * T1.W, T11.Z, literal.x,
2114 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2115 ; EG-NEXT:     BFE_INT T18.X, T12.Z, 0.0, literal.x,
2116 ; EG-NEXT:     BFE_INT T16.Y, PS, 0.0, literal.x,
2117 ; EG-NEXT:     LSHR T0.Z, T12.X, literal.x,
2118 ; EG-NEXT:     BFE_INT T17.W, T0.W, 0.0, literal.x,
2119 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2120 ; EG-NEXT:    16(2.242078e-44), 32(4.484155e-44)
2121 ; EG-NEXT:     LSHR T11.X, PS, literal.x,
2122 ; EG-NEXT:     BFE_INT T17.Y, PV.Z, 0.0, literal.y,
2123 ; EG-NEXT:     LSHR T0.Z, T12.Z, literal.y,
2124 ; EG-NEXT:     BFE_INT T18.W, T0.Y, 0.0, literal.y,
2125 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
2126 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2127 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
2128 ; EG-NEXT:     LSHR T12.X, PS, literal.x,
2129 ; EG-NEXT:     BFE_INT * T18.Y, PV.Z, 0.0, literal.y,
2130 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2131   %load = load <16 x i16>, ptr addrspace(4) %in
2132   %ext = sext <16 x i16> %load to <16 x i32>
2133   store <16 x i32> %ext, ptr addrspace(1) %out
2134   ret void
2137 define amdgpu_kernel void @constant_zextload_v32i16_to_v32i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
2138 ; GCN-NOHSA-SI-LABEL: constant_zextload_v32i16_to_v32i32:
2139 ; GCN-NOHSA-SI:       ; %bb.0:
2140 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
2141 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2142 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2143 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s19, 0xf000
2144 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s18, -1
2145 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2146 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s20, s1, 16
2147 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s21, s0, 16
2148 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s22, s3, 16
2149 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s23, s2, 16
2150 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s24, s5, 16
2151 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s25, s4, 16
2152 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s26, s7, 16
2153 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s27, s6, 16
2154 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s28, s9, 16
2155 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s29, s8, 16
2156 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s30, s11, 16
2157 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s31, s10, 16
2158 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s33, s13, 16
2159 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s34, s12, 16
2160 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s35, s15, 16
2161 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s36, s14, 16
2162 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s1, s1, 0xffff
2163 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s0, s0, 0xffff
2164 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s3, s3, 0xffff
2165 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s2, s2, 0xffff
2166 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
2167 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
2168 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
2169 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
2170 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s9, s9, 0xffff
2171 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s8, s8, 0xffff
2172 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s11, s11, 0xffff
2173 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s10, s10, 0xffff
2174 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s13, s13, 0xffff
2175 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s15, s15, 0xffff
2176 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s14, s14, 0xffff
2177 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s12, s12, 0xffff
2178 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
2179 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s36
2180 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s15
2181 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s35
2182 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:112
2183 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2184 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
2185 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s34
2186 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s13
2187 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s33
2188 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:96
2189 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2190 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
2191 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s31
2192 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
2193 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s30
2194 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:80
2195 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2196 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
2197 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s29
2198 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
2199 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s28
2200 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:64
2201 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2202 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
2203 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s27
2204 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
2205 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s26
2206 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:48
2207 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2208 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
2209 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s25
2210 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
2211 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s24
2212 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:32
2213 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2214 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s2
2215 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s23
2216 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s3
2217 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s22
2218 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:16
2219 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2220 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s0
2221 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s21
2222 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s1
2223 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s20
2224 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0
2225 ; GCN-NOHSA-SI-NEXT:    s_endpgm
2227 ; GCN-HSA-LABEL: constant_zextload_v32i16_to_v32i32:
2228 ; GCN-HSA:       ; %bb.0:
2229 ; GCN-HSA-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
2230 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2231 ; GCN-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2232 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2233 ; GCN-HSA-NEXT:    s_lshr_b32 s18, s1, 16
2234 ; GCN-HSA-NEXT:    s_lshr_b32 s19, s0, 16
2235 ; GCN-HSA-NEXT:    s_lshr_b32 s20, s3, 16
2236 ; GCN-HSA-NEXT:    s_lshr_b32 s21, s2, 16
2237 ; GCN-HSA-NEXT:    s_lshr_b32 s22, s5, 16
2238 ; GCN-HSA-NEXT:    s_lshr_b32 s23, s4, 16
2239 ; GCN-HSA-NEXT:    s_lshr_b32 s24, s7, 16
2240 ; GCN-HSA-NEXT:    s_lshr_b32 s25, s6, 16
2241 ; GCN-HSA-NEXT:    s_lshr_b32 s26, s9, 16
2242 ; GCN-HSA-NEXT:    s_lshr_b32 s27, s8, 16
2243 ; GCN-HSA-NEXT:    s_lshr_b32 s28, s11, 16
2244 ; GCN-HSA-NEXT:    s_lshr_b32 s29, s10, 16
2245 ; GCN-HSA-NEXT:    s_lshr_b32 s30, s13, 16
2246 ; GCN-HSA-NEXT:    s_lshr_b32 s31, s12, 16
2247 ; GCN-HSA-NEXT:    s_lshr_b32 s33, s15, 16
2248 ; GCN-HSA-NEXT:    s_lshr_b32 s34, s14, 16
2249 ; GCN-HSA-NEXT:    s_and_b32 s35, s1, 0xffff
2250 ; GCN-HSA-NEXT:    s_and_b32 s36, s0, 0xffff
2251 ; GCN-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
2252 ; GCN-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
2253 ; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
2254 ; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
2255 ; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
2256 ; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
2257 ; GCN-HSA-NEXT:    s_and_b32 s9, s9, 0xffff
2258 ; GCN-HSA-NEXT:    s_and_b32 s8, s8, 0xffff
2259 ; GCN-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
2260 ; GCN-HSA-NEXT:    s_and_b32 s10, s10, 0xffff
2261 ; GCN-HSA-NEXT:    s_and_b32 s13, s13, 0xffff
2262 ; GCN-HSA-NEXT:    s_and_b32 s12, s12, 0xffff
2263 ; GCN-HSA-NEXT:    s_and_b32 s0, s15, 0xffff
2264 ; GCN-HSA-NEXT:    s_and_b32 s1, s14, 0xffff
2265 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
2266 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x70
2267 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s1
2268 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2269 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2270 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2271 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x60
2272 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s34
2273 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s33
2274 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2275 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2276 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2277 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2278 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x50
2279 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s12
2280 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s31
2281 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s13
2282 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s30
2283 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2284 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2285 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2286 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2287 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 64
2288 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
2289 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s29
2290 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s11
2291 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s28
2292 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2293 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2294 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2295 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2296 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 48
2297 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
2298 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s27
2299 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
2300 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s26
2301 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2302 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2303 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2304 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2305 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 32
2306 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
2307 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s25
2308 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
2309 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s24
2310 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2311 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2312 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2313 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2314 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 16
2315 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
2316 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s23
2317 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
2318 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s22
2319 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2320 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2321 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2322 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
2323 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
2324 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s3
2325 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s20
2326 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2327 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2328 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
2329 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s36
2330 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s19
2331 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s35
2332 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s18
2333 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s17
2334 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2335 ; GCN-HSA-NEXT:    s_endpgm
2337 ; GCN-NOHSA-VI-LABEL: constant_zextload_v32i16_to_v32i32:
2338 ; GCN-NOHSA-VI:       ; %bb.0:
2339 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
2340 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2341 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2342 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2343 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s18, s1, 16
2344 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s19, s1, 0xffff
2345 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s20, s0, 16
2346 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s21, s0, 0xffff
2347 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s22, s3, 16
2348 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s3, s3, 0xffff
2349 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s23, s2, 16
2350 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s2, s2, 0xffff
2351 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s24, s5, 16
2352 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
2353 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s25, s4, 16
2354 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
2355 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s26, s7, 16
2356 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s7, s7, 0xffff
2357 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s27, s6, 16
2358 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
2359 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s28, s9, 16
2360 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s9, s9, 0xffff
2361 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s29, s8, 16
2362 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s8, s8, 0xffff
2363 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s30, s11, 16
2364 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s11, s11, 0xffff
2365 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s31, s10, 16
2366 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s10, s10, 0xffff
2367 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s33, s13, 16
2368 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s13, s13, 0xffff
2369 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s34, s12, 16
2370 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s12, s12, 0xffff
2371 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s0, s15, 16
2372 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s1, s15, 0xffff
2373 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s15, s14, 16
2374 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s14, s14, 0xffff
2375 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s0
2376 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 0x70
2377 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s1
2378 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2379 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2380 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2381 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 0x60
2382 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
2383 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s15
2384 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2385 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2386 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2387 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2388 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 0x50
2389 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
2390 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s34
2391 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s13
2392 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s33
2393 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2394 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2395 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2396 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2397 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 64
2398 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
2399 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s31
2400 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
2401 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s30
2402 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2403 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2404 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2405 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2406 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 48
2407 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
2408 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s29
2409 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
2410 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s28
2411 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2412 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2413 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2414 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2415 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 32
2416 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
2417 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s27
2418 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
2419 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s26
2420 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2421 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2422 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2423 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2424 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 16
2425 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
2426 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s25
2427 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
2428 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s24
2429 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2430 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2431 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2432 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
2433 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s23
2434 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
2435 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s22
2436 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2437 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2438 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s16
2439 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s21
2440 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s20
2441 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s19
2442 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s18
2443 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s17
2444 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2445 ; GCN-NOHSA-VI-NEXT:    s_endpgm
2447 ; EG-LABEL: constant_zextload_v32i16_to_v32i32:
2448 ; EG:       ; %bb.0:
2449 ; EG-NEXT:    ALU 0, @20, KC0[CB0:0-32], KC1[]
2450 ; EG-NEXT:    TEX 3 @12
2451 ; EG-NEXT:    ALU 71, @21, KC0[CB0:0-32], KC1[]
2452 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T34.X, 0
2453 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T21.X, 0
2454 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T32.X, 0
2455 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T22.X, 0
2456 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T29.X, 0
2457 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T19.X, 0
2458 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T26.X, 0
2459 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T20.X, 1
2460 ; EG-NEXT:    CF_END
2461 ; EG-NEXT:    Fetch clause starting at 12:
2462 ; EG-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 0, #1
2463 ; EG-NEXT:     VTX_READ_128 T21.XYZW, T19.X, 48, #1
2464 ; EG-NEXT:     VTX_READ_128 T22.XYZW, T19.X, 32, #1
2465 ; EG-NEXT:     VTX_READ_128 T19.XYZW, T19.X, 16, #1
2466 ; EG-NEXT:    ALU clause starting at 20:
2467 ; EG-NEXT:     MOV * T19.X, KC0[2].Z,
2468 ; EG-NEXT:    ALU clause starting at 21:
2469 ; EG-NEXT:     LSHR * T23.W, T20.Y, literal.x,
2470 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2471 ; EG-NEXT:     AND_INT * T23.Z, T20.Y, literal.x,
2472 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2473 ; EG-NEXT:     LSHR T23.Y, T20.X, literal.x,
2474 ; EG-NEXT:     LSHR * T24.W, T20.W, literal.x,
2475 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2476 ; EG-NEXT:     AND_INT T23.X, T20.X, literal.x,
2477 ; EG-NEXT:     AND_INT T24.Z, T20.W, literal.x,
2478 ; EG-NEXT:     LSHR * T20.X, KC0[2].Y, literal.y,
2479 ; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
2480 ; EG-NEXT:     LSHR T24.Y, T20.Z, literal.x,
2481 ; EG-NEXT:     LSHR * T25.W, T19.Y, literal.x,
2482 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2483 ; EG-NEXT:     AND_INT T24.X, T20.Z, literal.x,
2484 ; EG-NEXT:     AND_INT T25.Z, T19.Y, literal.x,
2485 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2486 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
2487 ; EG-NEXT:     LSHR T26.X, PV.W, literal.x,
2488 ; EG-NEXT:     LSHR T25.Y, T19.X, literal.y,
2489 ; EG-NEXT:     LSHR T27.W, T19.W, literal.y,
2490 ; EG-NEXT:     AND_INT * T25.X, T19.X, literal.z,
2491 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2492 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2493 ; EG-NEXT:     AND_INT T27.Z, T19.W, literal.x,
2494 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2495 ; EG-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
2496 ; EG-NEXT:     LSHR T19.X, PV.W, literal.x,
2497 ; EG-NEXT:     LSHR T27.Y, T19.Z, literal.y,
2498 ; EG-NEXT:     LSHR T28.W, T22.Y, literal.y,
2499 ; EG-NEXT:     AND_INT * T27.X, T19.Z, literal.z,
2500 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2501 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2502 ; EG-NEXT:     AND_INT T28.Z, T22.Y, literal.x,
2503 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2504 ; EG-NEXT:    65535(9.183409e-41), 48(6.726233e-44)
2505 ; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
2506 ; EG-NEXT:     LSHR T28.Y, T22.X, literal.y,
2507 ; EG-NEXT:     LSHR T30.W, T22.W, literal.y,
2508 ; EG-NEXT:     AND_INT * T28.X, T22.X, literal.z,
2509 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2510 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2511 ; EG-NEXT:     AND_INT T30.Z, T22.W, literal.x,
2512 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2513 ; EG-NEXT:    65535(9.183409e-41), 64(8.968310e-44)
2514 ; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
2515 ; EG-NEXT:     LSHR T30.Y, T22.Z, literal.y,
2516 ; EG-NEXT:     LSHR T31.W, T21.Y, literal.y,
2517 ; EG-NEXT:     AND_INT * T30.X, T22.Z, literal.z,
2518 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2519 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2520 ; EG-NEXT:     AND_INT T31.Z, T21.Y, literal.x,
2521 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2522 ; EG-NEXT:    65535(9.183409e-41), 80(1.121039e-43)
2523 ; EG-NEXT:     LSHR T32.X, PV.W, literal.x,
2524 ; EG-NEXT:     LSHR T31.Y, T21.X, literal.y,
2525 ; EG-NEXT:     LSHR T33.W, T21.W, literal.y,
2526 ; EG-NEXT:     AND_INT * T31.X, T21.X, literal.z,
2527 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2528 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2529 ; EG-NEXT:     AND_INT T33.Z, T21.W, literal.x,
2530 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2531 ; EG-NEXT:    65535(9.183409e-41), 96(1.345247e-43)
2532 ; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
2533 ; EG-NEXT:     LSHR T33.Y, T21.Z, literal.y,
2534 ; EG-NEXT:     AND_INT * T33.X, T21.Z, literal.z,
2535 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2536 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2537 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
2538 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
2539 ; EG-NEXT:     LSHR * T34.X, PV.W, literal.x,
2540 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2541   %load = load <32 x i16>, ptr addrspace(4) %in
2542   %ext = zext <32 x i16> %load to <32 x i32>
2543   store <32 x i32> %ext, ptr addrspace(1) %out
2544   ret void
2547 define amdgpu_kernel void @constant_sextload_v32i16_to_v32i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
2548 ; GCN-NOHSA-SI-LABEL: constant_sextload_v32i16_to_v32i32:
2549 ; GCN-NOHSA-SI:       ; %bb.0:
2550 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
2551 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2552 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2553 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s19, 0xf000
2554 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s18, -1
2555 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2556 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s20, s1, 16
2557 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s21, s0, 16
2558 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s1, s1
2559 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s0, s0
2560 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s22, s3, 16
2561 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s23, s2, 16
2562 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s3, s3
2563 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s2, s2
2564 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s24, s5, 16
2565 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s25, s4, 16
2566 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
2567 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
2568 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s26, s7, 16
2569 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s27, s6, 16
2570 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s7, s7
2571 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s6, s6
2572 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s28, s9, 16
2573 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s29, s8, 16
2574 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s9, s9
2575 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s8, s8
2576 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s30, s11, 16
2577 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s31, s10, 16
2578 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s11, s11
2579 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s10, s10
2580 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s33, s13, 16
2581 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s34, s12, 16
2582 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s13, s13
2583 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s35, s15, 16
2584 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s36, s14, 16
2585 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s15, s15
2586 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s14, s14
2587 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s12, s12
2588 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
2589 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s36
2590 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s15
2591 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s35
2592 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:112
2593 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2594 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
2595 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s34
2596 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s13
2597 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s33
2598 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:96
2599 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2600 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
2601 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s31
2602 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
2603 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s30
2604 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:80
2605 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2606 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
2607 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s29
2608 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
2609 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s28
2610 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:64
2611 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2612 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
2613 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s27
2614 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
2615 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s26
2616 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:48
2617 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2618 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
2619 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s25
2620 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
2621 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s24
2622 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:32
2623 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2624 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s2
2625 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s23
2626 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s3
2627 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s22
2628 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:16
2629 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2630 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s0
2631 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s21
2632 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s1
2633 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s20
2634 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0
2635 ; GCN-NOHSA-SI-NEXT:    s_endpgm
2637 ; GCN-HSA-LABEL: constant_sextload_v32i16_to_v32i32:
2638 ; GCN-HSA:       ; %bb.0:
2639 ; GCN-HSA-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
2640 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2641 ; GCN-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2642 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2643 ; GCN-HSA-NEXT:    s_ashr_i32 s18, s1, 16
2644 ; GCN-HSA-NEXT:    s_ashr_i32 s19, s0, 16
2645 ; GCN-HSA-NEXT:    s_sext_i32_i16 s20, s1
2646 ; GCN-HSA-NEXT:    s_sext_i32_i16 s21, s0
2647 ; GCN-HSA-NEXT:    s_ashr_i32 s22, s3, 16
2648 ; GCN-HSA-NEXT:    s_ashr_i32 s23, s2, 16
2649 ; GCN-HSA-NEXT:    s_ashr_i32 s24, s5, 16
2650 ; GCN-HSA-NEXT:    s_ashr_i32 s25, s4, 16
2651 ; GCN-HSA-NEXT:    s_ashr_i32 s26, s7, 16
2652 ; GCN-HSA-NEXT:    s_ashr_i32 s27, s6, 16
2653 ; GCN-HSA-NEXT:    s_ashr_i32 s28, s9, 16
2654 ; GCN-HSA-NEXT:    s_ashr_i32 s29, s8, 16
2655 ; GCN-HSA-NEXT:    s_ashr_i32 s30, s11, 16
2656 ; GCN-HSA-NEXT:    s_ashr_i32 s31, s10, 16
2657 ; GCN-HSA-NEXT:    s_ashr_i32 s33, s13, 16
2658 ; GCN-HSA-NEXT:    s_ashr_i32 s34, s12, 16
2659 ; GCN-HSA-NEXT:    s_ashr_i32 s0, s15, 16
2660 ; GCN-HSA-NEXT:    s_ashr_i32 s1, s14, 16
2661 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
2662 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x70
2663 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
2664 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2665 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2666 ; GCN-HSA-NEXT:    s_sext_i32_i16 s15, s15
2667 ; GCN-HSA-NEXT:    s_sext_i32_i16 s14, s14
2668 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2669 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x60
2670 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s14
2671 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s15
2672 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2673 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2674 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2675 ; GCN-HSA-NEXT:    s_sext_i32_i16 s13, s13
2676 ; GCN-HSA-NEXT:    s_sext_i32_i16 s12, s12
2677 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2678 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x50
2679 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s12
2680 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s34
2681 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s13
2682 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s33
2683 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2684 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2685 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2686 ; GCN-HSA-NEXT:    s_sext_i32_i16 s11, s11
2687 ; GCN-HSA-NEXT:    s_sext_i32_i16 s10, s10
2688 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2689 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 64
2690 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
2691 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s31
2692 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s11
2693 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s30
2694 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2695 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2696 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2697 ; GCN-HSA-NEXT:    s_sext_i32_i16 s9, s9
2698 ; GCN-HSA-NEXT:    s_sext_i32_i16 s8, s8
2699 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2700 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 48
2701 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
2702 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s29
2703 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
2704 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s28
2705 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2706 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2707 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2708 ; GCN-HSA-NEXT:    s_sext_i32_i16 s7, s7
2709 ; GCN-HSA-NEXT:    s_sext_i32_i16 s6, s6
2710 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2711 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 32
2712 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
2713 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s27
2714 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
2715 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s26
2716 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2717 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2718 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2719 ; GCN-HSA-NEXT:    s_sext_i32_i16 s5, s5
2720 ; GCN-HSA-NEXT:    s_sext_i32_i16 s4, s4
2721 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2722 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 16
2723 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
2724 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s25
2725 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
2726 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s24
2727 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
2728 ; GCN-HSA-NEXT:    s_sext_i32_i16 s3, s3
2729 ; GCN-HSA-NEXT:    s_sext_i32_i16 s2, s2
2730 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2731 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2732 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
2733 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s23
2734 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s3
2735 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s22
2736 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2737 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2738 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
2739 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s21
2740 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s19
2741 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s20
2742 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s18
2743 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s17
2744 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2745 ; GCN-HSA-NEXT:    s_endpgm
2747 ; GCN-NOHSA-VI-LABEL: constant_sextload_v32i16_to_v32i32:
2748 ; GCN-NOHSA-VI:       ; %bb.0:
2749 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
2750 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2751 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2752 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2753 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s18, s1, 16
2754 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s19, s0, 16
2755 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s20, s1
2756 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s21, s0
2757 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s22, s3, 16
2758 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s23, s2, 16
2759 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s24, s5, 16
2760 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s25, s4, 16
2761 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s26, s7, 16
2762 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s27, s6, 16
2763 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s28, s9, 16
2764 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s29, s8, 16
2765 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s30, s11, 16
2766 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s31, s10, 16
2767 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s33, s13, 16
2768 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s34, s12, 16
2769 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s0, s15, 16
2770 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s1, s14, 16
2771 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s0
2772 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 0x70
2773 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
2774 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2775 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2776 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s15, s15
2777 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s14, s14
2778 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2779 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 0x60
2780 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
2781 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s15
2782 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2783 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2784 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2785 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s13, s13
2786 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s12, s12
2787 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2788 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 0x50
2789 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
2790 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s34
2791 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s13
2792 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s33
2793 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2794 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2795 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2796 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s11, s11
2797 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s10, s10
2798 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2799 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 64
2800 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
2801 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s31
2802 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
2803 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s30
2804 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2805 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2806 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2807 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s9, s9
2808 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s8, s8
2809 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2810 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 48
2811 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
2812 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s29
2813 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
2814 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s28
2815 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2816 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2817 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2818 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s7, s7
2819 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s6, s6
2820 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2821 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 32
2822 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
2823 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s27
2824 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
2825 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s26
2826 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2827 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2828 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2829 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s5, s5
2830 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
2831 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2832 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s16, 16
2833 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
2834 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s25
2835 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
2836 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s24
2837 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s17, 0
2838 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s3, s3
2839 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s2, s2
2840 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2841 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
2842 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
2843 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s23
2844 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
2845 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s22
2846 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
2847 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2848 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s16
2849 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s21
2850 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s19
2851 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s20
2852 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s18
2853 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s17
2854 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2855 ; GCN-NOHSA-VI-NEXT:    s_endpgm
2857 ; EG-LABEL: constant_sextload_v32i16_to_v32i32:
2858 ; EG:       ; %bb.0:
2859 ; EG-NEXT:    ALU 8, @20, KC0[CB0:0-32], KC1[]
2860 ; EG-NEXT:    TEX 3 @12
2861 ; EG-NEXT:    ALU 73, @29, KC0[CB0:0-32], KC1[]
2862 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T24.X, 0
2863 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T22.X, 0
2864 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T28.X, 0
2865 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T27.X, 0
2866 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T26.X, 0
2867 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T21.X, 0
2868 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T20.X, 0
2869 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T19.X, 1
2870 ; EG-NEXT:    CF_END
2871 ; EG-NEXT:    Fetch clause starting at 12:
2872 ; EG-NEXT:     VTX_READ_128 T23.XYZW, T22.X, 16, #1
2873 ; EG-NEXT:     VTX_READ_128 T24.XYZW, T22.X, 32, #1
2874 ; EG-NEXT:     VTX_READ_128 T25.XYZW, T22.X, 0, #1
2875 ; EG-NEXT:     VTX_READ_128 T22.XYZW, T22.X, 48, #1
2876 ; EG-NEXT:    ALU clause starting at 20:
2877 ; EG-NEXT:     LSHR T19.X, KC0[2].Y, literal.x,
2878 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2879 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2880 ; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
2881 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2882 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
2883 ; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
2884 ; EG-NEXT:     MOV * T22.X, KC0[2].Z,
2885 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2886 ; EG-NEXT:    ALU clause starting at 29:
2887 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
2888 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
2889 ; EG-NEXT:     LSHR T26.X, PV.W, literal.x,
2890 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2891 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
2892 ; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
2893 ; EG-NEXT:     LSHR T0.W, T22.W, literal.y,
2894 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
2895 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2896 ; EG-NEXT:    80(1.121039e-43), 0(0.000000e+00)
2897 ; EG-NEXT:     LSHR T28.X, PS, literal.x,
2898 ; EG-NEXT:     LSHR T0.Y, T22.Y, literal.y,
2899 ; EG-NEXT:     BFE_INT T29.Z, T25.Y, 0.0, literal.y, BS:VEC_120/SCL_212
2900 ; EG-NEXT:     LSHR T1.W, T24.W, literal.y,
2901 ; EG-NEXT:     LSHR * T2.W, T24.Y, literal.y,
2902 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2903 ; EG-NEXT:     BFE_INT T29.X, T25.X, 0.0, literal.x,
2904 ; EG-NEXT:     LSHR T1.Y, T23.W, literal.x,
2905 ; EG-NEXT:     BFE_INT T30.Z, T25.W, 0.0, literal.x, BS:VEC_120/SCL_212
2906 ; EG-NEXT:     LSHR T3.W, T23.Y, literal.x,
2907 ; EG-NEXT:     LSHR * T4.W, T25.Y, literal.x,
2908 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2909 ; EG-NEXT:     BFE_INT T30.X, T25.Z, 0.0, literal.x,
2910 ; EG-NEXT:     LSHR T2.Y, T25.W, literal.x,
2911 ; EG-NEXT:     BFE_INT T31.Z, T23.Y, 0.0, literal.x,
2912 ; EG-NEXT:     BFE_INT T29.W, PS, 0.0, literal.x,
2913 ; EG-NEXT:     LSHR * T4.W, T25.X, literal.x,
2914 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2915 ; EG-NEXT:     BFE_INT T31.X, T23.X, 0.0, literal.x,
2916 ; EG-NEXT:     BFE_INT T29.Y, PS, 0.0, literal.x,
2917 ; EG-NEXT:     BFE_INT T32.Z, T23.W, 0.0, literal.x,
2918 ; EG-NEXT:     BFE_INT T30.W, PV.Y, 0.0, literal.x,
2919 ; EG-NEXT:     LSHR * T4.W, T25.Z, literal.x,
2920 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2921 ; EG-NEXT:     BFE_INT T32.X, T23.Z, 0.0, literal.x,
2922 ; EG-NEXT:     BFE_INT T30.Y, PS, 0.0, literal.x,
2923 ; EG-NEXT:     BFE_INT T25.Z, T24.Y, 0.0, literal.x,
2924 ; EG-NEXT:     BFE_INT T31.W, T3.W, 0.0, literal.x,
2925 ; EG-NEXT:     LSHR * T3.W, T23.X, literal.x,
2926 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2927 ; EG-NEXT:     BFE_INT T25.X, T24.X, 0.0, literal.x,
2928 ; EG-NEXT:     BFE_INT T31.Y, PS, 0.0, literal.x,
2929 ; EG-NEXT:     BFE_INT T33.Z, T24.W, 0.0, literal.x,
2930 ; EG-NEXT:     BFE_INT T32.W, T1.Y, 0.0, literal.x,
2931 ; EG-NEXT:     LSHR * T3.W, T23.Z, literal.x,
2932 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2933 ; EG-NEXT:     BFE_INT T33.X, T24.Z, 0.0, literal.x,
2934 ; EG-NEXT:     BFE_INT T32.Y, PS, 0.0, literal.x,
2935 ; EG-NEXT:     BFE_INT T23.Z, T22.Y, 0.0, literal.x,
2936 ; EG-NEXT:     BFE_INT T25.W, T2.W, 0.0, literal.x,
2937 ; EG-NEXT:     LSHR * T2.W, T24.X, literal.x,
2938 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2939 ; EG-NEXT:     BFE_INT T23.X, T22.X, 0.0, literal.x,
2940 ; EG-NEXT:     BFE_INT T25.Y, PS, 0.0, literal.x,
2941 ; EG-NEXT:     BFE_INT T34.Z, T22.W, 0.0, literal.x,
2942 ; EG-NEXT:     BFE_INT T33.W, T1.W, 0.0, literal.x, BS:VEC_120/SCL_212
2943 ; EG-NEXT:     LSHR * T1.W, T24.Z, literal.x,
2944 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2945 ; EG-NEXT:     BFE_INT T34.X, T22.Z, 0.0, literal.x,
2946 ; EG-NEXT:     BFE_INT T33.Y, PS, 0.0, literal.x,
2947 ; EG-NEXT:     LSHR T0.Z, T22.X, literal.x,
2948 ; EG-NEXT:     BFE_INT T23.W, T0.Y, 0.0, literal.x,
2949 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
2950 ; EG-NEXT:    16(2.242078e-44), 96(1.345247e-43)
2951 ; EG-NEXT:     LSHR T22.X, PS, literal.x,
2952 ; EG-NEXT:     BFE_INT T23.Y, PV.Z, 0.0, literal.y,
2953 ; EG-NEXT:     LSHR T0.Z, T22.Z, literal.y,
2954 ; EG-NEXT:     BFE_INT T34.W, T0.W, 0.0, literal.y,
2955 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
2956 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2957 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
2958 ; EG-NEXT:     LSHR T24.X, PS, literal.x,
2959 ; EG-NEXT:     BFE_INT * T34.Y, PV.Z, 0.0, literal.y,
2960 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2961   %load = load <32 x i16>, ptr addrspace(4) %in
2962   %ext = sext <32 x i16> %load to <32 x i32>
2963   store <32 x i32> %ext, ptr addrspace(1) %out
2964   ret void
2967 define amdgpu_kernel void @constant_zextload_v64i16_to_v64i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
2968 ; GCN-NOHSA-SI-LABEL: constant_zextload_v64i16_to_v64i32:
2969 ; GCN-NOHSA-SI:       ; %bb.0:
2970 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[36:39], s[0:1], 0x9
2971 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2972 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[38:39], 0x0
2973 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[16:31], s[38:39], 0x10
2974 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2975 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s33, s1, 16
2976 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s34, s0, 16
2977 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s35, s3, 16
2978 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s38, s2, 16
2979 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s41, s5, 16
2980 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s42, s4, 16
2981 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s45, s7, 16
2982 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s46, s6, 16
2983 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s47, s9, 16
2984 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s48, s8, 16
2985 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s49, s11, 16
2986 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s50, s10, 16
2987 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s51, s13, 16
2988 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s52, s12, 16
2989 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s53, s15, 16
2990 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s54, s14, 16
2991 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s39, s1, 0xffff
2992 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s40, s0, 0xffff
2993 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s43, s3, 0xffff
2994 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s44, s2, 0xffff
2995 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
2996 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
2997 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
2998 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
2999 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s9, s9, 0xffff
3000 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s8, s8, 0xffff
3001 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s11, s11, 0xffff
3002 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s10, s10, 0xffff
3003 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s13, s13, 0xffff
3004 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s12, s12, 0xffff
3005 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s15, s15, 0xffff
3006 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s14, s14, 0xffff
3007 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s55, s17, 16
3008 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s56, s16, 16
3009 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s57, s19, 16
3010 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s58, s18, 16
3011 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s59, s21, 16
3012 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s60, s20, 16
3013 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s61, s23, 16
3014 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s62, s22, 16
3015 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s63, s25, 16
3016 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s64, s24, 16
3017 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s65, s27, 16
3018 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s66, s26, 16
3019 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s67, s29, 16
3020 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s68, s28, 16
3021 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s69, s31, 16
3022 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s70, s30, 16
3023 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s17, s17, 0xffff
3024 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s16, s16, 0xffff
3025 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s19, s19, 0xffff
3026 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s18, s18, 0xffff
3027 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s21, s21, 0xffff
3028 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s20, s20, 0xffff
3029 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s23, s23, 0xffff
3030 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s25, s25, 0xffff
3031 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s24, s24, 0xffff
3032 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s27, s27, 0xffff
3033 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s29, s29, 0xffff
3034 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s28, s28, 0xffff
3035 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s31, s31, 0xffff
3036 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s30, s30, 0xffff
3037 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s26, s26, 0xffff
3038 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s22, s22, 0xffff
3039 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s36
3040 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s37
3041 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
3042 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
3043 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s30
3044 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s70
3045 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s31
3046 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s69
3047 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s28
3048 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s68
3049 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s29
3050 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s67
3051 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s26
3052 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s66
3053 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s27
3054 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s65
3055 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, s24
3056 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, s64
3057 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v14, s25
3058 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
3059 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:224
3060 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208
3061 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, s63
3062 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192
3063 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(3)
3064 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s22
3065 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s62
3066 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s23
3067 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s61
3068 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
3069 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3070 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s20
3071 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s60
3072 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s21
3073 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s59
3074 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160
3075 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3076 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s18
3077 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s58
3078 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s19
3079 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s57
3080 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
3081 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3082 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s16
3083 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s56
3084 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s17
3085 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s55
3086 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
3087 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3088 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
3089 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s54
3090 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s15
3091 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s53
3092 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
3093 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3094 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
3095 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s52
3096 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s13
3097 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s51
3098 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
3099 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3100 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
3101 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s50
3102 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
3103 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s49
3104 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
3105 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3106 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
3107 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s48
3108 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
3109 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s47
3110 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
3111 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3112 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
3113 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s46
3114 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
3115 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s45
3116 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
3117 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3118 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
3119 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s42
3120 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
3121 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s41
3122 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
3123 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3124 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s44
3125 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s38
3126 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s43
3127 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s35
3128 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
3129 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3130 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s40
3131 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s34
3132 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s39
3133 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s33
3134 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
3135 ; GCN-NOHSA-SI-NEXT:    s_endpgm
3137 ; GCN-HSA-LABEL: constant_zextload_v64i16_to_v64i32:
3138 ; GCN-HSA:       ; %bb.0:
3139 ; GCN-HSA-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
3140 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3141 ; GCN-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
3142 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3143 ; GCN-HSA-NEXT:    s_lshr_b32 s20, s1, 16
3144 ; GCN-HSA-NEXT:    s_lshr_b32 s21, s0, 16
3145 ; GCN-HSA-NEXT:    s_lshr_b32 s22, s3, 16
3146 ; GCN-HSA-NEXT:    s_lshr_b32 s23, s2, 16
3147 ; GCN-HSA-NEXT:    s_lshr_b32 s24, s5, 16
3148 ; GCN-HSA-NEXT:    s_lshr_b32 s26, s4, 16
3149 ; GCN-HSA-NEXT:    s_lshr_b32 s28, s7, 16
3150 ; GCN-HSA-NEXT:    s_lshr_b32 s30, s6, 16
3151 ; GCN-HSA-NEXT:    s_lshr_b32 s33, s9, 16
3152 ; GCN-HSA-NEXT:    s_lshr_b32 s35, s8, 16
3153 ; GCN-HSA-NEXT:    s_lshr_b32 s37, s11, 16
3154 ; GCN-HSA-NEXT:    s_lshr_b32 s39, s10, 16
3155 ; GCN-HSA-NEXT:    s_lshr_b32 s41, s13, 16
3156 ; GCN-HSA-NEXT:    s_lshr_b32 s43, s12, 16
3157 ; GCN-HSA-NEXT:    s_lshr_b32 s45, s15, 16
3158 ; GCN-HSA-NEXT:    s_lshr_b32 s47, s14, 16
3159 ; GCN-HSA-NEXT:    s_and_b32 s25, s1, 0xffff
3160 ; GCN-HSA-NEXT:    s_and_b32 s27, s0, 0xffff
3161 ; GCN-HSA-NEXT:    s_and_b32 s29, s3, 0xffff
3162 ; GCN-HSA-NEXT:    s_and_b32 s31, s2, 0xffff
3163 ; GCN-HSA-NEXT:    s_and_b32 s34, s5, 0xffff
3164 ; GCN-HSA-NEXT:    s_and_b32 s36, s4, 0xffff
3165 ; GCN-HSA-NEXT:    s_and_b32 s38, s7, 0xffff
3166 ; GCN-HSA-NEXT:    s_and_b32 s40, s6, 0xffff
3167 ; GCN-HSA-NEXT:    s_and_b32 s42, s9, 0xffff
3168 ; GCN-HSA-NEXT:    s_and_b32 s44, s8, 0xffff
3169 ; GCN-HSA-NEXT:    s_and_b32 s46, s11, 0xffff
3170 ; GCN-HSA-NEXT:    s_and_b32 s48, s10, 0xffff
3171 ; GCN-HSA-NEXT:    s_and_b32 s49, s13, 0xffff
3172 ; GCN-HSA-NEXT:    s_and_b32 s50, s12, 0xffff
3173 ; GCN-HSA-NEXT:    s_and_b32 s51, s15, 0xffff
3174 ; GCN-HSA-NEXT:    s_and_b32 s52, s14, 0xffff
3175 ; GCN-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x10
3176 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3177 ; GCN-HSA-NEXT:    s_lshr_b32 s18, s1, 16
3178 ; GCN-HSA-NEXT:    s_lshr_b32 s19, s0, 16
3179 ; GCN-HSA-NEXT:    s_lshr_b32 s53, s3, 16
3180 ; GCN-HSA-NEXT:    s_lshr_b32 s54, s2, 16
3181 ; GCN-HSA-NEXT:    s_lshr_b32 s55, s5, 16
3182 ; GCN-HSA-NEXT:    s_lshr_b32 s56, s4, 16
3183 ; GCN-HSA-NEXT:    s_lshr_b32 s57, s7, 16
3184 ; GCN-HSA-NEXT:    s_lshr_b32 s58, s6, 16
3185 ; GCN-HSA-NEXT:    s_lshr_b32 s59, s9, 16
3186 ; GCN-HSA-NEXT:    s_lshr_b32 s60, s8, 16
3187 ; GCN-HSA-NEXT:    s_lshr_b32 s61, s11, 16
3188 ; GCN-HSA-NEXT:    s_lshr_b32 s62, s10, 16
3189 ; GCN-HSA-NEXT:    s_lshr_b32 s63, s13, 16
3190 ; GCN-HSA-NEXT:    s_lshr_b32 s64, s12, 16
3191 ; GCN-HSA-NEXT:    s_lshr_b32 s65, s15, 16
3192 ; GCN-HSA-NEXT:    s_lshr_b32 s66, s14, 16
3193 ; GCN-HSA-NEXT:    s_and_b32 s67, s1, 0xffff
3194 ; GCN-HSA-NEXT:    s_and_b32 s68, s0, 0xffff
3195 ; GCN-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
3196 ; GCN-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
3197 ; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
3198 ; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
3199 ; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
3200 ; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
3201 ; GCN-HSA-NEXT:    s_and_b32 s9, s9, 0xffff
3202 ; GCN-HSA-NEXT:    s_and_b32 s8, s8, 0xffff
3203 ; GCN-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
3204 ; GCN-HSA-NEXT:    s_and_b32 s10, s10, 0xffff
3205 ; GCN-HSA-NEXT:    s_and_b32 s13, s13, 0xffff
3206 ; GCN-HSA-NEXT:    s_and_b32 s12, s12, 0xffff
3207 ; GCN-HSA-NEXT:    s_and_b32 s15, s15, 0xffff
3208 ; GCN-HSA-NEXT:    s_and_b32 s14, s14, 0xffff
3209 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xf0
3210 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3211 ; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s1
3212 ; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s0
3213 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xe0
3214 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3215 ; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s1
3216 ; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s0
3217 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xd0
3218 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3219 ; GCN-HSA-NEXT:    v_mov_b32_e32 v27, s1
3220 ; GCN-HSA-NEXT:    v_mov_b32_e32 v26, s0
3221 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xc0
3222 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3223 ; GCN-HSA-NEXT:    v_mov_b32_e32 v29, s1
3224 ; GCN-HSA-NEXT:    v_mov_b32_e32 v28, s0
3225 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xb0
3226 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3227 ; GCN-HSA-NEXT:    v_mov_b32_e32 v31, s1
3228 ; GCN-HSA-NEXT:    v_mov_b32_e32 v30, s0
3229 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xa0
3230 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3231 ; GCN-HSA-NEXT:    v_mov_b32_e32 v33, s1
3232 ; GCN-HSA-NEXT:    v_mov_b32_e32 v32, s0
3233 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x90
3234 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s12
3235 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s64
3236 ; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s13
3237 ; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s63
3238 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3239 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
3240 ; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s1
3241 ; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s0
3242 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x80
3243 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3244 ; GCN-HSA-NEXT:    v_mov_b32_e32 v35, s1
3245 ; GCN-HSA-NEXT:    v_mov_b32_e32 v34, s0
3246 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x70
3247 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s14
3248 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s66
3249 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s15
3250 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s65
3251 ; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s10
3252 ; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s62
3253 ; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s11
3254 ; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s61
3255 ; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s8
3256 ; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s60
3257 ; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s9
3258 ; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s59
3259 ; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s6
3260 ; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s58
3261 ; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s7
3262 ; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s57
3263 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s68
3264 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s19
3265 ; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s67
3266 ; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s18
3267 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3268 ; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s4
3269 ; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s56
3270 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
3271 ; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s5
3272 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
3273 ; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s55
3274 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s54
3275 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
3276 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s3
3277 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
3278 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s53
3279 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
3280 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
3281 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[0:3]
3282 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[34:35], v[4:7]
3283 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s52
3284 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
3285 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
3286 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x60
3287 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s47
3288 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s51
3289 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s45
3290 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3291 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3292 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
3293 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
3294 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x50
3295 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s50
3296 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s43
3297 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s49
3298 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s41
3299 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3300 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3301 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
3302 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
3303 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 64
3304 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s48
3305 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s39
3306 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s46
3307 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s37
3308 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3309 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3310 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
3311 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
3312 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 48
3313 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s44
3314 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s35
3315 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s42
3316 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s33
3317 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3318 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3319 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
3320 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
3321 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 32
3322 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s40
3323 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s30
3324 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s38
3325 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s28
3326 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3327 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3328 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
3329 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
3330 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 16
3331 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s36
3332 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s26
3333 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s34
3334 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s24
3335 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3336 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3337 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
3338 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s31
3339 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s23
3340 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s29
3341 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s22
3342 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
3343 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3344 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
3345 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s27
3346 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
3347 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s25
3348 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s20
3349 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s17
3350 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3351 ; GCN-HSA-NEXT:    s_endpgm
3353 ; GCN-NOHSA-VI-LABEL: constant_zextload_v64i16_to_v64i32:
3354 ; GCN-NOHSA-VI:       ; %bb.0:
3355 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[36:39], s[0:1], 0x24
3356 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
3357 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[38:39], 0x0
3358 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[16:31], s[38:39], 0x40
3359 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
3360 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s33, s1, 16
3361 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s34, s0, 16
3362 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s35, s3, 16
3363 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s40, s2, 16
3364 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s41, s5, 16
3365 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s42, s4, 16
3366 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s43, s7, 16
3367 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s44, s6, 16
3368 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s45, s9, 16
3369 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s46, s8, 16
3370 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s47, s11, 16
3371 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s48, s10, 16
3372 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s38, s13, 16
3373 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s39, s12, 16
3374 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s49, s15, 16
3375 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s50, s14, 16
3376 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s51, s17, 16
3377 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s52, s16, 16
3378 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s53, s19, 16
3379 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s54, s18, 16
3380 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s55, s21, 16
3381 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s56, s20, 16
3382 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s57, s23, 16
3383 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s58, s22, 16
3384 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s59, s25, 16
3385 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s60, s24, 16
3386 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s61, s27, 16
3387 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s62, s26, 16
3388 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s63, s29, 16
3389 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s64, s28, 16
3390 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s65, s31, 16
3391 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s66, s30, 16
3392 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s1, s1, 0xffff
3393 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s0, s0, 0xffff
3394 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s3, s3, 0xffff
3395 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s2, s2, 0xffff
3396 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
3397 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
3398 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s7, s7, 0xffff
3399 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
3400 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s9, s9, 0xffff
3401 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s8, s8, 0xffff
3402 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s67, s11, 0xffff
3403 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s68, s10, 0xffff
3404 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s13, s13, 0xffff
3405 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s12, s12, 0xffff
3406 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s15, s15, 0xffff
3407 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s14, s14, 0xffff
3408 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s17, s17, 0xffff
3409 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s16, s16, 0xffff
3410 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s19, s19, 0xffff
3411 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s18, s18, 0xffff
3412 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s21, s21, 0xffff
3413 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s20, s20, 0xffff
3414 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s23, s23, 0xffff
3415 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s22, s22, 0xffff
3416 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s25, s25, 0xffff
3417 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s24, s24, 0xffff
3418 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s27, s27, 0xffff
3419 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s26, s26, 0xffff
3420 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s29, s29, 0xffff
3421 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s28, s28, 0xffff
3422 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s10, s31, 0xffff
3423 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s11, s30, 0xffff
3424 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s10
3425 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0xf0
3426 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s11
3427 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3428 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3429 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s66
3430 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s65
3431 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3432 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0xe0
3433 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3434 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3435 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3436 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s28
3437 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s64
3438 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s29
3439 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s63
3440 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3441 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0xd0
3442 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3443 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3444 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3445 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s26
3446 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s62
3447 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s27
3448 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s61
3449 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3450 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0xc0
3451 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3452 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3453 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3454 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s24
3455 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s60
3456 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s25
3457 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s59
3458 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3459 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0xb0
3460 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3461 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3462 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3463 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s22
3464 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s58
3465 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s23
3466 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s57
3467 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3468 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0xa0
3469 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3470 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3471 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3472 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s20
3473 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s56
3474 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s21
3475 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s55
3476 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3477 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0x90
3478 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3479 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3480 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3481 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s18
3482 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s54
3483 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s19
3484 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s53
3485 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3486 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0x80
3487 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3488 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3489 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3490 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s16
3491 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s52
3492 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s17
3493 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s51
3494 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3495 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0x70
3496 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3497 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3498 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3499 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
3500 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s50
3501 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s15
3502 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s49
3503 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3504 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0x60
3505 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3506 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3507 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3508 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
3509 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s39
3510 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s13
3511 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s38
3512 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3513 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s36, 0x50
3514 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3515 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s37, 0
3516 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
3517 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s68
3518 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s48
3519 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s67
3520 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s47
3521 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
3522 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3523 ; GCN-NOHSA-VI-NEXT:    s_nop 0
3524 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
3525 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s8, s36, 64
3526 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
3527 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s9, s37, 0
3528 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s8
3529 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s46
3530 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s45
3531 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s9
3532 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3533 ; GCN-NOHSA-VI-NEXT:    s_nop 0
3534 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
3535 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s6, s36, 48
3536 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
3537 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s7, s37, 0
3538 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s6
3539 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s44
3540 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s43
3541 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s7
3542 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3543 ; GCN-NOHSA-VI-NEXT:    s_nop 0
3544 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
3545 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s36, 32
3546 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
3547 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s37, 0
3548 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
3549 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s42
3550 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s41
3551 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
3552 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3553 ; GCN-NOHSA-VI-NEXT:    s_nop 0
3554 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
3555 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s36, 16
3556 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
3557 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s37, 0
3558 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
3559 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s40
3560 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s35
3561 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
3562 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3563 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s36
3564 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
3565 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s34
3566 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s1
3567 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s33
3568 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s37
3569 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3570 ; GCN-NOHSA-VI-NEXT:    s_endpgm
3572 ; EG-LABEL: constant_zextload_v64i16_to_v64i32:
3573 ; EG:       ; %bb.0:
3574 ; EG-NEXT:    ALU 0, @38, KC0[CB0:0-32], KC1[]
3575 ; EG-NEXT:    TEX 3 @22
3576 ; EG-NEXT:    ALU 55, @39, KC0[CB0:0-32], KC1[]
3577 ; EG-NEXT:    TEX 3 @30
3578 ; EG-NEXT:    ALU 87, @95, KC0[CB0:0-32], KC1[]
3579 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T65.XYZW, T66.X, 0
3580 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T49.X, 0
3581 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T62.XYZW, T64.X, 0
3582 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T50.X, 0
3583 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T59.XYZW, T61.X, 0
3584 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T51.X, 0
3585 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T56.XYZW, T58.X, 0
3586 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T54.XYZW, T52.X, 0
3587 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T53.XYZW, T55.X, 0
3588 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T39.X, 0
3589 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T48.X, 0
3590 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T40.X, 0
3591 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T46.X, 0
3592 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T41.X, 0
3593 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T43.X, 0
3594 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T38.X, 1
3595 ; EG-NEXT:    CF_END
3596 ; EG-NEXT:    Fetch clause starting at 22:
3597 ; EG-NEXT:     VTX_READ_128 T38.XYZW, T37.X, 0, #1
3598 ; EG-NEXT:     VTX_READ_128 T39.XYZW, T37.X, 48, #1
3599 ; EG-NEXT:     VTX_READ_128 T40.XYZW, T37.X, 32, #1
3600 ; EG-NEXT:     VTX_READ_128 T41.XYZW, T37.X, 16, #1
3601 ; EG-NEXT:    Fetch clause starting at 30:
3602 ; EG-NEXT:     VTX_READ_128 T49.XYZW, T37.X, 112, #1
3603 ; EG-NEXT:     VTX_READ_128 T50.XYZW, T37.X, 96, #1
3604 ; EG-NEXT:     VTX_READ_128 T51.XYZW, T37.X, 80, #1
3605 ; EG-NEXT:     VTX_READ_128 T52.XYZW, T37.X, 64, #1
3606 ; EG-NEXT:    ALU clause starting at 38:
3607 ; EG-NEXT:     MOV * T37.X, KC0[2].Z,
3608 ; EG-NEXT:    ALU clause starting at 39:
3609 ; EG-NEXT:     LSHR * T35.W, T38.Y, literal.x,
3610 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3611 ; EG-NEXT:     AND_INT * T35.Z, T38.Y, literal.x,
3612 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3613 ; EG-NEXT:     LSHR T35.Y, T38.X, literal.x,
3614 ; EG-NEXT:     LSHR * T36.W, T38.W, literal.x,
3615 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3616 ; EG-NEXT:     AND_INT T35.X, T38.X, literal.x,
3617 ; EG-NEXT:     AND_INT T36.Z, T38.W, literal.x,
3618 ; EG-NEXT:     LSHR * T38.X, KC0[2].Y, literal.y,
3619 ; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
3620 ; EG-NEXT:     LSHR T36.Y, T38.Z, literal.x,
3621 ; EG-NEXT:     LSHR * T42.W, T41.Y, literal.x,
3622 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3623 ; EG-NEXT:     AND_INT T36.X, T38.Z, literal.x,
3624 ; EG-NEXT:     AND_INT T42.Z, T41.Y, literal.x,
3625 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3626 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
3627 ; EG-NEXT:     LSHR T43.X, PV.W, literal.x,
3628 ; EG-NEXT:     LSHR T42.Y, T41.X, literal.y,
3629 ; EG-NEXT:     LSHR T44.W, T41.W, literal.y,
3630 ; EG-NEXT:     AND_INT * T42.X, T41.X, literal.z,
3631 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3632 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3633 ; EG-NEXT:     AND_INT T44.Z, T41.W, literal.x,
3634 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3635 ; EG-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
3636 ; EG-NEXT:     LSHR T41.X, PV.W, literal.x,
3637 ; EG-NEXT:     LSHR T44.Y, T41.Z, literal.y,
3638 ; EG-NEXT:     LSHR T45.W, T40.Y, literal.y,
3639 ; EG-NEXT:     AND_INT * T44.X, T41.Z, literal.z,
3640 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3641 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3642 ; EG-NEXT:     AND_INT T45.Z, T40.Y, literal.x,
3643 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3644 ; EG-NEXT:    65535(9.183409e-41), 48(6.726233e-44)
3645 ; EG-NEXT:     LSHR T46.X, PV.W, literal.x,
3646 ; EG-NEXT:     LSHR T45.Y, T40.X, literal.y,
3647 ; EG-NEXT:     LSHR T47.W, T40.W, literal.y,
3648 ; EG-NEXT:     AND_INT * T45.X, T40.X, literal.z,
3649 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3650 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3651 ; EG-NEXT:     AND_INT T47.Z, T40.W, literal.x,
3652 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3653 ; EG-NEXT:    65535(9.183409e-41), 64(8.968310e-44)
3654 ; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
3655 ; EG-NEXT:     LSHR T47.Y, T40.Z, literal.y,
3656 ; EG-NEXT:     AND_INT * T47.X, T40.Z, literal.z,
3657 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3658 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3659 ; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.x,
3660 ; EG-NEXT:     LSHR * T37.W, T39.Y, literal.y,
3661 ; EG-NEXT:    80(1.121039e-43), 16(2.242078e-44)
3662 ; EG-NEXT:     LSHR T48.X, PV.W, literal.x,
3663 ; EG-NEXT:     AND_INT * T37.Z, T39.Y, literal.y,
3664 ; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
3665 ; EG-NEXT:    ALU clause starting at 95:
3666 ; EG-NEXT:     LSHR T37.Y, T39.X, literal.x,
3667 ; EG-NEXT:     LSHR * T53.W, T39.W, literal.x,
3668 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3669 ; EG-NEXT:     AND_INT T37.X, T39.X, literal.x,
3670 ; EG-NEXT:     AND_INT T53.Z, T39.W, literal.x,
3671 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3672 ; EG-NEXT:    65535(9.183409e-41), 96(1.345247e-43)
3673 ; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
3674 ; EG-NEXT:     LSHR T53.Y, T39.Z, literal.y,
3675 ; EG-NEXT:     LSHR T54.W, T52.Y, literal.y,
3676 ; EG-NEXT:     AND_INT * T53.X, T39.Z, literal.z,
3677 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3678 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3679 ; EG-NEXT:     AND_INT T54.Z, T52.Y, literal.x,
3680 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3681 ; EG-NEXT:    65535(9.183409e-41), 112(1.569454e-43)
3682 ; EG-NEXT:     LSHR T55.X, PV.W, literal.x,
3683 ; EG-NEXT:     LSHR T54.Y, T52.X, literal.y,
3684 ; EG-NEXT:     LSHR T56.W, T52.W, literal.y,
3685 ; EG-NEXT:     AND_INT * T54.X, T52.X, literal.z,
3686 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3687 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3688 ; EG-NEXT:     AND_INT T56.Z, T52.W, literal.x,
3689 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3690 ; EG-NEXT:    65535(9.183409e-41), 128(1.793662e-43)
3691 ; EG-NEXT:     LSHR T52.X, PV.W, literal.x,
3692 ; EG-NEXT:     LSHR T56.Y, T52.Z, literal.y,
3693 ; EG-NEXT:     LSHR T57.W, T51.Y, literal.y,
3694 ; EG-NEXT:     AND_INT * T56.X, T52.Z, literal.z,
3695 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3696 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3697 ; EG-NEXT:     AND_INT T57.Z, T51.Y, literal.x,
3698 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3699 ; EG-NEXT:    65535(9.183409e-41), 144(2.017870e-43)
3700 ; EG-NEXT:     LSHR T58.X, PV.W, literal.x,
3701 ; EG-NEXT:     LSHR T57.Y, T51.X, literal.y,
3702 ; EG-NEXT:     LSHR T59.W, T51.W, literal.y,
3703 ; EG-NEXT:     AND_INT * T57.X, T51.X, literal.z,
3704 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3705 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3706 ; EG-NEXT:     AND_INT T59.Z, T51.W, literal.x,
3707 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3708 ; EG-NEXT:    65535(9.183409e-41), 160(2.242078e-43)
3709 ; EG-NEXT:     LSHR T51.X, PV.W, literal.x,
3710 ; EG-NEXT:     LSHR T59.Y, T51.Z, literal.y,
3711 ; EG-NEXT:     LSHR T60.W, T50.Y, literal.y,
3712 ; EG-NEXT:     AND_INT * T59.X, T51.Z, literal.z,
3713 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3714 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3715 ; EG-NEXT:     AND_INT T60.Z, T50.Y, literal.x,
3716 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3717 ; EG-NEXT:    65535(9.183409e-41), 176(2.466285e-43)
3718 ; EG-NEXT:     LSHR T61.X, PV.W, literal.x,
3719 ; EG-NEXT:     LSHR T60.Y, T50.X, literal.y,
3720 ; EG-NEXT:     LSHR T62.W, T50.W, literal.y,
3721 ; EG-NEXT:     AND_INT * T60.X, T50.X, literal.z,
3722 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3723 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3724 ; EG-NEXT:     AND_INT T62.Z, T50.W, literal.x,
3725 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3726 ; EG-NEXT:    65535(9.183409e-41), 192(2.690493e-43)
3727 ; EG-NEXT:     LSHR T50.X, PV.W, literal.x,
3728 ; EG-NEXT:     LSHR T62.Y, T50.Z, literal.y,
3729 ; EG-NEXT:     LSHR T63.W, T49.Y, literal.y,
3730 ; EG-NEXT:     AND_INT * T62.X, T50.Z, literal.z,
3731 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3732 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3733 ; EG-NEXT:     AND_INT T63.Z, T49.Y, literal.x,
3734 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3735 ; EG-NEXT:    65535(9.183409e-41), 208(2.914701e-43)
3736 ; EG-NEXT:     LSHR T64.X, PV.W, literal.x,
3737 ; EG-NEXT:     LSHR T63.Y, T49.X, literal.y,
3738 ; EG-NEXT:     LSHR T65.W, T49.W, literal.y,
3739 ; EG-NEXT:     AND_INT * T63.X, T49.X, literal.z,
3740 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3741 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3742 ; EG-NEXT:     AND_INT T65.Z, T49.W, literal.x,
3743 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3744 ; EG-NEXT:    65535(9.183409e-41), 224(3.138909e-43)
3745 ; EG-NEXT:     LSHR T49.X, PV.W, literal.x,
3746 ; EG-NEXT:     LSHR T65.Y, T49.Z, literal.y,
3747 ; EG-NEXT:     AND_INT * T65.X, T49.Z, literal.z,
3748 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3749 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3750 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
3751 ; EG-NEXT:    240(3.363116e-43), 0(0.000000e+00)
3752 ; EG-NEXT:     LSHR * T66.X, PV.W, literal.x,
3753 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
3754   %load = load <64 x i16>, ptr addrspace(4) %in
3755   %ext = zext <64 x i16> %load to <64 x i32>
3756   store <64 x i32> %ext, ptr addrspace(1) %out
3757   ret void
3760 define amdgpu_kernel void @constant_sextload_v64i16_to_v64i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
3761 ; GCN-NOHSA-SI-LABEL: constant_sextload_v64i16_to_v64i32:
3762 ; GCN-NOHSA-SI:       ; %bb.0:
3763 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[36:39], s[0:1], 0x9
3764 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
3765 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[16:31], s[38:39], 0x0
3766 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[38:39], 0x10
3767 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
3768 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s33, s17, 16
3769 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s34, s16, 16
3770 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s17, s17
3771 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s16, s16
3772 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s35, s19, 16
3773 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s38, s18, 16
3774 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s19, s19
3775 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s18, s18
3776 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s39, s21, 16
3777 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s40, s20, 16
3778 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s21, s21
3779 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s20, s20
3780 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s41, s23, 16
3781 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s42, s22, 16
3782 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s23, s23
3783 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s22, s22
3784 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s43, s25, 16
3785 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s44, s24, 16
3786 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s25, s25
3787 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s24, s24
3788 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s45, s27, 16
3789 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s46, s26, 16
3790 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s27, s27
3791 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s26, s26
3792 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s47, s29, 16
3793 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s48, s28, 16
3794 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s29, s29
3795 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s28, s28
3796 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s49, s31, 16
3797 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s50, s30, 16
3798 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s31, s31
3799 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s30, s30
3800 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s51, s1, 16
3801 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s52, s0, 16
3802 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s53, s1
3803 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s54, s0
3804 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s55, s3, 16
3805 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s56, s2, 16
3806 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s57, s3
3807 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s58, s2
3808 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s59, s5, 16
3809 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s60, s4, 16
3810 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
3811 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
3812 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s61, s7, 16
3813 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s62, s6, 16
3814 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s7, s7
3815 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s6, s6
3816 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s63, s8, 16
3817 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s64, s9
3818 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s8, s8
3819 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s65, s11, 16
3820 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s66, s10, 16
3821 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s11, s11
3822 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s67, s13, 16
3823 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s68, s12, 16
3824 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s13, s13
3825 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s12, s12
3826 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s69, s15, 16
3827 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s70, s14, 16
3828 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s15, s15
3829 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s14, s14
3830 ; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s10, s10
3831 ; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s9, s9, 16
3832 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s36
3833 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s37
3834 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
3835 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
3836 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
3837 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s70
3838 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s15
3839 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s69
3840 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s12
3841 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s68
3842 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s13
3843 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s67
3844 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s10
3845 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s66
3846 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s11
3847 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s65
3848 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, s8
3849 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, s63
3850 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v14, s64
3851 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
3852 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:224
3853 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208
3854 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, s9
3855 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192
3856 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(3)
3857 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
3858 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s62
3859 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
3860 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s61
3861 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
3862 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3863 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
3864 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s60
3865 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
3866 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s59
3867 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160
3868 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3869 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s58
3870 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s56
3871 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s57
3872 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s55
3873 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
3874 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3875 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s54
3876 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s52
3877 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s53
3878 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s51
3879 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
3880 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3881 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s30
3882 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s50
3883 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s31
3884 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s49
3885 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
3886 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3887 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s28
3888 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s48
3889 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s29
3890 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s47
3891 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
3892 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3893 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s26
3894 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s46
3895 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s27
3896 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s45
3897 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
3898 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3899 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s24
3900 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s44
3901 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s25
3902 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s43
3903 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
3904 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3905 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s22
3906 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s42
3907 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s23
3908 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s41
3909 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
3910 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3911 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s20
3912 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s40
3913 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s21
3914 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s39
3915 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
3916 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3917 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s18
3918 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s38
3919 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s19
3920 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s35
3921 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
3922 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3923 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s16
3924 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s34
3925 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s17
3926 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s33
3927 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
3928 ; GCN-NOHSA-SI-NEXT:    s_endpgm
3930 ; GCN-HSA-LABEL: constant_sextload_v64i16_to_v64i32:
3931 ; GCN-HSA:       ; %bb.0:
3932 ; GCN-HSA-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
3933 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3934 ; GCN-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
3935 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3936 ; GCN-HSA-NEXT:    s_ashr_i32 s20, s1, 16
3937 ; GCN-HSA-NEXT:    s_ashr_i32 s21, s0, 16
3938 ; GCN-HSA-NEXT:    s_sext_i32_i16 s22, s1
3939 ; GCN-HSA-NEXT:    s_sext_i32_i16 s23, s0
3940 ; GCN-HSA-NEXT:    s_ashr_i32 s24, s3, 16
3941 ; GCN-HSA-NEXT:    s_ashr_i32 s25, s2, 16
3942 ; GCN-HSA-NEXT:    s_sext_i32_i16 s26, s3
3943 ; GCN-HSA-NEXT:    s_sext_i32_i16 s27, s2
3944 ; GCN-HSA-NEXT:    s_ashr_i32 s28, s5, 16
3945 ; GCN-HSA-NEXT:    s_ashr_i32 s29, s4, 16
3946 ; GCN-HSA-NEXT:    s_sext_i32_i16 s30, s5
3947 ; GCN-HSA-NEXT:    s_sext_i32_i16 s31, s4
3948 ; GCN-HSA-NEXT:    s_ashr_i32 s33, s7, 16
3949 ; GCN-HSA-NEXT:    s_ashr_i32 s34, s6, 16
3950 ; GCN-HSA-NEXT:    s_sext_i32_i16 s35, s7
3951 ; GCN-HSA-NEXT:    s_sext_i32_i16 s36, s6
3952 ; GCN-HSA-NEXT:    s_ashr_i32 s37, s9, 16
3953 ; GCN-HSA-NEXT:    s_ashr_i32 s38, s8, 16
3954 ; GCN-HSA-NEXT:    s_sext_i32_i16 s39, s9
3955 ; GCN-HSA-NEXT:    s_sext_i32_i16 s40, s8
3956 ; GCN-HSA-NEXT:    s_ashr_i32 s41, s11, 16
3957 ; GCN-HSA-NEXT:    s_ashr_i32 s42, s10, 16
3958 ; GCN-HSA-NEXT:    s_sext_i32_i16 s43, s11
3959 ; GCN-HSA-NEXT:    s_sext_i32_i16 s44, s10
3960 ; GCN-HSA-NEXT:    s_ashr_i32 s45, s13, 16
3961 ; GCN-HSA-NEXT:    s_ashr_i32 s46, s12, 16
3962 ; GCN-HSA-NEXT:    s_sext_i32_i16 s47, s13
3963 ; GCN-HSA-NEXT:    s_sext_i32_i16 s48, s12
3964 ; GCN-HSA-NEXT:    s_ashr_i32 s49, s15, 16
3965 ; GCN-HSA-NEXT:    s_ashr_i32 s50, s14, 16
3966 ; GCN-HSA-NEXT:    s_sext_i32_i16 s51, s15
3967 ; GCN-HSA-NEXT:    s_sext_i32_i16 s52, s14
3968 ; GCN-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x10
3969 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3970 ; GCN-HSA-NEXT:    s_ashr_i32 s18, s1, 16
3971 ; GCN-HSA-NEXT:    s_ashr_i32 s19, s0, 16
3972 ; GCN-HSA-NEXT:    s_ashr_i32 s55, s3, 16
3973 ; GCN-HSA-NEXT:    s_ashr_i32 s56, s2, 16
3974 ; GCN-HSA-NEXT:    s_ashr_i32 s57, s5, 16
3975 ; GCN-HSA-NEXT:    s_ashr_i32 s58, s4, 16
3976 ; GCN-HSA-NEXT:    s_ashr_i32 s59, s7, 16
3977 ; GCN-HSA-NEXT:    s_ashr_i32 s60, s6, 16
3978 ; GCN-HSA-NEXT:    s_ashr_i32 s61, s9, 16
3979 ; GCN-HSA-NEXT:    s_ashr_i32 s62, s8, 16
3980 ; GCN-HSA-NEXT:    s_ashr_i32 s63, s11, 16
3981 ; GCN-HSA-NEXT:    s_ashr_i32 s64, s10, 16
3982 ; GCN-HSA-NEXT:    s_ashr_i32 s65, s13, 16
3983 ; GCN-HSA-NEXT:    s_ashr_i32 s66, s12, 16
3984 ; GCN-HSA-NEXT:    s_ashr_i32 s67, s15, 16
3985 ; GCN-HSA-NEXT:    s_ashr_i32 s68, s14, 16
3986 ; GCN-HSA-NEXT:    s_sext_i32_i16 s54, s0
3987 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xf0
3988 ; GCN-HSA-NEXT:    s_sext_i32_i16 s53, s1
3989 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3990 ; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s1
3991 ; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s0
3992 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xe0
3993 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3994 ; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s1
3995 ; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s0
3996 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xd0
3997 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
3998 ; GCN-HSA-NEXT:    v_mov_b32_e32 v27, s1
3999 ; GCN-HSA-NEXT:    v_mov_b32_e32 v26, s0
4000 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xc0
4001 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4002 ; GCN-HSA-NEXT:    v_mov_b32_e32 v29, s1
4003 ; GCN-HSA-NEXT:    v_mov_b32_e32 v28, s0
4004 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xb0
4005 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4006 ; GCN-HSA-NEXT:    v_mov_b32_e32 v31, s1
4007 ; GCN-HSA-NEXT:    v_mov_b32_e32 v30, s0
4008 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0xa0
4009 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4010 ; GCN-HSA-NEXT:    v_mov_b32_e32 v33, s1
4011 ; GCN-HSA-NEXT:    s_sext_i32_i16 s13, s13
4012 ; GCN-HSA-NEXT:    s_sext_i32_i16 s12, s12
4013 ; GCN-HSA-NEXT:    v_mov_b32_e32 v32, s0
4014 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x90
4015 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s12
4016 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s66
4017 ; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s13
4018 ; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s65
4019 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4020 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
4021 ; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s1
4022 ; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s0
4023 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x80
4024 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4025 ; GCN-HSA-NEXT:    v_mov_b32_e32 v35, s1
4026 ; GCN-HSA-NEXT:    s_sext_i32_i16 s7, s7
4027 ; GCN-HSA-NEXT:    s_sext_i32_i16 s6, s6
4028 ; GCN-HSA-NEXT:    s_sext_i32_i16 s9, s9
4029 ; GCN-HSA-NEXT:    s_sext_i32_i16 s8, s8
4030 ; GCN-HSA-NEXT:    s_sext_i32_i16 s11, s11
4031 ; GCN-HSA-NEXT:    s_sext_i32_i16 s10, s10
4032 ; GCN-HSA-NEXT:    s_sext_i32_i16 s15, s15
4033 ; GCN-HSA-NEXT:    s_sext_i32_i16 s14, s14
4034 ; GCN-HSA-NEXT:    v_mov_b32_e32 v34, s0
4035 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x70
4036 ; GCN-HSA-NEXT:    s_sext_i32_i16 s3, s3
4037 ; GCN-HSA-NEXT:    s_sext_i32_i16 s2, s2
4038 ; GCN-HSA-NEXT:    s_sext_i32_i16 s5, s5
4039 ; GCN-HSA-NEXT:    s_sext_i32_i16 s4, s4
4040 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s14
4041 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s68
4042 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s15
4043 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s67
4044 ; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s10
4045 ; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s64
4046 ; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s11
4047 ; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s63
4048 ; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s8
4049 ; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s62
4050 ; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s9
4051 ; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s61
4052 ; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s6
4053 ; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s60
4054 ; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s7
4055 ; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s59
4056 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s54
4057 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s19
4058 ; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s53
4059 ; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s18
4060 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4061 ; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s4
4062 ; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s58
4063 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
4064 ; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s5
4065 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4066 ; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s57
4067 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s56
4068 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
4069 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s3
4070 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
4071 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s55
4072 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
4073 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
4074 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[0:3]
4075 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[34:35], v[4:7]
4076 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s52
4077 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4078 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4079 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x60
4080 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s50
4081 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s51
4082 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s49
4083 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4084 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4085 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4086 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4087 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 0x50
4088 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s48
4089 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s46
4090 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s47
4091 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s45
4092 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4093 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4094 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4095 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4096 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 64
4097 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s44
4098 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s42
4099 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s43
4100 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s41
4101 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4102 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4103 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4104 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4105 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 48
4106 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s40
4107 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s38
4108 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s39
4109 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s37
4110 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4111 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4112 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4113 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4114 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 32
4115 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s36
4116 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s34
4117 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s35
4118 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s33
4119 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4120 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4121 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4122 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4123 ; GCN-HSA-NEXT:    s_add_u32 s0, s16, 16
4124 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s31
4125 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s29
4126 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s30
4127 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s28
4128 ; GCN-HSA-NEXT:    s_addc_u32 s1, s17, 0
4129 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4130 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4131 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s27
4132 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s25
4133 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s26
4134 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s24
4135 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4136 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4137 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
4138 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s23
4139 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
4140 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s22
4141 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s20
4142 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s17
4143 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4144 ; GCN-HSA-NEXT:    s_endpgm
4146 ; GCN-NOHSA-VI-LABEL: constant_sextload_v64i16_to_v64i32:
4147 ; GCN-NOHSA-VI:       ; %bb.0:
4148 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[36:39], s[0:1], 0x24
4149 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4150 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[16:31], s[38:39], 0x0
4151 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[38:39], 0x40
4152 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4153 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s33, s17, 16
4154 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s34, s16, 16
4155 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s35, s19, 16
4156 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s38, s18, 16
4157 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s39, s21, 16
4158 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s40, s20, 16
4159 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s41, s23, 16
4160 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s42, s22, 16
4161 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s43, s25, 16
4162 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s44, s24, 16
4163 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s45, s27, 16
4164 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s46, s26, 16
4165 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s47, s29, 16
4166 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s48, s28, 16
4167 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s49, s31, 16
4168 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s50, s30, 16
4169 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s51, s1, 16
4170 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s52, s0, 16
4171 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s53, s1
4172 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s54, s0
4173 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s55, s3, 16
4174 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s56, s2, 16
4175 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s57, s5, 16
4176 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s58, s4, 16
4177 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s59, s7, 16
4178 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s60, s6, 16
4179 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s61, s9, 16
4180 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s62, s8, 16
4181 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s63, s11, 16
4182 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s64, s10, 16
4183 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s65, s13, 16
4184 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s66, s12, 16
4185 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s0, s15, 16
4186 ; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s1, s14, 16
4187 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s0
4188 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0xf0
4189 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
4190 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4191 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4192 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s15, s15
4193 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s14, s14
4194 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4195 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0xe0
4196 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
4197 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s15
4198 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4199 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4200 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4201 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s13, s13
4202 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s12, s12
4203 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4204 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0xd0
4205 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
4206 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s66
4207 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s13
4208 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s65
4209 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4210 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4211 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4212 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s11, s11
4213 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s10, s10
4214 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4215 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0xc0
4216 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
4217 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s64
4218 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
4219 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s63
4220 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4221 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4222 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4223 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s9, s9
4224 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s8, s8
4225 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4226 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0xb0
4227 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
4228 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s62
4229 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
4230 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s61
4231 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4232 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4233 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4234 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s7, s7
4235 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s6, s6
4236 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4237 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0xa0
4238 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
4239 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s60
4240 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
4241 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s59
4242 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4243 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4244 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4245 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s5, s5
4246 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
4247 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4248 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0x90
4249 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
4250 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s58
4251 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
4252 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s57
4253 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4254 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4255 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4256 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s3, s3
4257 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s2, s2
4258 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4259 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0x80
4260 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
4261 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s56
4262 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
4263 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s55
4264 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4265 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4266 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4267 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4268 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0x70
4269 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s54
4270 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s52
4271 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s53
4272 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s51
4273 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4274 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4275 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4276 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s31, s31
4277 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s30, s30
4278 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4279 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0x60
4280 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s30
4281 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s50
4282 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s31
4283 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s49
4284 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4285 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4286 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4287 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s29, s29
4288 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s28, s28
4289 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4290 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 0x50
4291 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s28
4292 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s48
4293 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s29
4294 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s47
4295 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4296 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4297 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4298 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s27, s27
4299 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s26, s26
4300 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4301 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 64
4302 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s26
4303 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s46
4304 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s27
4305 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s45
4306 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4307 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4308 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4309 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s25, s25
4310 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s24, s24
4311 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4312 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 48
4313 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s24
4314 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s44
4315 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s25
4316 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s43
4317 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4318 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4319 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4320 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s23, s23
4321 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s22, s22
4322 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4323 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 32
4324 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s22
4325 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s42
4326 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s23
4327 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s41
4328 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4329 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4330 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4331 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s21, s21
4332 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s20, s20
4333 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4334 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s0, s36, 16
4335 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s20
4336 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s40
4337 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s21
4338 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s39
4339 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s1, s37, 0
4340 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s19, s19
4341 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s18, s18
4342 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4343 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4344 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s18
4345 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s38
4346 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s19
4347 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s35
4348 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4349 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s17, s17
4350 ; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s16, s16
4351 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4352 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s36
4353 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s16
4354 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s34
4355 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s17
4356 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s33
4357 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s37
4358 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4359 ; GCN-NOHSA-VI-NEXT:    s_endpgm
4361 ; EG-LABEL: constant_sextload_v64i16_to_v64i32:
4362 ; EG:       ; %bb.0:
4363 ; EG-NEXT:    ALU 17, @38, KC0[CB0:0-32], KC1[]
4364 ; EG-NEXT:    TEX 7 @22
4365 ; EG-NEXT:    ALU 75, @56, KC0[CB0:0-32], KC1[]
4366 ; EG-NEXT:    ALU 71, @132, KC0[CB0:0-32], KC1[]
4367 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T66.XYZW, T48.X, 0
4368 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T41.X, 0
4369 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T65.XYZW, T56.X, 0
4370 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T55.X, 0
4371 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T64.XYZW, T54.X, 0
4372 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T53.X, 0
4373 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T52.X, 0
4374 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T51.X, 0
4375 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T62.XYZW, T50.X, 0
4376 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T49.X, 0
4377 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T61.XYZW, T40.X, 0
4378 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T39.X, 0
4379 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T38.X, 0
4380 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T59.XYZW, T37.X, 0
4381 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T58.XYZW, T36.X, 0
4382 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T35.X, 1
4383 ; EG-NEXT:    CF_END
4384 ; EG-NEXT:    PAD
4385 ; EG-NEXT:    Fetch clause starting at 22:
4386 ; EG-NEXT:     VTX_READ_128 T42.XYZW, T41.X, 16, #1
4387 ; EG-NEXT:     VTX_READ_128 T43.XYZW, T41.X, 32, #1
4388 ; EG-NEXT:     VTX_READ_128 T44.XYZW, T41.X, 0, #1
4389 ; EG-NEXT:     VTX_READ_128 T45.XYZW, T41.X, 48, #1
4390 ; EG-NEXT:     VTX_READ_128 T46.XYZW, T41.X, 64, #1
4391 ; EG-NEXT:     VTX_READ_128 T47.XYZW, T41.X, 80, #1
4392 ; EG-NEXT:     VTX_READ_128 T48.XYZW, T41.X, 96, #1
4393 ; EG-NEXT:     VTX_READ_128 T41.XYZW, T41.X, 112, #1
4394 ; EG-NEXT:    ALU clause starting at 38:
4395 ; EG-NEXT:     LSHR T35.X, KC0[2].Y, literal.x,
4396 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4397 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4398 ; EG-NEXT:     LSHR T36.X, PV.W, literal.x,
4399 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4400 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
4401 ; EG-NEXT:     LSHR T37.X, PV.W, literal.x,
4402 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4403 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
4404 ; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
4405 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4406 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
4407 ; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
4408 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4409 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
4410 ; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
4411 ; EG-NEXT:     MOV * T41.X, KC0[2].Z,
4412 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4413 ; EG-NEXT:    ALU clause starting at 56:
4414 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
4415 ; EG-NEXT:    96(1.345247e-43), 0(0.000000e+00)
4416 ; EG-NEXT:     LSHR T49.X, PV.W, literal.x,
4417 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4418 ; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
4419 ; EG-NEXT:     LSHR T50.X, PV.W, literal.x,
4420 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4421 ; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
4422 ; EG-NEXT:     LSHR T51.X, PV.W, literal.x,
4423 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4424 ; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
4425 ; EG-NEXT:     LSHR T52.X, PV.W, literal.x,
4426 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4427 ; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
4428 ; EG-NEXT:     LSHR T53.X, PV.W, literal.x,
4429 ; EG-NEXT:     LSHR T0.Y, T41.W, literal.y,
4430 ; EG-NEXT:     LSHR T0.Z, T41.Y, literal.y,
4431 ; EG-NEXT:     LSHR T0.W, T48.W, literal.y, BS:VEC_120/SCL_212
4432 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
4433 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4434 ; EG-NEXT:    176(2.466285e-43), 0(0.000000e+00)
4435 ; EG-NEXT:     LSHR T54.X, PS, literal.x,
4436 ; EG-NEXT:     LSHR T1.Y, T48.Y, literal.y,
4437 ; EG-NEXT:     LSHR T1.Z, T47.W, literal.y,
4438 ; EG-NEXT:     LSHR T1.W, T47.Y, literal.y, BS:VEC_120/SCL_212
4439 ; EG-NEXT:     ADD_INT * T2.W, KC0[2].Y, literal.z,
4440 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4441 ; EG-NEXT:    192(2.690493e-43), 0(0.000000e+00)
4442 ; EG-NEXT:     LSHR T55.X, PS, literal.x,
4443 ; EG-NEXT:     LSHR T2.Y, T46.W, literal.y,
4444 ; EG-NEXT:     LSHR T2.Z, T46.Y, literal.y,
4445 ; EG-NEXT:     LSHR T2.W, T45.W, literal.y, BS:VEC_120/SCL_212
4446 ; EG-NEXT:     ADD_INT * T3.W, KC0[2].Y, literal.z,
4447 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4448 ; EG-NEXT:    208(2.914701e-43), 0(0.000000e+00)
4449 ; EG-NEXT:     LSHR T56.X, PS, literal.x,
4450 ; EG-NEXT:     LSHR T3.Y, T45.Y, literal.y,
4451 ; EG-NEXT:     BFE_INT T57.Z, T44.Y, 0.0, literal.y, BS:VEC_120/SCL_212
4452 ; EG-NEXT:     LSHR T3.W, T43.W, literal.y,
4453 ; EG-NEXT:     LSHR * T4.W, T43.Y, literal.y,
4454 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4455 ; EG-NEXT:     BFE_INT T57.X, T44.X, 0.0, literal.x,
4456 ; EG-NEXT:     LSHR T4.Y, T42.W, literal.x,
4457 ; EG-NEXT:     BFE_INT T58.Z, T44.W, 0.0, literal.x, BS:VEC_120/SCL_212
4458 ; EG-NEXT:     LSHR T5.W, T42.Y, literal.x,
4459 ; EG-NEXT:     LSHR * T6.W, T44.Y, literal.x,
4460 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4461 ; EG-NEXT:     BFE_INT T58.X, T44.Z, 0.0, literal.x,
4462 ; EG-NEXT:     LSHR T5.Y, T44.W, literal.x,
4463 ; EG-NEXT:     BFE_INT T59.Z, T42.Y, 0.0, literal.x,
4464 ; EG-NEXT:     BFE_INT T57.W, PS, 0.0, literal.x,
4465 ; EG-NEXT:     LSHR * T6.W, T44.X, literal.x,
4466 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4467 ; EG-NEXT:     BFE_INT T59.X, T42.X, 0.0, literal.x,
4468 ; EG-NEXT:     BFE_INT T57.Y, PS, 0.0, literal.x,
4469 ; EG-NEXT:     BFE_INT T60.Z, T42.W, 0.0, literal.x,
4470 ; EG-NEXT:     BFE_INT T58.W, PV.Y, 0.0, literal.x,
4471 ; EG-NEXT:     LSHR * T6.W, T44.Z, literal.x,
4472 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4473 ; EG-NEXT:     BFE_INT T60.X, T42.Z, 0.0, literal.x,
4474 ; EG-NEXT:     BFE_INT T58.Y, PS, 0.0, literal.x,
4475 ; EG-NEXT:     BFE_INT T44.Z, T43.Y, 0.0, literal.x,
4476 ; EG-NEXT:     BFE_INT T59.W, T5.W, 0.0, literal.x,
4477 ; EG-NEXT:     LSHR * T5.W, T42.X, literal.x,
4478 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4479 ; EG-NEXT:     BFE_INT T44.X, T43.X, 0.0, literal.x,
4480 ; EG-NEXT:     BFE_INT T59.Y, PS, 0.0, literal.x,
4481 ; EG-NEXT:     BFE_INT T61.Z, T43.W, 0.0, literal.x,
4482 ; EG-NEXT:     BFE_INT T60.W, T4.Y, 0.0, literal.x,
4483 ; EG-NEXT:     LSHR * T5.W, T42.Z, literal.x,
4484 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4485 ; EG-NEXT:     BFE_INT T61.X, T43.Z, 0.0, literal.x,
4486 ; EG-NEXT:     BFE_INT T60.Y, PS, 0.0, literal.x,
4487 ; EG-NEXT:     BFE_INT T42.Z, T45.Y, 0.0, literal.x,
4488 ; EG-NEXT:     BFE_INT * T44.W, T4.W, 0.0, literal.x,
4489 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4490 ; EG-NEXT:    ALU clause starting at 132:
4491 ; EG-NEXT:     LSHR * T4.W, T43.X, literal.x,
4492 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4493 ; EG-NEXT:     BFE_INT T42.X, T45.X, 0.0, literal.x,
4494 ; EG-NEXT:     BFE_INT T44.Y, PV.W, 0.0, literal.x,
4495 ; EG-NEXT:     BFE_INT T62.Z, T45.W, 0.0, literal.x,
4496 ; EG-NEXT:     BFE_INT T61.W, T3.W, 0.0, literal.x, BS:VEC_120/SCL_212
4497 ; EG-NEXT:     LSHR * T3.W, T43.Z, literal.x,
4498 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4499 ; EG-NEXT:     BFE_INT T62.X, T45.Z, 0.0, literal.x,
4500 ; EG-NEXT:     BFE_INT T61.Y, PS, 0.0, literal.x,
4501 ; EG-NEXT:     BFE_INT T43.Z, T46.Y, 0.0, literal.x,
4502 ; EG-NEXT:     BFE_INT T42.W, T3.Y, 0.0, literal.x, BS:VEC_120/SCL_212
4503 ; EG-NEXT:     LSHR * T3.W, T45.X, literal.x,
4504 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4505 ; EG-NEXT:     BFE_INT T43.X, T46.X, 0.0, literal.x,
4506 ; EG-NEXT:     BFE_INT T42.Y, PS, 0.0, literal.x,
4507 ; EG-NEXT:     BFE_INT T63.Z, T46.W, 0.0, literal.x,
4508 ; EG-NEXT:     BFE_INT T62.W, T2.W, 0.0, literal.x, BS:VEC_120/SCL_212
4509 ; EG-NEXT:     LSHR * T2.W, T45.Z, literal.x,
4510 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4511 ; EG-NEXT:     BFE_INT T63.X, T46.Z, 0.0, literal.x,
4512 ; EG-NEXT:     BFE_INT T62.Y, PS, 0.0, literal.x,
4513 ; EG-NEXT:     BFE_INT T45.Z, T47.Y, 0.0, literal.x,
4514 ; EG-NEXT:     BFE_INT T43.W, T2.Z, 0.0, literal.x, BS:VEC_120/SCL_212
4515 ; EG-NEXT:     LSHR * T2.W, T46.X, literal.x,
4516 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4517 ; EG-NEXT:     BFE_INT T45.X, T47.X, 0.0, literal.x,
4518 ; EG-NEXT:     BFE_INT T43.Y, PS, 0.0, literal.x,
4519 ; EG-NEXT:     BFE_INT T64.Z, T47.W, 0.0, literal.x,
4520 ; EG-NEXT:     BFE_INT T63.W, T2.Y, 0.0, literal.x,
4521 ; EG-NEXT:     LSHR * T2.W, T46.Z, literal.x,
4522 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4523 ; EG-NEXT:     BFE_INT T64.X, T47.Z, 0.0, literal.x,
4524 ; EG-NEXT:     BFE_INT T63.Y, PS, 0.0, literal.x,
4525 ; EG-NEXT:     BFE_INT T46.Z, T48.Y, 0.0, literal.x,
4526 ; EG-NEXT:     BFE_INT T45.W, T1.W, 0.0, literal.x,
4527 ; EG-NEXT:     LSHR * T1.W, T47.X, literal.x,
4528 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4529 ; EG-NEXT:     BFE_INT T46.X, T48.X, 0.0, literal.x,
4530 ; EG-NEXT:     BFE_INT T45.Y, PS, 0.0, literal.x,
4531 ; EG-NEXT:     BFE_INT T65.Z, T48.W, 0.0, literal.x,
4532 ; EG-NEXT:     BFE_INT T64.W, T1.Z, 0.0, literal.x,
4533 ; EG-NEXT:     LSHR * T1.W, T47.Z, literal.x,
4534 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4535 ; EG-NEXT:     BFE_INT T65.X, T48.Z, 0.0, literal.x,
4536 ; EG-NEXT:     BFE_INT T64.Y, PS, 0.0, literal.x,
4537 ; EG-NEXT:     BFE_INT T47.Z, T41.Y, 0.0, literal.x,
4538 ; EG-NEXT:     BFE_INT T46.W, T1.Y, 0.0, literal.x, BS:VEC_120/SCL_212
4539 ; EG-NEXT:     LSHR * T1.W, T48.X, literal.x,
4540 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4541 ; EG-NEXT:     BFE_INT T47.X, T41.X, 0.0, literal.x,
4542 ; EG-NEXT:     BFE_INT T46.Y, PS, 0.0, literal.x,
4543 ; EG-NEXT:     BFE_INT T66.Z, T41.W, 0.0, literal.x,
4544 ; EG-NEXT:     BFE_INT T65.W, T0.W, 0.0, literal.x, BS:VEC_120/SCL_212
4545 ; EG-NEXT:     LSHR * T0.W, T48.Z, literal.x,
4546 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4547 ; EG-NEXT:     BFE_INT T66.X, T41.Z, 0.0, literal.x,
4548 ; EG-NEXT:     BFE_INT T65.Y, PS, 0.0, literal.x,
4549 ; EG-NEXT:     LSHR T1.Z, T41.X, literal.x,
4550 ; EG-NEXT:     BFE_INT T47.W, T0.Z, 0.0, literal.x, BS:VEC_120/SCL_212
4551 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4552 ; EG-NEXT:    16(2.242078e-44), 224(3.138909e-43)
4553 ; EG-NEXT:     LSHR T41.X, PS, literal.x,
4554 ; EG-NEXT:     BFE_INT T47.Y, PV.Z, 0.0, literal.y,
4555 ; EG-NEXT:     LSHR T0.Z, T41.Z, literal.y,
4556 ; EG-NEXT:     BFE_INT T66.W, T0.Y, 0.0, literal.y,
4557 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
4558 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4559 ; EG-NEXT:    240(3.363116e-43), 0(0.000000e+00)
4560 ; EG-NEXT:     LSHR T48.X, PS, literal.x,
4561 ; EG-NEXT:     BFE_INT * T66.Y, PV.Z, 0.0, literal.y,
4562 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4563   %load = load <64 x i16>, ptr addrspace(4) %in
4564   %ext = sext <64 x i16> %load to <64 x i32>
4565   store <64 x i32> %ext, ptr addrspace(1) %out
4566   ret void
4569 define amdgpu_kernel void @constant_zextload_i16_to_i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4570 ; GCN-NOHSA-SI-LABEL: constant_zextload_i16_to_i64:
4571 ; GCN-NOHSA-SI:       ; %bb.0:
4572 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4573 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
4574 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
4575 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
4576 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
4577 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4578 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
4579 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
4580 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
4581 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
4582 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
4583 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
4584 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
4585 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4586 ; GCN-NOHSA-SI-NEXT:    s_endpgm
4588 ; GCN-HSA-LABEL: constant_zextload_i16_to_i64:
4589 ; GCN-HSA:       ; %bb.0:
4590 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4591 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4592 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4593 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4594 ; GCN-HSA-NEXT:    flat_load_ushort v0, v[0:1]
4595 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4596 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
4597 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
4598 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
4599 ; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4600 ; GCN-HSA-NEXT:    s_endpgm
4602 ; GCN-NOHSA-VI-LABEL: constant_zextload_i16_to_i64:
4603 ; GCN-NOHSA-VI:       ; %bb.0:
4604 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4605 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, 0
4606 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4607 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
4608 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
4609 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v2, v[0:1]
4610 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
4611 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
4612 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
4613 ; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
4614 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
4615 ; GCN-NOHSA-VI-NEXT:    s_endpgm
4617 ; EG-LABEL: constant_zextload_i16_to_i64:
4618 ; EG:       ; %bb.0:
4619 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4620 ; EG-NEXT:    TEX 0 @6
4621 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
4622 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4623 ; EG-NEXT:    CF_END
4624 ; EG-NEXT:    PAD
4625 ; EG-NEXT:    Fetch clause starting at 6:
4626 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
4627 ; EG-NEXT:    ALU clause starting at 8:
4628 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4629 ; EG-NEXT:    ALU clause starting at 9:
4630 ; EG-NEXT:     MOV * T0.Y, 0.0,
4631 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
4632 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4633   %a = load i16, ptr addrspace(4) %in
4634   %ext = zext i16 %a to i64
4635   store i64 %ext, ptr addrspace(1) %out
4636   ret void
4639 ; FIXME: Need to optimize this sequence to avoid extra bfe:
4640 ;  t28: i32,ch = load<LD2[%in(addrspace=1)], anyext from i16> t12, t27, undef:i64
4641 ;          t31: i64 = any_extend t28
4642 ;        t33: i64 = sign_extend_inreg t31, ValueType:ch:i16
4643 ; TODO: These could be expanded earlier using ASHR 15
4644 define amdgpu_kernel void @constant_sextload_i16_to_i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4645 ; GCN-NOHSA-SI-LABEL: constant_sextload_i16_to_i64:
4646 ; GCN-NOHSA-SI:       ; %bb.0:
4647 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4648 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
4649 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
4650 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
4651 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
4652 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4653 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
4654 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
4655 ; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
4656 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
4657 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
4658 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
4659 ; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4660 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4661 ; GCN-NOHSA-SI-NEXT:    s_endpgm
4663 ; GCN-HSA-LABEL: constant_sextload_i16_to_i64:
4664 ; GCN-HSA:       ; %bb.0:
4665 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4666 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4667 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4668 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4669 ; GCN-HSA-NEXT:    flat_load_sshort v0, v[0:1]
4670 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4671 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
4672 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
4673 ; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4674 ; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4675 ; GCN-HSA-NEXT:    s_endpgm
4677 ; GCN-NOHSA-VI-LABEL: constant_sextload_i16_to_i64:
4678 ; GCN-NOHSA-VI:       ; %bb.0:
4679 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4680 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4681 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
4682 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
4683 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v2, v[0:1]
4684 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
4685 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
4686 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
4687 ; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v2, 0, 16
4688 ; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
4689 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
4690 ; GCN-NOHSA-VI-NEXT:    s_endpgm
4692 ; EG-LABEL: constant_sextload_i16_to_i64:
4693 ; EG:       ; %bb.0:
4694 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4695 ; EG-NEXT:    TEX 0 @6
4696 ; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
4697 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4698 ; EG-NEXT:    CF_END
4699 ; EG-NEXT:    PAD
4700 ; EG-NEXT:    Fetch clause starting at 6:
4701 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
4702 ; EG-NEXT:    ALU clause starting at 8:
4703 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4704 ; EG-NEXT:    ALU clause starting at 9:
4705 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
4706 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
4707 ; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
4708 ; EG-NEXT:     ASHR * T0.Y, PV.X, literal.x,
4709 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
4710   %a = load i16, ptr addrspace(4) %in
4711   %ext = sext i16 %a to i64
4712   store i64 %ext, ptr addrspace(1) %out
4713   ret void
4716 define amdgpu_kernel void @constant_zextload_v1i16_to_v1i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4717 ; GCN-NOHSA-SI-LABEL: constant_zextload_v1i16_to_v1i64:
4718 ; GCN-NOHSA-SI:       ; %bb.0:
4719 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4720 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
4721 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
4722 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
4723 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
4724 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4725 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
4726 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
4727 ; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
4728 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
4729 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
4730 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
4731 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
4732 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4733 ; GCN-NOHSA-SI-NEXT:    s_endpgm
4735 ; GCN-HSA-LABEL: constant_zextload_v1i16_to_v1i64:
4736 ; GCN-HSA:       ; %bb.0:
4737 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4738 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4739 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4740 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4741 ; GCN-HSA-NEXT:    flat_load_ushort v0, v[0:1]
4742 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4743 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
4744 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
4745 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
4746 ; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4747 ; GCN-HSA-NEXT:    s_endpgm
4749 ; GCN-NOHSA-VI-LABEL: constant_zextload_v1i16_to_v1i64:
4750 ; GCN-NOHSA-VI:       ; %bb.0:
4751 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4752 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, 0
4753 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4754 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
4755 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
4756 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v2, v[0:1]
4757 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
4758 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
4759 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
4760 ; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v2, 0xffff, v2
4761 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
4762 ; GCN-NOHSA-VI-NEXT:    s_endpgm
4764 ; EG-LABEL: constant_zextload_v1i16_to_v1i64:
4765 ; EG:       ; %bb.0:
4766 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4767 ; EG-NEXT:    TEX 0 @6
4768 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
4769 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4770 ; EG-NEXT:    CF_END
4771 ; EG-NEXT:    PAD
4772 ; EG-NEXT:    Fetch clause starting at 6:
4773 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
4774 ; EG-NEXT:    ALU clause starting at 8:
4775 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4776 ; EG-NEXT:    ALU clause starting at 9:
4777 ; EG-NEXT:     MOV * T0.Y, 0.0,
4778 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
4779 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4780   %load = load <1 x i16>, ptr addrspace(4) %in
4781   %ext = zext <1 x i16> %load to <1 x i64>
4782   store <1 x i64> %ext, ptr addrspace(1) %out
4783   ret void
4786 define amdgpu_kernel void @constant_sextload_v1i16_to_v1i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4787 ; GCN-NOHSA-SI-LABEL: constant_sextload_v1i16_to_v1i64:
4788 ; GCN-NOHSA-SI:       ; %bb.0:
4789 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4790 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
4791 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
4792 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
4793 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
4794 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4795 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
4796 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
4797 ; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
4798 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
4799 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
4800 ; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
4801 ; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4802 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4803 ; GCN-NOHSA-SI-NEXT:    s_endpgm
4805 ; GCN-HSA-LABEL: constant_sextload_v1i16_to_v1i64:
4806 ; GCN-HSA:       ; %bb.0:
4807 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4808 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4809 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4810 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4811 ; GCN-HSA-NEXT:    flat_load_sshort v0, v[0:1]
4812 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4813 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
4814 ; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
4815 ; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4816 ; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4817 ; GCN-HSA-NEXT:    s_endpgm
4819 ; GCN-NOHSA-VI-LABEL: constant_sextload_v1i16_to_v1i64:
4820 ; GCN-NOHSA-VI:       ; %bb.0:
4821 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4822 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4823 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
4824 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
4825 ; GCN-NOHSA-VI-NEXT:    flat_load_ushort v2, v[0:1]
4826 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
4827 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
4828 ; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
4829 ; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v2, 0, 16
4830 ; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
4831 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
4832 ; GCN-NOHSA-VI-NEXT:    s_endpgm
4834 ; EG-LABEL: constant_sextload_v1i16_to_v1i64:
4835 ; EG:       ; %bb.0:
4836 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4837 ; EG-NEXT:    TEX 0 @6
4838 ; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
4839 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4840 ; EG-NEXT:    CF_END
4841 ; EG-NEXT:    PAD
4842 ; EG-NEXT:    Fetch clause starting at 6:
4843 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
4844 ; EG-NEXT:    ALU clause starting at 8:
4845 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4846 ; EG-NEXT:    ALU clause starting at 9:
4847 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
4848 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
4849 ; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
4850 ; EG-NEXT:     ASHR * T0.Y, PV.X, literal.x,
4851 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
4852   %load = load <1 x i16>, ptr addrspace(4) %in
4853   %ext = sext <1 x i16> %load to <1 x i64>
4854   store <1 x i64> %ext, ptr addrspace(1) %out
4855   ret void
4858 define amdgpu_kernel void @constant_zextload_v2i16_to_v2i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4859 ; GCN-NOHSA-SI-LABEL: constant_zextload_v2i16_to_v2i64:
4860 ; GCN-NOHSA-SI:       ; %bb.0:
4861 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4862 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4863 ; GCN-NOHSA-SI-NEXT:    s_load_dword s2, s[2:3], 0x0
4864 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
4865 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
4866 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4867 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s4, s2, 16
4868 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s2, 0xffff
4869 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
4870 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
4871 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
4872 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
4873 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
4874 ; GCN-NOHSA-SI-NEXT:    s_endpgm
4876 ; GCN-HSA-LABEL: constant_zextload_v2i16_to_v2i64:
4877 ; GCN-HSA:       ; %bb.0:
4878 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4879 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
4880 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
4881 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4882 ; GCN-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
4883 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4884 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4885 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4886 ; GCN-HSA-NEXT:    s_lshr_b32 s0, s2, 16
4887 ; GCN-HSA-NEXT:    s_and_b32 s1, s2, 0xffff
4888 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s1
4889 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4890 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4891 ; GCN-HSA-NEXT:    s_endpgm
4893 ; GCN-NOHSA-VI-LABEL: constant_zextload_v2i16_to_v2i64:
4894 ; GCN-NOHSA-VI:       ; %bb.0:
4895 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4896 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
4897 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
4898 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4899 ; GCN-NOHSA-VI-NEXT:    s_load_dword s2, s[2:3], 0x0
4900 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4901 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4902 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4903 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s0, s2, 16
4904 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s1, s2, 0xffff
4905 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s1
4906 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s0
4907 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4908 ; GCN-NOHSA-VI-NEXT:    s_endpgm
4910 ; EG-LABEL: constant_zextload_v2i16_to_v2i64:
4911 ; EG:       ; %bb.0:
4912 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4913 ; EG-NEXT:    TEX 0 @6
4914 ; EG-NEXT:    ALU 6, @9, KC0[CB0:0-32], KC1[]
4915 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
4916 ; EG-NEXT:    CF_END
4917 ; EG-NEXT:    PAD
4918 ; EG-NEXT:    Fetch clause starting at 6:
4919 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
4920 ; EG-NEXT:    ALU clause starting at 8:
4921 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
4922 ; EG-NEXT:    ALU clause starting at 9:
4923 ; EG-NEXT:     LSHR * T4.Z, T4.X, literal.x,
4924 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4925 ; EG-NEXT:     AND_INT T4.X, T4.X, literal.x,
4926 ; EG-NEXT:     MOV T4.Y, 0.0,
4927 ; EG-NEXT:     MOV T4.W, 0.0,
4928 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
4929 ; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
4930   %load = load <2 x i16>, ptr addrspace(4) %in
4931   %ext = zext <2 x i16> %load to <2 x i64>
4932   store <2 x i64> %ext, ptr addrspace(1) %out
4933   ret void
4936 define amdgpu_kernel void @constant_sextload_v2i16_to_v2i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4937 ; GCN-NOHSA-SI-LABEL: constant_sextload_v2i16_to_v2i64:
4938 ; GCN-NOHSA-SI:       ; %bb.0:
4939 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4940 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4941 ; GCN-NOHSA-SI-NEXT:    s_load_dword s2, s[2:3], 0x0
4942 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
4943 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4944 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s4, s2, 16
4945 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[6:7], s[2:3], 0x100000
4946 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
4947 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
4948 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
4949 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s7
4950 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
4951 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s5
4952 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
4953 ; GCN-NOHSA-SI-NEXT:    s_endpgm
4955 ; GCN-HSA-LABEL: constant_sextload_v2i16_to_v2i64:
4956 ; GCN-HSA:       ; %bb.0:
4957 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4958 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4959 ; GCN-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
4960 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4961 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4962 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4963 ; GCN-HSA-NEXT:    s_lshr_b32 s0, s2, 16
4964 ; GCN-HSA-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x100000
4965 ; GCN-HSA-NEXT:    s_bfe_i64 s[0:1], s[0:1], 0x100000
4966 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4967 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4968 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4969 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
4970 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4971 ; GCN-HSA-NEXT:    s_endpgm
4973 ; GCN-NOHSA-VI-LABEL: constant_sextload_v2i16_to_v2i64:
4974 ; GCN-NOHSA-VI:       ; %bb.0:
4975 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4976 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4977 ; GCN-NOHSA-VI-NEXT:    s_load_dword s2, s[2:3], 0x0
4978 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
4979 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
4980 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4981 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[0:1], s[2:3], 0x100000
4982 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s2, 16
4983 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x100000
4984 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
4985 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s1
4986 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
4987 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s3
4988 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4989 ; GCN-NOHSA-VI-NEXT:    s_endpgm
4991 ; EG-LABEL: constant_sextload_v2i16_to_v2i64:
4992 ; EG:       ; %bb.0:
4993 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4994 ; EG-NEXT:    TEX 0 @6
4995 ; EG-NEXT:    ALU 8, @9, KC0[CB0:0-32], KC1[]
4996 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
4997 ; EG-NEXT:    CF_END
4998 ; EG-NEXT:    PAD
4999 ; EG-NEXT:    Fetch clause starting at 6:
5000 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
5001 ; EG-NEXT:    ALU clause starting at 8:
5002 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
5003 ; EG-NEXT:    ALU clause starting at 9:
5004 ; EG-NEXT:     ASHR * T4.W, T4.X, literal.x,
5005 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5006 ; EG-NEXT:     ASHR * T4.Z, T4.X, literal.x,
5007 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5008 ; EG-NEXT:     BFE_INT T4.X, T4.X, 0.0, literal.x,
5009 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
5010 ; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
5011 ; EG-NEXT:     ASHR * T4.Y, PV.X, literal.x,
5012 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5013   %load = load <2 x i16>, ptr addrspace(4) %in
5014   %ext = sext <2 x i16> %load to <2 x i64>
5015   store <2 x i64> %ext, ptr addrspace(1) %out
5016   ret void
5019 define amdgpu_kernel void @constant_zextload_v4i16_to_v4i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5020 ; GCN-NOHSA-SI-LABEL: constant_zextload_v4i16_to_v4i64:
5021 ; GCN-NOHSA-SI:       ; %bb.0:
5022 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5023 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5024 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
5025 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
5026 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
5027 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
5028 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
5029 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5030 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s6, s5, 16
5031 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s7, s4, 16
5032 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
5033 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
5034 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
5035 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s6
5036 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5037 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5038 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
5039 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
5040 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5041 ; GCN-NOHSA-SI-NEXT:    s_endpgm
5043 ; GCN-HSA-LABEL: constant_zextload_v4i16_to_v4i64:
5044 ; GCN-HSA:       ; %bb.0:
5045 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5046 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
5047 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
5048 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5049 ; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
5050 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5051 ; GCN-HSA-NEXT:    s_lshr_b32 s4, s3, 16
5052 ; GCN-HSA-NEXT:    s_lshr_b32 s5, s2, 16
5053 ; GCN-HSA-NEXT:    s_and_b32 s6, s2, 0xffff
5054 ; GCN-HSA-NEXT:    s_and_b32 s2, s3, 0xffff
5055 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5056 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
5057 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5058 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5059 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s4
5060 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5061 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5062 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5063 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
5064 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
5065 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5066 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5067 ; GCN-HSA-NEXT:    s_endpgm
5069 ; GCN-NOHSA-VI-LABEL: constant_zextload_v4i16_to_v4i64:
5070 ; GCN-NOHSA-VI:       ; %bb.0:
5071 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5072 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
5073 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
5074 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5075 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
5076 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5077 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s2, 16
5078 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s2, 0xffff
5079 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s3, 16
5080 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s3, s3, 0xffff
5081 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
5082 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 16
5083 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s3
5084 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5085 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5086 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5087 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5088 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
5089 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s5
5090 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
5091 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
5092 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5093 ; GCN-NOHSA-VI-NEXT:    s_endpgm
5095 ; EG-LABEL: constant_zextload_v4i16_to_v4i64:
5096 ; EG:       ; %bb.0:
5097 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5098 ; EG-NEXT:    TEX 0 @6
5099 ; EG-NEXT:    ALU 14, @9, KC0[CB0:0-32], KC1[]
5100 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T8.X, 0
5101 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T7.X, 1
5102 ; EG-NEXT:    CF_END
5103 ; EG-NEXT:    Fetch clause starting at 6:
5104 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
5105 ; EG-NEXT:    ALU clause starting at 8:
5106 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
5107 ; EG-NEXT:    ALU clause starting at 9:
5108 ; EG-NEXT:     LSHR * T6.Z, T5.Y, literal.x,
5109 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5110 ; EG-NEXT:     AND_INT T6.X, T5.Y, literal.x,
5111 ; EG-NEXT:     MOV T6.Y, 0.0,
5112 ; EG-NEXT:     LSHR T5.Z, T5.X, literal.y,
5113 ; EG-NEXT:     AND_INT * T5.X, T5.X, literal.x,
5114 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5115 ; EG-NEXT:     MOV T5.Y, 0.0,
5116 ; EG-NEXT:     MOV T6.W, 0.0,
5117 ; EG-NEXT:     MOV * T5.W, 0.0,
5118 ; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
5119 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5120 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5121 ; EG-NEXT:     LSHR * T8.X, PV.W, literal.x,
5122 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5123   %load = load <4 x i16>, ptr addrspace(4) %in
5124   %ext = zext <4 x i16> %load to <4 x i64>
5125   store <4 x i64> %ext, ptr addrspace(1) %out
5126   ret void
5129 define amdgpu_kernel void @constant_sextload_v4i16_to_v4i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5130 ; GCN-NOHSA-SI-LABEL: constant_sextload_v4i16_to_v4i64:
5131 ; GCN-NOHSA-SI:       ; %bb.0:
5132 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5133 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5134 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
5135 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
5136 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
5137 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5138 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, s5
5139 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s8, s4, 16
5140 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[10:11], s[4:5], 0x100000
5141 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[4:5], s[4:5], 48
5142 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
5143 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x100000
5144 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
5145 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s7
5146 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
5147 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s5
5148 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5149 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5150 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
5151 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s11
5152 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s8
5153 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s9
5154 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5155 ; GCN-NOHSA-SI-NEXT:    s_endpgm
5157 ; GCN-HSA-LABEL: constant_sextload_v4i16_to_v4i64:
5158 ; GCN-HSA:       ; %bb.0:
5159 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5160 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5161 ; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
5162 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5163 ; GCN-HSA-NEXT:    s_mov_b32 s4, s3
5164 ; GCN-HSA-NEXT:    s_lshr_b32 s6, s2, 16
5165 ; GCN-HSA-NEXT:    s_bfe_i64 s[8:9], s[2:3], 0x100000
5166 ; GCN-HSA-NEXT:    s_ashr_i64 s[2:3], s[2:3], 48
5167 ; GCN-HSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
5168 ; GCN-HSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
5169 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
5170 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
5171 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s3
5172 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5173 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5174 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
5175 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
5176 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5177 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5178 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5179 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
5180 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
5181 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
5182 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
5183 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5184 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5185 ; GCN-HSA-NEXT:    s_endpgm
5187 ; GCN-NOHSA-VI-LABEL: constant_sextload_v4i16_to_v4i64:
5188 ; GCN-NOHSA-VI:       ; %bb.0:
5189 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5190 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5191 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
5192 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5193 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[4:5], s[2:3], 0x100000
5194 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s2, 16
5195 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, s3
5196 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s8, s3, 16
5197 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x100000
5198 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
5199 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x100000
5200 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
5201 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s6, s0, 16
5202 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s7
5203 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s7, s1, 0
5204 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s6
5205 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s8
5206 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s9
5207 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s7
5208 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5209 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
5210 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
5211 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s5
5212 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
5213 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s3
5214 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
5215 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5216 ; GCN-NOHSA-VI-NEXT:    s_endpgm
5218 ; EG-LABEL: constant_sextload_v4i16_to_v4i64:
5219 ; EG:       ; %bb.0:
5220 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5221 ; EG-NEXT:    TEX 0 @6
5222 ; EG-NEXT:    ALU 16, @9, KC0[CB0:0-32], KC1[]
5223 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T8.X, 0
5224 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1
5225 ; EG-NEXT:    CF_END
5226 ; EG-NEXT:    Fetch clause starting at 6:
5227 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
5228 ; EG-NEXT:    ALU clause starting at 8:
5229 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
5230 ; EG-NEXT:    ALU clause starting at 9:
5231 ; EG-NEXT:     ASHR * T5.W, T5.X, literal.x,
5232 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5233 ; EG-NEXT:     LSHR T6.X, KC0[2].Y, literal.x,
5234 ; EG-NEXT:     ASHR T5.Z, T5.X, literal.y,
5235 ; EG-NEXT:     ASHR * T7.W, T5.Y, literal.z,
5236 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5237 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5238 ; EG-NEXT:     BFE_INT T5.X, T5.X, 0.0, literal.x,
5239 ; EG-NEXT:     ASHR * T7.Z, T5.Y, literal.x,
5240 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5241 ; EG-NEXT:     BFE_INT T7.X, T5.Y, 0.0, literal.x,
5242 ; EG-NEXT:     ASHR T5.Y, PV.X, literal.y,
5243 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
5244 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5245 ; EG-NEXT:     LSHR T8.X, PV.W, literal.x,
5246 ; EG-NEXT:     ASHR * T7.Y, PV.X, literal.y,
5247 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5248   %load = load <4 x i16>, ptr addrspace(4) %in
5249   %ext = sext <4 x i16> %load to <4 x i64>
5250   store <4 x i64> %ext, ptr addrspace(1) %out
5251   ret void
5254 define amdgpu_kernel void @constant_zextload_v8i16_to_v8i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5255 ; GCN-NOHSA-SI-LABEL: constant_zextload_v8i16_to_v8i64:
5256 ; GCN-NOHSA-SI:       ; %bb.0:
5257 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5258 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5259 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5260 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
5261 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
5262 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
5263 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
5264 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5265 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s8, s5, 16
5266 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s9, s7, 16
5267 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s10, s6, 16
5268 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s11, s4, 16
5269 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
5270 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
5271 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
5272 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
5273 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s7
5274 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
5275 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5276 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5277 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
5278 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s8
5279 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5280 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5281 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
5282 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s10
5283 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
5284 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5285 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
5286 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
5287 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5288 ; GCN-NOHSA-SI-NEXT:    s_endpgm
5290 ; GCN-HSA-LABEL: constant_zextload_v8i16_to_v8i64:
5291 ; GCN-HSA:       ; %bb.0:
5292 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5293 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
5294 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
5295 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5296 ; GCN-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5297 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5298 ; GCN-HSA-NEXT:    s_lshr_b32 s8, s5, 16
5299 ; GCN-HSA-NEXT:    s_lshr_b32 s2, s7, 16
5300 ; GCN-HSA-NEXT:    s_lshr_b32 s9, s6, 16
5301 ; GCN-HSA-NEXT:    s_lshr_b32 s10, s4, 16
5302 ; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
5303 ; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
5304 ; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
5305 ; GCN-HSA-NEXT:    s_and_b32 s3, s7, 0xffff
5306 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
5307 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
5308 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s3
5309 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5310 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5311 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5312 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
5313 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5314 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5315 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5316 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5317 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
5318 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s5
5319 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s8
5320 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5321 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5322 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5323 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
5324 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
5325 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5326 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5327 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5328 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
5329 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s10
5330 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5331 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5332 ; GCN-HSA-NEXT:    s_endpgm
5334 ; GCN-NOHSA-VI-LABEL: constant_zextload_v8i16_to_v8i64:
5335 ; GCN-NOHSA-VI:       ; %bb.0:
5336 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5337 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
5338 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
5339 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5340 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5341 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5342 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s8, s4, 16
5343 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
5344 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s9, s5, 16
5345 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
5346 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s10, s6, 16
5347 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
5348 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s7, 16
5349 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s3, s7, 0xffff
5350 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
5351 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 48
5352 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s3
5353 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5354 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5355 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5356 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 32
5357 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5358 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5359 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5360 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5361 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 16
5362 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
5363 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s10
5364 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5365 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5366 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5367 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s5
5368 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
5369 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5370 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5371 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
5372 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
5373 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s8
5374 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
5375 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5376 ; GCN-NOHSA-VI-NEXT:    s_endpgm
5378 ; EG-LABEL: constant_zextload_v8i16_to_v8i64:
5379 ; EG:       ; %bb.0:
5380 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
5381 ; EG-NEXT:    TEX 0 @8
5382 ; EG-NEXT:    ALU 30, @11, KC0[CB0:0-32], KC1[]
5383 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T14.X, 0
5384 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T13.X, 0
5385 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T12.X, 0
5386 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T11.X, 1
5387 ; EG-NEXT:    CF_END
5388 ; EG-NEXT:    Fetch clause starting at 8:
5389 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
5390 ; EG-NEXT:    ALU clause starting at 10:
5391 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
5392 ; EG-NEXT:    ALU clause starting at 11:
5393 ; EG-NEXT:     LSHR * T8.Z, T7.W, literal.x,
5394 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5395 ; EG-NEXT:     AND_INT T8.X, T7.W, literal.x,
5396 ; EG-NEXT:     MOV T8.Y, 0.0,
5397 ; EG-NEXT:     LSHR T9.Z, T7.Z, literal.y,
5398 ; EG-NEXT:     AND_INT * T9.X, T7.Z, literal.x,
5399 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5400 ; EG-NEXT:     MOV T9.Y, 0.0,
5401 ; EG-NEXT:     LSHR * T10.Z, T7.Y, literal.x,
5402 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5403 ; EG-NEXT:     AND_INT T10.X, T7.Y, literal.x,
5404 ; EG-NEXT:     MOV T10.Y, 0.0,
5405 ; EG-NEXT:     LSHR T7.Z, T7.X, literal.y,
5406 ; EG-NEXT:     AND_INT * T7.X, T7.X, literal.x,
5407 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5408 ; EG-NEXT:     MOV T7.Y, 0.0,
5409 ; EG-NEXT:     MOV T8.W, 0.0,
5410 ; EG-NEXT:     MOV * T9.W, 0.0,
5411 ; EG-NEXT:     MOV T10.W, 0.0,
5412 ; EG-NEXT:     MOV * T7.W, 0.0,
5413 ; EG-NEXT:     LSHR T11.X, KC0[2].Y, literal.x,
5414 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5415 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5416 ; EG-NEXT:     LSHR T12.X, PV.W, literal.x,
5417 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5418 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
5419 ; EG-NEXT:     LSHR T13.X, PV.W, literal.x,
5420 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5421 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
5422 ; EG-NEXT:     LSHR * T14.X, PV.W, literal.x,
5423 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5424   %load = load <8 x i16>, ptr addrspace(4) %in
5425   %ext = zext <8 x i16> %load to <8 x i64>
5426   store <8 x i64> %ext, ptr addrspace(1) %out
5427   ret void
5430 define amdgpu_kernel void @constant_sextload_v8i16_to_v8i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5431 ; GCN-NOHSA-SI-LABEL: constant_sextload_v8i16_to_v8i64:
5432 ; GCN-NOHSA-SI:       ; %bb.0:
5433 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5434 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5435 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5436 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
5437 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
5438 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5439 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s7
5440 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s5
5441 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s12, s6, 16
5442 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s14, s4, 16
5443 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[16:17], s[4:5], 0x100000
5444 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[18:19], s[6:7], 0x100000
5445 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[4:5], s[4:5], 48
5446 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[6:7], s[6:7], 48
5447 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x100000
5448 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x100000
5449 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x100000
5450 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x100000
5451 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
5452 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s9
5453 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s6
5454 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s7
5455 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5456 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5457 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
5458 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s11
5459 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
5460 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s5
5461 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5462 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5463 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s18
5464 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
5465 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s16
5466 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s17
5467 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s12
5468 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s13
5469 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
5470 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s14
5471 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s15
5472 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
5473 ; GCN-NOHSA-SI-NEXT:    s_endpgm
5475 ; GCN-HSA-LABEL: constant_sextload_v8i16_to_v8i64:
5476 ; GCN-HSA:       ; %bb.0:
5477 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5478 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5479 ; GCN-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5480 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5481 ; GCN-HSA-NEXT:    s_mov_b32 s2, s7
5482 ; GCN-HSA-NEXT:    s_mov_b32 s8, s5
5483 ; GCN-HSA-NEXT:    s_lshr_b32 s10, s6, 16
5484 ; GCN-HSA-NEXT:    s_lshr_b32 s12, s4, 16
5485 ; GCN-HSA-NEXT:    s_bfe_i64 s[14:15], s[4:5], 0x100000
5486 ; GCN-HSA-NEXT:    s_bfe_i64 s[16:17], s[6:7], 0x100000
5487 ; GCN-HSA-NEXT:    s_ashr_i64 s[4:5], s[4:5], 48
5488 ; GCN-HSA-NEXT:    s_ashr_i64 s[6:7], s[6:7], 48
5489 ; GCN-HSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x100000
5490 ; GCN-HSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x100000
5491 ; GCN-HSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x100000
5492 ; GCN-HSA-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x100000
5493 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5494 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
5495 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5496 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5497 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5498 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5499 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
5500 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
5501 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
5502 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5503 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5504 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5505 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5506 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
5507 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
5508 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
5509 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s4
5510 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s5
5511 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5512 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5513 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5514 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s16
5515 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s17
5516 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s10
5517 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s11
5518 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5519 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5520 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5521 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s14
5522 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s15
5523 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s12
5524 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s13
5525 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5526 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5527 ; GCN-HSA-NEXT:    s_endpgm
5529 ; GCN-NOHSA-VI-LABEL: constant_sextload_v8i16_to_v8i64:
5530 ; GCN-NOHSA-VI:       ; %bb.0:
5531 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5532 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5533 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5534 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5535 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[12:13], s[6:7], 0x100000
5536 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s6, 16
5537 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[14:15], s[6:7], 0x100000
5538 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, s7
5539 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[2:3], s[4:5], 0x100000
5540 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s4, 16
5541 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s5
5542 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s10, s5, 16
5543 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[16:17], s[6:7], 0x100000
5544 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s7, 16
5545 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
5546 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x100000
5547 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x100000
5548 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
5549 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
5550 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s6, s0, 48
5551 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s7
5552 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s7, s1, 0
5553 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s6
5554 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s16
5555 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s17
5556 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s7
5557 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s6, s0, 32
5558 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5559 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s7, s1, 0
5560 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s6
5561 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
5562 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s13
5563 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s14
5564 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s15
5565 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s7
5566 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s6, s0, 16
5567 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5568 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s7, s1, 0
5569 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s6
5570 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
5571 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s9
5572 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s10
5573 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s11
5574 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s7
5575 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5576 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
5577 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
5578 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s3
5579 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
5580 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s5
5581 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
5582 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5583 ; GCN-NOHSA-VI-NEXT:    s_endpgm
5585 ; EG-LABEL: constant_sextload_v8i16_to_v8i64:
5586 ; EG:       ; %bb.0:
5587 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
5588 ; EG-NEXT:    TEX 0 @8
5589 ; EG-NEXT:    ALU 33, @11, KC0[CB0:0-32], KC1[]
5590 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T7.X, 0
5591 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T11.X, 0
5592 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T9.X, 0
5593 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T8.X, 1
5594 ; EG-NEXT:    CF_END
5595 ; EG-NEXT:    Fetch clause starting at 8:
5596 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
5597 ; EG-NEXT:    ALU clause starting at 10:
5598 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
5599 ; EG-NEXT:    ALU clause starting at 11:
5600 ; EG-NEXT:     LSHR T8.X, KC0[2].Y, literal.x,
5601 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5602 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5603 ; EG-NEXT:     LSHR T9.X, PV.W, literal.x,
5604 ; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.y,
5605 ; EG-NEXT:     ASHR * T10.W, T7.X, literal.z,
5606 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
5607 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5608 ; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
5609 ; EG-NEXT:     ASHR T10.Z, T7.X, literal.y,
5610 ; EG-NEXT:     ASHR * T12.W, T7.Y, literal.z,
5611 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5612 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5613 ; EG-NEXT:     BFE_INT T10.X, T7.X, 0.0, literal.x,
5614 ; EG-NEXT:     ASHR T12.Z, T7.Y, literal.x,
5615 ; EG-NEXT:     ASHR * T13.W, T7.Z, literal.y,
5616 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5617 ; EG-NEXT:     BFE_INT T12.X, T7.Y, 0.0, literal.x,
5618 ; EG-NEXT:     ASHR T10.Y, PV.X, literal.y,
5619 ; EG-NEXT:     ASHR T13.Z, T7.Z, literal.x,
5620 ; EG-NEXT:     ASHR * T14.W, T7.W, literal.y,
5621 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5622 ; EG-NEXT:     BFE_INT T13.X, T7.Z, 0.0, literal.x,
5623 ; EG-NEXT:     ASHR T12.Y, PV.X, literal.y,
5624 ; EG-NEXT:     ASHR * T14.Z, T7.W, literal.x,
5625 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5626 ; EG-NEXT:     BFE_INT T14.X, T7.W, 0.0, literal.x,
5627 ; EG-NEXT:     ASHR T13.Y, PV.X, literal.y,
5628 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
5629 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5630 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
5631 ; EG-NEXT:     LSHR T7.X, PV.W, literal.x,
5632 ; EG-NEXT:     ASHR * T14.Y, PV.X, literal.y,
5633 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5634   %load = load <8 x i16>, ptr addrspace(4) %in
5635   %ext = sext <8 x i16> %load to <8 x i64>
5636   store <8 x i64> %ext, ptr addrspace(1) %out
5637   ret void
5640 define amdgpu_kernel void @constant_zextload_v16i16_to_v16i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5641 ; GCN-NOHSA-SI-LABEL: constant_zextload_v16i16_to_v16i64:
5642 ; GCN-NOHSA-SI:       ; %bb.0:
5643 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x9
5644 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5645 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
5646 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, 0xf000
5647 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
5648 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, -1
5649 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
5650 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5651 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s12, s1, 16
5652 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s13, s3, 16
5653 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s14, s7, 16
5654 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s15, s5, 16
5655 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s16, s4, 16
5656 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s17, s6, 16
5657 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s18, s2, 16
5658 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s19, s0, 16
5659 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s0, s0, 0xffff
5660 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s2, s2, 0xffff
5661 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
5662 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
5663 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s1, s1, 0xffff
5664 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s3, s3, 0xffff
5665 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
5666 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
5667 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
5668 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s15
5669 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:80
5670 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5671 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s7
5672 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s14
5673 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:112
5674 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5675 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s3
5676 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s13
5677 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:48
5678 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5679 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s1
5680 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s12
5681 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16
5682 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5683 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
5684 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s16
5685 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:64
5686 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5687 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
5688 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s17
5689 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:96
5690 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5691 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s2
5692 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s18
5693 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:32
5694 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5695 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s0
5696 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s19
5697 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
5698 ; GCN-NOHSA-SI-NEXT:    s_endpgm
5700 ; GCN-HSA-LABEL: constant_zextload_v16i16_to_v16i64:
5701 ; GCN-HSA:       ; %bb.0:
5702 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5703 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
5704 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
5705 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5706 ; GCN-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
5707 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5708 ; GCN-HSA-NEXT:    s_lshr_b32 s12, s5, 16
5709 ; GCN-HSA-NEXT:    s_lshr_b32 s13, s7, 16
5710 ; GCN-HSA-NEXT:    s_lshr_b32 s14, s11, 16
5711 ; GCN-HSA-NEXT:    s_lshr_b32 s2, s9, 16
5712 ; GCN-HSA-NEXT:    s_lshr_b32 s15, s8, 16
5713 ; GCN-HSA-NEXT:    s_lshr_b32 s16, s10, 16
5714 ; GCN-HSA-NEXT:    s_lshr_b32 s17, s6, 16
5715 ; GCN-HSA-NEXT:    s_lshr_b32 s18, s4, 16
5716 ; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
5717 ; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
5718 ; GCN-HSA-NEXT:    s_and_b32 s10, s10, 0xffff
5719 ; GCN-HSA-NEXT:    s_and_b32 s8, s8, 0xffff
5720 ; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
5721 ; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
5722 ; GCN-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
5723 ; GCN-HSA-NEXT:    s_and_b32 s3, s9, 0xffff
5724 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
5725 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x50
5726 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s3
5727 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5728 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5729 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5730 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x70
5731 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5732 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5733 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5734 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5735 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
5736 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s11
5737 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s14
5738 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5739 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5740 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5741 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5742 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
5743 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s7
5744 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s13
5745 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5746 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5747 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5748 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5749 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 64
5750 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s5
5751 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s12
5752 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5753 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5754 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5755 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5756 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x60
5757 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
5758 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s15
5759 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5760 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5761 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5762 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5763 ; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
5764 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
5765 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s16
5766 ; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5767 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5768 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5769 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
5770 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s17
5771 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5772 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5773 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5774 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
5775 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s18
5776 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5777 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5778 ; GCN-HSA-NEXT:    s_endpgm
5780 ; GCN-NOHSA-VI-LABEL: constant_zextload_v16i16_to_v16i64:
5781 ; GCN-NOHSA-VI:       ; %bb.0:
5782 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5783 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
5784 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
5785 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5786 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
5787 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5788 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s12, s4, 16
5789 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
5790 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s13, s5, 16
5791 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
5792 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s14, s6, 16
5793 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
5794 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s15, s7, 16
5795 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s7, s7, 0xffff
5796 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s16, s10, 16
5797 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s10, s10, 0xffff
5798 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s17, s11, 16
5799 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s11, s11, 0xffff
5800 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s18, s8, 16
5801 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s8, s8, 0xffff
5802 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s9, 16
5803 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s3, s9, 0xffff
5804 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
5805 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 0x50
5806 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s3
5807 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5808 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5809 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5810 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 64
5811 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5812 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5813 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5814 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5815 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 0x70
5816 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
5817 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s18
5818 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5819 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5820 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5821 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5822 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 0x60
5823 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s11
5824 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s17
5825 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5826 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5827 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5828 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5829 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 48
5830 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
5831 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s16
5832 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5833 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5834 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5835 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5836 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 32
5837 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s7
5838 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s15
5839 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5840 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5841 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5842 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5843 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s0, 16
5844 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
5845 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s14
5846 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s1, 0
5847 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5848 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
5849 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s5
5850 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s13
5851 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
5852 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5853 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
5854 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
5855 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s12
5856 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
5857 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5858 ; GCN-NOHSA-VI-NEXT:    s_endpgm
5860 ; EG-LABEL: constant_zextload_v16i16_to_v16i64:
5861 ; EG:       ; %bb.0:
5862 ; EG-NEXT:    ALU 0, @16, KC0[CB0:0-32], KC1[]
5863 ; EG-NEXT:    TEX 1 @12
5864 ; EG-NEXT:    ALU 62, @17, KC0[CB0:0-32], KC1[]
5865 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T26.X, 0
5866 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T25.X, 0
5867 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T24.X, 0
5868 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T23.X, 0
5869 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T22.X, 0
5870 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T21.X, 0
5871 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T20.X, 0
5872 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T19.X, 1
5873 ; EG-NEXT:    CF_END
5874 ; EG-NEXT:    Fetch clause starting at 12:
5875 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
5876 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
5877 ; EG-NEXT:    ALU clause starting at 16:
5878 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
5879 ; EG-NEXT:    ALU clause starting at 17:
5880 ; EG-NEXT:     LSHR * T13.Z, T12.W, literal.x,
5881 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5882 ; EG-NEXT:     AND_INT T13.X, T12.W, literal.x,
5883 ; EG-NEXT:     MOV T13.Y, 0.0,
5884 ; EG-NEXT:     LSHR T14.Z, T12.Z, literal.y,
5885 ; EG-NEXT:     AND_INT * T14.X, T12.Z, literal.x,
5886 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5887 ; EG-NEXT:     MOV T14.Y, 0.0,
5888 ; EG-NEXT:     LSHR * T15.Z, T12.Y, literal.x,
5889 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5890 ; EG-NEXT:     AND_INT T15.X, T12.Y, literal.x,
5891 ; EG-NEXT:     MOV T15.Y, 0.0,
5892 ; EG-NEXT:     LSHR T12.Z, T12.X, literal.y,
5893 ; EG-NEXT:     AND_INT * T12.X, T12.X, literal.x,
5894 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5895 ; EG-NEXT:     MOV T12.Y, 0.0,
5896 ; EG-NEXT:     LSHR * T16.Z, T11.W, literal.x,
5897 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5898 ; EG-NEXT:     AND_INT T16.X, T11.W, literal.x,
5899 ; EG-NEXT:     MOV T16.Y, 0.0,
5900 ; EG-NEXT:     LSHR T17.Z, T11.Z, literal.y,
5901 ; EG-NEXT:     AND_INT * T17.X, T11.Z, literal.x,
5902 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5903 ; EG-NEXT:     MOV T17.Y, 0.0,
5904 ; EG-NEXT:     LSHR * T18.Z, T11.Y, literal.x,
5905 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5906 ; EG-NEXT:     AND_INT T18.X, T11.Y, literal.x,
5907 ; EG-NEXT:     MOV T18.Y, 0.0,
5908 ; EG-NEXT:     LSHR T11.Z, T11.X, literal.y,
5909 ; EG-NEXT:     AND_INT * T11.X, T11.X, literal.x,
5910 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5911 ; EG-NEXT:     MOV T11.Y, 0.0,
5912 ; EG-NEXT:     MOV T13.W, 0.0,
5913 ; EG-NEXT:     MOV * T14.W, 0.0,
5914 ; EG-NEXT:     MOV T15.W, 0.0,
5915 ; EG-NEXT:     MOV * T12.W, 0.0,
5916 ; EG-NEXT:     MOV T16.W, 0.0,
5917 ; EG-NEXT:     MOV * T17.W, 0.0,
5918 ; EG-NEXT:     MOV T18.W, 0.0,
5919 ; EG-NEXT:     MOV * T11.W, 0.0,
5920 ; EG-NEXT:     LSHR T19.X, KC0[2].Y, literal.x,
5921 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5922 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5923 ; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
5924 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5925 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
5926 ; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
5927 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5928 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
5929 ; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
5930 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5931 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
5932 ; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
5933 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5934 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
5935 ; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
5936 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5937 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
5938 ; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
5939 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5940 ; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
5941 ; EG-NEXT:     LSHR * T26.X, PV.W, literal.x,
5942 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5943   %load = load <16 x i16>, ptr addrspace(4) %in
5944   %ext = zext <16 x i16> %load to <16 x i64>
5945   store <16 x i64> %ext, ptr addrspace(1) %out
5946   ret void
5949 define amdgpu_kernel void @constant_sextload_v16i16_to_v16i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5950 ; GCN-NOHSA-SI-LABEL: constant_sextload_v16i16_to_v16i64:
5951 ; GCN-NOHSA-SI:       ; %bb.0:
5952 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5953 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5954 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
5955 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
5956 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
5957 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5958 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s12, s11
5959 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s14, s9
5960 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s16, s7
5961 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s18, s5
5962 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s20, s10, 16
5963 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s22, s8, 16
5964 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s24, s6, 16
5965 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s26, s4, 16
5966 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[28:29], s[4:5], 0x100000
5967 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[30:31], s[6:7], 0x100000
5968 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[34:35], s[8:9], 0x100000
5969 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[36:37], s[10:11], 0x100000
5970 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[4:5], s[4:5], 48
5971 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[6:7], s[6:7], 48
5972 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[8:9], s[8:9], 48
5973 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[10:11], s[10:11], 48
5974 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x100000
5975 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x100000
5976 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x100000
5977 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x100000
5978 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x100000
5979 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x100000
5980 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x100000
5981 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x100000
5982 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
5983 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s13
5984 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s10
5985 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s11
5986 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
5987 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5988 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
5989 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s15
5990 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s8
5991 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s9
5992 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
5993 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5994 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s16
5995 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s17
5996 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s6
5997 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s7
5998 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5999 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6000 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s18
6001 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
6002 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
6003 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s5
6004 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
6005 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6006 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s36
6007 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s37
6008 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s34
6009 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s35
6010 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s30
6011 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s31
6012 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, s28
6013 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, s29
6014 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s20
6015 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s21
6016 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
6017 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s22
6018 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s23
6019 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:64
6020 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s24
6021 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s25
6022 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:32
6023 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v14, s26
6024 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, s27
6025 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0
6026 ; GCN-NOHSA-SI-NEXT:    s_endpgm
6028 ; GCN-HSA-LABEL: constant_sextload_v16i16_to_v16i64:
6029 ; GCN-HSA:       ; %bb.0:
6030 ; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
6031 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6032 ; GCN-HSA-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x0
6033 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6034 ; GCN-HSA-NEXT:    s_mov_b32 s16, s15
6035 ; GCN-HSA-NEXT:    s_mov_b32 s18, s13
6036 ; GCN-HSA-NEXT:    s_mov_b32 s20, s11
6037 ; GCN-HSA-NEXT:    s_mov_b32 s22, s9
6038 ; GCN-HSA-NEXT:    s_lshr_b32 s24, s14, 16
6039 ; GCN-HSA-NEXT:    s_lshr_b32 s26, s12, 16
6040 ; GCN-HSA-NEXT:    s_lshr_b32 s28, s10, 16
6041 ; GCN-HSA-NEXT:    s_lshr_b32 s4, s8, 16
6042 ; GCN-HSA-NEXT:    s_bfe_i64 s[2:3], s[8:9], 0x100000
6043 ; GCN-HSA-NEXT:    s_bfe_i64 s[6:7], s[10:11], 0x100000
6044 ; GCN-HSA-NEXT:    s_bfe_i64 s[30:31], s[12:13], 0x100000
6045 ; GCN-HSA-NEXT:    s_bfe_i64 s[34:35], s[14:15], 0x100000
6046 ; GCN-HSA-NEXT:    s_ashr_i64 s[8:9], s[8:9], 48
6047 ; GCN-HSA-NEXT:    s_ashr_i64 s[10:11], s[10:11], 48
6048 ; GCN-HSA-NEXT:    s_ashr_i64 s[12:13], s[12:13], 48
6049 ; GCN-HSA-NEXT:    s_ashr_i64 s[14:15], s[14:15], 48
6050 ; GCN-HSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
6051 ; GCN-HSA-NEXT:    s_bfe_i64 s[28:29], s[28:29], 0x100000
6052 ; GCN-HSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x100000
6053 ; GCN-HSA-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x100000
6054 ; GCN-HSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x100000
6055 ; GCN-HSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x100000
6056 ; GCN-HSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x100000
6057 ; GCN-HSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x100000
6058 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s14
6059 ; GCN-HSA-NEXT:    s_add_u32 s14, s0, 0x70
6060 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s15
6061 ; GCN-HSA-NEXT:    s_addc_u32 s15, s1, 0
6062 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s14
6063 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s16
6064 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s17
6065 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s15
6066 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6067 ; GCN-HSA-NEXT:    s_nop 0
6068 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s12
6069 ; GCN-HSA-NEXT:    s_add_u32 s12, s0, 0x50
6070 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s13
6071 ; GCN-HSA-NEXT:    s_addc_u32 s13, s1, 0
6072 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s12
6073 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s18
6074 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s19
6075 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s13
6076 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6077 ; GCN-HSA-NEXT:    s_nop 0
6078 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s10
6079 ; GCN-HSA-NEXT:    s_add_u32 s10, s0, 48
6080 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s11
6081 ; GCN-HSA-NEXT:    s_addc_u32 s11, s1, 0
6082 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s10
6083 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s20
6084 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
6085 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s11
6086 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6087 ; GCN-HSA-NEXT:    s_nop 0
6088 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s8
6089 ; GCN-HSA-NEXT:    s_add_u32 s8, s0, 16
6090 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s9
6091 ; GCN-HSA-NEXT:    s_addc_u32 s9, s1, 0
6092 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s8
6093 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s22
6094 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s23
6095 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s9
6096 ; GCN-HSA-NEXT:    s_add_u32 s8, s0, 0x60
6097 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6098 ; GCN-HSA-NEXT:    s_addc_u32 s9, s1, 0
6099 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s8
6100 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s34
6101 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s35
6102 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s24
6103 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s25
6104 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s9
6105 ; GCN-HSA-NEXT:    s_add_u32 s8, s0, 64
6106 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6107 ; GCN-HSA-NEXT:    s_addc_u32 s9, s1, 0
6108 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s8
6109 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s30
6110 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s31
6111 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s26
6112 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s27
6113 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s9
6114 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6115 ; GCN-HSA-NEXT:    s_nop 0
6116 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
6117 ; GCN-HSA-NEXT:    s_add_u32 s6, s0, 32
6118 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s7
6119 ; GCN-HSA-NEXT:    s_addc_u32 s7, s1, 0
6120 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s6
6121 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s28
6122 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s29
6123 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s7
6124 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6125 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
6126 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
6127 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
6128 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s4
6129 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s5
6130 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
6131 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6132 ; GCN-HSA-NEXT:    s_endpgm
6134 ; GCN-NOHSA-VI-LABEL: constant_sextload_v16i16_to_v16i64:
6135 ; GCN-NOHSA-VI:       ; %bb.0:
6136 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x24
6137 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6138 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
6139 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6140 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s12, s1
6141 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s18, s1, 16
6142 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[16:17], s[2:3], 0x100000
6143 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s2, 16
6144 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[22:23], s[6:7], 0x100000
6145 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s6, 16
6146 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[28:29], s[4:5], 0x100000
6147 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s4, 16
6148 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[14:15], s[12:13], 0x100000
6149 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[12:13], s[18:19], 0x100000
6150 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[18:19], s[2:3], 0x100000
6151 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, s3
6152 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[24:25], s[6:7], 0x100000
6153 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, s7
6154 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[30:31], s[4:5], 0x100000
6155 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s5
6156 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[10:11], s[0:1], 0x100000
6157 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s0, s0, 16
6158 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[20:21], s[2:3], 0x100000
6159 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s3, 16
6160 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[26:27], s[6:7], 0x100000
6161 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s7, 16
6162 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[34:35], s[4:5], 0x100000
6163 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s5, 16
6164 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[0:1], s[0:1], 0x100000
6165 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x100000
6166 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
6167 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
6168 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
6169 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s8, 0x50
6170 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s5
6171 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s9, 0
6172 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6173 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s34
6174 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s35
6175 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6176 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s8, 64
6177 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6178 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s9, 0
6179 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6180 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s28
6181 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s29
6182 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s30
6183 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s31
6184 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6185 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s8, 0x70
6186 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6187 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s9, 0
6188 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6189 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s26
6190 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s27
6191 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
6192 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s7
6193 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6194 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s8, 0x60
6195 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6196 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s9, 0
6197 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6198 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s22
6199 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s23
6200 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s24
6201 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s25
6202 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6203 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6204 ; GCN-NOHSA-VI-NEXT:    s_nop 0
6205 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
6206 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s8, 48
6207 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s3
6208 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s9, 0
6209 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
6210 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
6211 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s8, 32
6212 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s20
6213 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s21
6214 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s9, 0
6215 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6216 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
6217 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
6218 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s8, 16
6219 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s16
6220 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s17
6221 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s18
6222 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s19
6223 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s9, 0
6224 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6225 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
6226 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
6227 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s15
6228 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s12
6229 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s13
6230 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
6231 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6232 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s8
6233 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
6234 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s11
6235 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s0
6236 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s1
6237 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s9
6238 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6239 ; GCN-NOHSA-VI-NEXT:    s_endpgm
6241 ; EG-LABEL: constant_sextload_v16i16_to_v16i64:
6242 ; EG:       ; %bb.0:
6243 ; EG-NEXT:    ALU 0, @16, KC0[CB0:0-32], KC1[]
6244 ; EG-NEXT:    TEX 1 @12
6245 ; EG-NEXT:    ALU 65, @17, KC0[CB0:0-32], KC1[]
6246 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T12.X, 0
6247 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T20.X, 0
6248 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T18.X, 0
6249 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T17.X, 0
6250 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T16.X, 0
6251 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T15.X, 0
6252 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T14.X, 0
6253 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T13.X, 1
6254 ; EG-NEXT:    CF_END
6255 ; EG-NEXT:    Fetch clause starting at 12:
6256 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
6257 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
6258 ; EG-NEXT:    ALU clause starting at 16:
6259 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
6260 ; EG-NEXT:    ALU clause starting at 17:
6261 ; EG-NEXT:     LSHR T13.X, KC0[2].Y, literal.x,
6262 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6263 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6264 ; EG-NEXT:     LSHR T14.X, PV.W, literal.x,
6265 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6266 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6267 ; EG-NEXT:     LSHR T15.X, PV.W, literal.x,
6268 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6269 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
6270 ; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
6271 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6272 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
6273 ; EG-NEXT:     LSHR T17.X, PV.W, literal.x,
6274 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6275 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
6276 ; EG-NEXT:     LSHR T18.X, PV.W, literal.x,
6277 ; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.y,
6278 ; EG-NEXT:     ASHR * T19.W, T11.X, literal.z,
6279 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
6280 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6281 ; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
6282 ; EG-NEXT:     ASHR T19.Z, T11.X, literal.y,
6283 ; EG-NEXT:     ASHR * T21.W, T11.Y, literal.z,
6284 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6285 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6286 ; EG-NEXT:     BFE_INT T19.X, T11.X, 0.0, literal.x,
6287 ; EG-NEXT:     ASHR T21.Z, T11.Y, literal.x,
6288 ; EG-NEXT:     ASHR * T22.W, T11.Z, literal.y,
6289 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6290 ; EG-NEXT:     BFE_INT T21.X, T11.Y, 0.0, literal.x,
6291 ; EG-NEXT:     ASHR T19.Y, PV.X, literal.y,
6292 ; EG-NEXT:     ASHR T22.Z, T11.Z, literal.x,
6293 ; EG-NEXT:     ASHR * T23.W, T11.W, literal.y,
6294 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6295 ; EG-NEXT:     BFE_INT T22.X, T11.Z, 0.0, literal.x,
6296 ; EG-NEXT:     ASHR T21.Y, PV.X, literal.y,
6297 ; EG-NEXT:     ASHR T23.Z, T11.W, literal.x,
6298 ; EG-NEXT:     ASHR * T24.W, T12.X, literal.y,
6299 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6300 ; EG-NEXT:     BFE_INT T23.X, T11.W, 0.0, literal.x,
6301 ; EG-NEXT:     ASHR T22.Y, PV.X, literal.y,
6302 ; EG-NEXT:     ASHR T24.Z, T12.X, literal.x,
6303 ; EG-NEXT:     ASHR * T11.W, T12.Y, literal.y,
6304 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6305 ; EG-NEXT:     BFE_INT T24.X, T12.X, 0.0, literal.x,
6306 ; EG-NEXT:     ASHR T23.Y, PV.X, literal.y,
6307 ; EG-NEXT:     ASHR T11.Z, T12.Y, literal.x,
6308 ; EG-NEXT:     ASHR * T25.W, T12.Z, literal.y,
6309 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6310 ; EG-NEXT:     BFE_INT T11.X, T12.Y, 0.0, literal.x,
6311 ; EG-NEXT:     ASHR T24.Y, PV.X, literal.y,
6312 ; EG-NEXT:     ASHR T25.Z, T12.Z, literal.x,
6313 ; EG-NEXT:     ASHR * T26.W, T12.W, literal.y,
6314 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6315 ; EG-NEXT:     BFE_INT T25.X, T12.Z, 0.0, literal.x,
6316 ; EG-NEXT:     ASHR T11.Y, PV.X, literal.y,
6317 ; EG-NEXT:     ASHR * T26.Z, T12.W, literal.x,
6318 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6319 ; EG-NEXT:     BFE_INT T26.X, T12.W, 0.0, literal.x,
6320 ; EG-NEXT:     ASHR T25.Y, PV.X, literal.y,
6321 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
6322 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6323 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
6324 ; EG-NEXT:     LSHR T12.X, PV.W, literal.x,
6325 ; EG-NEXT:     ASHR * T26.Y, PV.X, literal.y,
6326 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6327   %load = load <16 x i16>, ptr addrspace(4) %in
6328   %ext = sext <16 x i16> %load to <16 x i64>
6329   store <16 x i64> %ext, ptr addrspace(1) %out
6330   ret void
6333 define amdgpu_kernel void @constant_zextload_v32i16_to_v32i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
6334 ; GCN-NOHSA-SI-LABEL: constant_zextload_v32i16_to_v32i64:
6335 ; GCN-NOHSA-SI:       ; %bb.0:
6336 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
6337 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6338 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
6339 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s19, 0xf000
6340 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
6341 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s18, -1
6342 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
6343 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6344 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s20, s1, 16
6345 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s21, s3, 16
6346 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s22, s5, 16
6347 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s23, s7, 16
6348 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s24, s9, 16
6349 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s25, s11, 16
6350 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s26, s13, 16
6351 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s27, s15, 16
6352 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s28, s14, 16
6353 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s29, s12, 16
6354 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s30, s10, 16
6355 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s31, s8, 16
6356 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s33, s6, 16
6357 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s34, s4, 16
6358 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s35, s2, 16
6359 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s36, s0, 16
6360 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s0, s0, 0xffff
6361 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s2, s2, 0xffff
6362 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
6363 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
6364 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s8, s8, 0xffff
6365 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s10, s10, 0xffff
6366 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s12, s12, 0xffff
6367 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s14, s14, 0xffff
6368 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s1, s1, 0xffff
6369 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s3, s3, 0xffff
6370 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
6371 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
6372 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s9, s9, 0xffff
6373 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s11, s11, 0xffff
6374 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s15, s15, 0xffff
6375 ; GCN-NOHSA-SI-NEXT:    s_and_b32 s13, s13, 0xffff
6376 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s15
6377 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s27
6378 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:240
6379 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6380 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s13
6381 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s26
6382 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:208
6383 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6384 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s11
6385 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s25
6386 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:176
6387 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6388 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s9
6389 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s24
6390 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:144
6391 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6392 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s7
6393 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s23
6394 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:112
6395 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6396 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
6397 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s22
6398 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:80
6399 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6400 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s3
6401 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s21
6402 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:48
6403 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6404 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s1
6405 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s20
6406 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:16
6407 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6408 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
6409 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s28
6410 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:224
6411 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6412 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
6413 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s29
6414 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:192
6415 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6416 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
6417 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s30
6418 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:160
6419 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6420 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
6421 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s31
6422 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:128
6423 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6424 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
6425 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s33
6426 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:96
6427 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6428 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
6429 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s34
6430 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:64
6431 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6432 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s2
6433 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s35
6434 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:32
6435 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6436 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s0
6437 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s36
6438 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0
6439 ; GCN-NOHSA-SI-NEXT:    s_endpgm
6441 ; GCN-HSA-LABEL: constant_zextload_v32i16_to_v32i64:
6442 ; GCN-HSA:       ; %bb.0:
6443 ; GCN-HSA-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
6444 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
6445 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
6446 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6447 ; GCN-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
6448 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6449 ; GCN-HSA-NEXT:    s_lshr_b32 s19, s1, 16
6450 ; GCN-HSA-NEXT:    s_lshr_b32 s20, s3, 16
6451 ; GCN-HSA-NEXT:    s_lshr_b32 s21, s5, 16
6452 ; GCN-HSA-NEXT:    s_lshr_b32 s22, s7, 16
6453 ; GCN-HSA-NEXT:    s_lshr_b32 s23, s9, 16
6454 ; GCN-HSA-NEXT:    s_lshr_b32 s24, s11, 16
6455 ; GCN-HSA-NEXT:    s_lshr_b32 s25, s13, 16
6456 ; GCN-HSA-NEXT:    s_lshr_b32 s26, s15, 16
6457 ; GCN-HSA-NEXT:    s_lshr_b32 s27, s14, 16
6458 ; GCN-HSA-NEXT:    s_lshr_b32 s28, s12, 16
6459 ; GCN-HSA-NEXT:    s_lshr_b32 s29, s10, 16
6460 ; GCN-HSA-NEXT:    s_lshr_b32 s30, s8, 16
6461 ; GCN-HSA-NEXT:    s_lshr_b32 s31, s6, 16
6462 ; GCN-HSA-NEXT:    s_lshr_b32 s33, s4, 16
6463 ; GCN-HSA-NEXT:    s_lshr_b32 s34, s2, 16
6464 ; GCN-HSA-NEXT:    s_lshr_b32 s18, s0, 16
6465 ; GCN-HSA-NEXT:    s_and_b32 s0, s0, 0xffff
6466 ; GCN-HSA-NEXT:    s_and_b32 s35, s2, 0xffff
6467 ; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
6468 ; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
6469 ; GCN-HSA-NEXT:    s_and_b32 s8, s8, 0xffff
6470 ; GCN-HSA-NEXT:    s_and_b32 s10, s10, 0xffff
6471 ; GCN-HSA-NEXT:    s_and_b32 s12, s12, 0xffff
6472 ; GCN-HSA-NEXT:    s_and_b32 s14, s14, 0xffff
6473 ; GCN-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
6474 ; GCN-HSA-NEXT:    s_and_b32 s36, s3, 0xffff
6475 ; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
6476 ; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
6477 ; GCN-HSA-NEXT:    s_and_b32 s9, s9, 0xffff
6478 ; GCN-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
6479 ; GCN-HSA-NEXT:    s_and_b32 s13, s13, 0xffff
6480 ; GCN-HSA-NEXT:    s_and_b32 s2, s15, 0xffff
6481 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
6482 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0xf0
6483 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6484 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6485 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6486 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0xd0
6487 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s26
6488 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6489 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6490 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6491 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6492 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0xb0
6493 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s13
6494 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s25
6495 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6496 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6497 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6498 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6499 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0x90
6500 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s11
6501 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s24
6502 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6503 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6504 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6505 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6506 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0x70
6507 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s9
6508 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s23
6509 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6510 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6511 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6512 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6513 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0x50
6514 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s7
6515 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s22
6516 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6517 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6518 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6519 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6520 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 48
6521 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s5
6522 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s21
6523 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6524 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6525 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6526 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6527 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 16
6528 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s36
6529 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s20
6530 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6531 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6532 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6533 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6534 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0xe0
6535 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s1
6536 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s19
6537 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6538 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6539 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6540 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6541 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0xc0
6542 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s14
6543 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s27
6544 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6545 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6546 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6547 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6548 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0xa0
6549 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s12
6550 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s28
6551 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6552 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6553 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6554 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6555 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0x80
6556 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
6557 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s29
6558 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6559 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6560 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6561 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6562 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 0x60
6563 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
6564 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s30
6565 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6566 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6567 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6568 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6569 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 64
6570 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
6571 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s31
6572 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6573 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6574 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6575 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6576 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 32
6577 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
6578 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s33
6579 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6580 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6581 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6582 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s35
6583 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s34
6584 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6585 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6586 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
6587 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
6588 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s18
6589 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s17
6590 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6591 ; GCN-HSA-NEXT:    s_endpgm
6593 ; GCN-NOHSA-VI-LABEL: constant_zextload_v32i16_to_v32i64:
6594 ; GCN-NOHSA-VI:       ; %bb.0:
6595 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
6596 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
6597 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
6598 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6599 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
6600 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6601 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s18, s0, 16
6602 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s0, s0, 0xffff
6603 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s19, s1, 16
6604 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s1, s1, 0xffff
6605 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s20, s2, 16
6606 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s2, s2, 0xffff
6607 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s21, s3, 16
6608 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s3, s3, 0xffff
6609 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s22, s4, 16
6610 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s23, s4, 0xffff
6611 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s24, s5, 16
6612 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s25, s5, 0xffff
6613 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s26, s6, 16
6614 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
6615 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s27, s7, 16
6616 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s7, s7, 0xffff
6617 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s28, s8, 16
6618 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s8, s8, 0xffff
6619 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s29, s9, 16
6620 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s9, s9, 0xffff
6621 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s30, s10, 16
6622 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s10, s10, 0xffff
6623 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s31, s11, 16
6624 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s11, s11, 0xffff
6625 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s33, s12, 16
6626 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s12, s12, 0xffff
6627 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s34, s13, 16
6628 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s13, s13, 0xffff
6629 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s35, s14, 16
6630 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s14, s14, 0xffff
6631 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s15, 16
6632 ; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s15, 0xffff
6633 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
6634 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0xf0
6635 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s5
6636 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6637 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6638 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6639 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0xe0
6640 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6641 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6642 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6643 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
6644 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s35
6645 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6646 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0xd0
6647 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6648 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6649 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6650 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s13
6651 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s34
6652 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6653 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0xc0
6654 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6655 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6656 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6657 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
6658 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s33
6659 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6660 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0xb0
6661 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6662 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6663 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6664 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s11
6665 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s31
6666 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6667 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0xa0
6668 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6669 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6670 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6671 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
6672 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s30
6673 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6674 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0x90
6675 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6676 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6677 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6678 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s9
6679 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s29
6680 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6681 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0x80
6682 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6683 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6684 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6685 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
6686 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s28
6687 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6688 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0x70
6689 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6690 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6691 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6692 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s7
6693 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s27
6694 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6695 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0x60
6696 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6697 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6698 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6699 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
6700 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s26
6701 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6702 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0x50
6703 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6704 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6705 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6706 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s25
6707 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s24
6708 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6709 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 64
6710 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6711 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6712 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6713 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s23
6714 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s22
6715 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6716 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 48
6717 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6718 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
6719 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
6720 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s3
6721 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s21
6722 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
6723 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6724 ; GCN-NOHSA-VI-NEXT:    s_nop 0
6725 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
6726 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s16, 32
6727 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s17, 0
6728 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
6729 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
6730 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s16, 16
6731 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s20
6732 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s17, 0
6733 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6734 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
6735 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s1
6736 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s19
6737 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
6738 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6739 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s16
6740 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
6741 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s18
6742 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s17
6743 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6744 ; GCN-NOHSA-VI-NEXT:    s_endpgm
6746 ; EG-LABEL: constant_zextload_v32i16_to_v32i64:
6747 ; EG:       ; %bb.0:
6748 ; EG-NEXT:    ALU 0, @30, KC0[CB0:0-32], KC1[]
6749 ; EG-NEXT:    TEX 2 @22
6750 ; EG-NEXT:    ALU 33, @31, KC0[], KC1[]
6751 ; EG-NEXT:    TEX 0 @28
6752 ; EG-NEXT:    ALU 92, @65, KC0[CB0:0-32], KC1[]
6753 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T50.X, 0
6754 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T49.X, 0
6755 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T48.X, 0
6756 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T47.X, 0
6757 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T46.X, 0
6758 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T45.X, 0
6759 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T44.X, 0
6760 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T43.X, 0
6761 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T42.X, 0
6762 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T41.X, 0
6763 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T40.X, 0
6764 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T39.X, 0
6765 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T38.X, 0
6766 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T37.X, 0
6767 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T36.X, 0
6768 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T35.X, 1
6769 ; EG-NEXT:    CF_END
6770 ; EG-NEXT:    Fetch clause starting at 22:
6771 ; EG-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 48, #1
6772 ; EG-NEXT:     VTX_READ_128 T21.XYZW, T19.X, 16, #1
6773 ; EG-NEXT:     VTX_READ_128 T22.XYZW, T19.X, 32, #1
6774 ; EG-NEXT:    Fetch clause starting at 28:
6775 ; EG-NEXT:     VTX_READ_128 T29.XYZW, T19.X, 0, #1
6776 ; EG-NEXT:    ALU clause starting at 30:
6777 ; EG-NEXT:     MOV * T19.X, KC0[2].Z,
6778 ; EG-NEXT:    ALU clause starting at 31:
6779 ; EG-NEXT:     LSHR * T23.Z, T20.W, literal.x,
6780 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6781 ; EG-NEXT:     AND_INT T23.X, T20.W, literal.x,
6782 ; EG-NEXT:     MOV T23.Y, 0.0,
6783 ; EG-NEXT:     LSHR T24.Z, T20.Z, literal.y,
6784 ; EG-NEXT:     AND_INT * T24.X, T20.Z, literal.x,
6785 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6786 ; EG-NEXT:     MOV T24.Y, 0.0,
6787 ; EG-NEXT:     LSHR * T25.Z, T20.Y, literal.x,
6788 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6789 ; EG-NEXT:     AND_INT T25.X, T20.Y, literal.x,
6790 ; EG-NEXT:     MOV T25.Y, 0.0,
6791 ; EG-NEXT:     LSHR T20.Z, T20.X, literal.y,
6792 ; EG-NEXT:     AND_INT * T20.X, T20.X, literal.x,
6793 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6794 ; EG-NEXT:     MOV T20.Y, 0.0,
6795 ; EG-NEXT:     LSHR * T26.Z, T22.W, literal.x,
6796 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6797 ; EG-NEXT:     AND_INT T26.X, T22.W, literal.x,
6798 ; EG-NEXT:     MOV T26.Y, 0.0,
6799 ; EG-NEXT:     LSHR T27.Z, T22.Z, literal.y,
6800 ; EG-NEXT:     AND_INT * T27.X, T22.Z, literal.x,
6801 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6802 ; EG-NEXT:     MOV T27.Y, 0.0,
6803 ; EG-NEXT:     LSHR * T28.Z, T22.Y, literal.x,
6804 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6805 ; EG-NEXT:     AND_INT T28.X, T22.Y, literal.x,
6806 ; EG-NEXT:     MOV T28.Y, 0.0,
6807 ; EG-NEXT:     LSHR T22.Z, T22.X, literal.y,
6808 ; EG-NEXT:     AND_INT * T22.X, T22.X, literal.x,
6809 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6810 ; EG-NEXT:     MOV T22.Y, 0.0,
6811 ; EG-NEXT:     LSHR * T19.Z, T21.W, literal.x,
6812 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6813 ; EG-NEXT:    ALU clause starting at 65:
6814 ; EG-NEXT:     AND_INT T19.X, T21.W, literal.x,
6815 ; EG-NEXT:     MOV T19.Y, 0.0,
6816 ; EG-NEXT:     LSHR T30.Z, T21.Z, literal.y,
6817 ; EG-NEXT:     AND_INT * T30.X, T21.Z, literal.x,
6818 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6819 ; EG-NEXT:     MOV T30.Y, 0.0,
6820 ; EG-NEXT:     LSHR * T31.Z, T21.Y, literal.x,
6821 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6822 ; EG-NEXT:     AND_INT T31.X, T21.Y, literal.x,
6823 ; EG-NEXT:     MOV T31.Y, 0.0,
6824 ; EG-NEXT:     LSHR T21.Z, T21.X, literal.y,
6825 ; EG-NEXT:     AND_INT * T21.X, T21.X, literal.x,
6826 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6827 ; EG-NEXT:     MOV T21.Y, 0.0,
6828 ; EG-NEXT:     LSHR * T32.Z, T29.W, literal.x,
6829 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6830 ; EG-NEXT:     AND_INT T32.X, T29.W, literal.x,
6831 ; EG-NEXT:     MOV T32.Y, 0.0,
6832 ; EG-NEXT:     LSHR T33.Z, T29.Z, literal.y,
6833 ; EG-NEXT:     AND_INT * T33.X, T29.Z, literal.x,
6834 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6835 ; EG-NEXT:     MOV T33.Y, 0.0,
6836 ; EG-NEXT:     LSHR * T34.Z, T29.Y, literal.x,
6837 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6838 ; EG-NEXT:     AND_INT T34.X, T29.Y, literal.x,
6839 ; EG-NEXT:     MOV T34.Y, 0.0,
6840 ; EG-NEXT:     LSHR T29.Z, T29.X, literal.y,
6841 ; EG-NEXT:     AND_INT * T29.X, T29.X, literal.x,
6842 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6843 ; EG-NEXT:     MOV T29.Y, 0.0,
6844 ; EG-NEXT:     MOV T23.W, 0.0,
6845 ; EG-NEXT:     MOV * T24.W, 0.0,
6846 ; EG-NEXT:     MOV T25.W, 0.0,
6847 ; EG-NEXT:     MOV * T20.W, 0.0,
6848 ; EG-NEXT:     MOV T26.W, 0.0,
6849 ; EG-NEXT:     MOV * T27.W, 0.0,
6850 ; EG-NEXT:     MOV T28.W, 0.0,
6851 ; EG-NEXT:     MOV * T22.W, 0.0,
6852 ; EG-NEXT:     MOV T19.W, 0.0,
6853 ; EG-NEXT:     MOV * T30.W, 0.0,
6854 ; EG-NEXT:     MOV T31.W, 0.0,
6855 ; EG-NEXT:     MOV * T21.W, 0.0,
6856 ; EG-NEXT:     MOV T32.W, 0.0,
6857 ; EG-NEXT:     MOV * T33.W, 0.0,
6858 ; EG-NEXT:     MOV T34.W, 0.0,
6859 ; EG-NEXT:     MOV * T29.W, 0.0,
6860 ; EG-NEXT:     LSHR T35.X, KC0[2].Y, literal.x,
6861 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6862 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6863 ; EG-NEXT:     LSHR T36.X, PV.W, literal.x,
6864 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6865 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6866 ; EG-NEXT:     LSHR T37.X, PV.W, literal.x,
6867 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6868 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
6869 ; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
6870 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6871 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
6872 ; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
6873 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6874 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
6875 ; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
6876 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6877 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
6878 ; EG-NEXT:     LSHR T41.X, PV.W, literal.x,
6879 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6880 ; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
6881 ; EG-NEXT:     LSHR T42.X, PV.W, literal.x,
6882 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6883 ; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
6884 ; EG-NEXT:     LSHR T43.X, PV.W, literal.x,
6885 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6886 ; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
6887 ; EG-NEXT:     LSHR T44.X, PV.W, literal.x,
6888 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6889 ; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
6890 ; EG-NEXT:     LSHR T45.X, PV.W, literal.x,
6891 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6892 ; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
6893 ; EG-NEXT:     LSHR T46.X, PV.W, literal.x,
6894 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6895 ; EG-NEXT:    2(2.802597e-45), 192(2.690493e-43)
6896 ; EG-NEXT:     LSHR T47.X, PV.W, literal.x,
6897 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6898 ; EG-NEXT:    2(2.802597e-45), 208(2.914701e-43)
6899 ; EG-NEXT:     LSHR T48.X, PV.W, literal.x,
6900 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6901 ; EG-NEXT:    2(2.802597e-45), 224(3.138909e-43)
6902 ; EG-NEXT:     LSHR T49.X, PV.W, literal.x,
6903 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6904 ; EG-NEXT:    2(2.802597e-45), 240(3.363116e-43)
6905 ; EG-NEXT:     LSHR * T50.X, PV.W, literal.x,
6906 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6907   %load = load <32 x i16>, ptr addrspace(4) %in
6908   %ext = zext <32 x i16> %load to <32 x i64>
6909   store <32 x i64> %ext, ptr addrspace(1) %out
6910   ret void
6913 define amdgpu_kernel void @constant_sextload_v32i16_to_v32i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
6914 ; GCN-NOHSA-SI-LABEL: constant_sextload_v32i16_to_v32i64:
6915 ; GCN-NOHSA-SI:       ; %bb.0:
6916 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
6917 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6918 ; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
6919 ; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6920 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s18, s15
6921 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s20, s13
6922 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s22, s11
6923 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s30, s9
6924 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s28, s7
6925 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s36, s5
6926 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s40, s3
6927 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s44, s1
6928 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s24, s14, 16
6929 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s26, s12, 16
6930 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s34, s10, 16
6931 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s38, s8, 16
6932 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s42, s6, 16
6933 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s46, s4, 16
6934 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s48, s2, 16
6935 ; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s52, s0, 16
6936 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[62:63], s[20:21], 0x100000
6937 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[64:65], s[18:19], 0x100000
6938 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[66:67], s[30:31], 0x100000
6939 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[68:69], s[22:23], 0x100000
6940 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[18:19], s[0:1], 0x100000
6941 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[20:21], s[2:3], 0x100000
6942 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[22:23], s[4:5], 0x100000
6943 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[30:31], s[6:7], 0x100000
6944 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[50:51], s[8:9], 0x100000
6945 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[54:55], s[10:11], 0x100000
6946 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[56:57], s[12:13], 0x100000
6947 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[58:59], s[14:15], 0x100000
6948 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[60:61], s[0:1], 48
6949 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[70:71], s[2:3], 48
6950 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[72:73], s[4:5], 48
6951 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[2:3], s[8:9], 48
6952 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[4:5], s[12:13], 48
6953 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[8:9], s[14:15], 48
6954 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[10:11], s[10:11], 48
6955 ; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[74:75], s[6:7], 48
6956 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s16
6957 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s17
6958 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s64
6959 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s65
6960 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s8
6961 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s9
6962 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s62
6963 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s63
6964 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s4
6965 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s5
6966 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s68
6967 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s69
6968 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s10
6969 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s11
6970 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, s66
6971 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, s67
6972 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v14, s2
6973 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, s3
6974 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
6975 ; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
6976 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[44:45], s[44:45], 0x100000
6977 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[40:41], s[40:41], 0x100000
6978 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[36:37], s[36:37], 0x100000
6979 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[28:29], s[28:29], 0x100000
6980 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[4:5], s[52:53], 0x100000
6981 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[6:7], s[48:49], 0x100000
6982 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[8:9], s[46:47], 0x100000
6983 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[10:11], s[42:43], 0x100000
6984 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[12:13], s[38:39], 0x100000
6985 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[14:15], s[34:35], 0x100000
6986 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[16:17], s[26:27], 0x100000
6987 ; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x100000
6988 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
6989 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:208
6990 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:176
6991 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:144
6992 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(3)
6993 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s28
6994 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s29
6995 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s74
6996 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s75
6997 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
6998 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6999 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s36
7000 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s37
7001 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s72
7002 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s73
7003 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
7004 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
7005 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s40
7006 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s41
7007 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s70
7008 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s71
7009 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
7010 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
7011 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s44
7012 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s45
7013 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s60
7014 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s61
7015 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
7016 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
7017 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s58
7018 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s59
7019 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s56
7020 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s57
7021 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s54
7022 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s55
7023 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, s50
7024 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, s51
7025 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v16, s30
7026 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v17, s31
7027 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s24
7028 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s25
7029 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224
7030 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
7031 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s22
7032 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s23
7033 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s16
7034 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s17
7035 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:192
7036 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
7037 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s20
7038 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s21
7039 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s14
7040 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s15
7041 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:160
7042 ; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
7043 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s18
7044 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s19
7045 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v14, s12
7046 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, s13
7047 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:128
7048 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v18, s10
7049 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v19, s11
7050 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:96
7051 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s8
7052 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s9
7053 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
7054 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s6
7055 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s7
7056 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32
7057 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s4
7058 ; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s5
7059 ; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0
7060 ; GCN-NOHSA-SI-NEXT:    s_endpgm
7062 ; GCN-HSA-LABEL: constant_sextload_v32i16_to_v32i64:
7063 ; GCN-HSA:       ; %bb.0:
7064 ; GCN-HSA-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
7065 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
7066 ; GCN-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
7067 ; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
7068 ; GCN-HSA-NEXT:    s_mov_b32 s42, s15
7069 ; GCN-HSA-NEXT:    s_mov_b32 s48, s13
7070 ; GCN-HSA-NEXT:    s_mov_b32 s50, s11
7071 ; GCN-HSA-NEXT:    s_mov_b32 s52, s9
7072 ; GCN-HSA-NEXT:    s_mov_b32 s54, s7
7073 ; GCN-HSA-NEXT:    s_mov_b32 s56, s5
7074 ; GCN-HSA-NEXT:    s_mov_b32 s46, s3
7075 ; GCN-HSA-NEXT:    s_mov_b32 s58, s1
7076 ; GCN-HSA-NEXT:    s_lshr_b32 s60, s14, 16
7077 ; GCN-HSA-NEXT:    s_lshr_b32 s62, s12, 16
7078 ; GCN-HSA-NEXT:    s_lshr_b32 s64, s10, 16
7079 ; GCN-HSA-NEXT:    s_lshr_b32 s66, s8, 16
7080 ; GCN-HSA-NEXT:    s_lshr_b32 s68, s6, 16
7081 ; GCN-HSA-NEXT:    s_lshr_b32 s70, s4, 16
7082 ; GCN-HSA-NEXT:    s_lshr_b32 s72, s2, 16
7083 ; GCN-HSA-NEXT:    s_lshr_b32 s74, s0, 16
7084 ; GCN-HSA-NEXT:    s_bfe_i64 s[18:19], s[0:1], 0x100000
7085 ; GCN-HSA-NEXT:    s_bfe_i64 s[20:21], s[2:3], 0x100000
7086 ; GCN-HSA-NEXT:    s_ashr_i64 s[36:37], s[0:1], 48
7087 ; GCN-HSA-NEXT:    s_ashr_i64 s[38:39], s[2:3], 48
7088 ; GCN-HSA-NEXT:    s_ashr_i64 s[0:1], s[14:15], 48
7089 ; GCN-HSA-NEXT:    s_bfe_i64 s[2:3], s[42:43], 0x100000
7090 ; GCN-HSA-NEXT:    s_bfe_i64 s[22:23], s[4:5], 0x100000
7091 ; GCN-HSA-NEXT:    s_bfe_i64 s[24:25], s[6:7], 0x100000
7092 ; GCN-HSA-NEXT:    s_bfe_i64 s[26:27], s[8:9], 0x100000
7093 ; GCN-HSA-NEXT:    s_bfe_i64 s[28:29], s[10:11], 0x100000
7094 ; GCN-HSA-NEXT:    s_bfe_i64 s[30:31], s[12:13], 0x100000
7095 ; GCN-HSA-NEXT:    s_bfe_i64 s[34:35], s[14:15], 0x100000
7096 ; GCN-HSA-NEXT:    s_ashr_i64 s[40:41], s[4:5], 48
7097 ; GCN-HSA-NEXT:    s_ashr_i64 s[44:45], s[6:7], 48
7098 ; GCN-HSA-NEXT:    s_ashr_i64 s[76:77], s[8:9], 48
7099 ; GCN-HSA-NEXT:    s_ashr_i64 s[78:79], s[10:11], 48
7100 ; GCN-HSA-NEXT:    s_ashr_i64 s[80:81], s[12:13], 48
7101 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
7102 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
7103 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
7104 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
7105 ; GCN-HSA-NEXT:    s_bfe_i64 s[0:1], s[74:75], 0x100000
7106 ; GCN-HSA-NEXT:    s_bfe_i64 s[2:3], s[72:73], 0x100000
7107 ; GCN-HSA-NEXT:    s_bfe_i64 s[4:5], s[70:71], 0x100000
7108 ; GCN-HSA-NEXT:    s_bfe_i64 s[6:7], s[68:69], 0x100000
7109 ; GCN-HSA-NEXT:    s_bfe_i64 s[8:9], s[66:67], 0x100000
7110 ; GCN-HSA-NEXT:    s_bfe_i64 s[10:11], s[64:65], 0x100000
7111 ; GCN-HSA-NEXT:    s_bfe_i64 s[12:13], s[62:63], 0x100000
7112 ; GCN-HSA-NEXT:    s_bfe_i64 s[14:15], s[60:61], 0x100000
7113 ; GCN-HSA-NEXT:    s_bfe_i64 s[42:43], s[58:59], 0x100000
7114 ; GCN-HSA-NEXT:    s_bfe_i64 s[46:47], s[46:47], 0x100000
7115 ; GCN-HSA-NEXT:    s_bfe_i64 s[56:57], s[56:57], 0x100000
7116 ; GCN-HSA-NEXT:    s_bfe_i64 s[54:55], s[54:55], 0x100000
7117 ; GCN-HSA-NEXT:    s_bfe_i64 s[52:53], s[52:53], 0x100000
7118 ; GCN-HSA-NEXT:    s_bfe_i64 s[50:51], s[50:51], 0x100000
7119 ; GCN-HSA-NEXT:    s_bfe_i64 s[48:49], s[48:49], 0x100000
7120 ; GCN-HSA-NEXT:    s_add_u32 s58, s16, 0xf0
7121 ; GCN-HSA-NEXT:    s_addc_u32 s59, s17, 0
7122 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s48
7123 ; GCN-HSA-NEXT:    s_add_u32 s48, s16, 0xd0
7124 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s49
7125 ; GCN-HSA-NEXT:    s_addc_u32 s49, s17, 0
7126 ; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s48
7127 ; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s49
7128 ; GCN-HSA-NEXT:    s_add_u32 s48, s16, 0xb0
7129 ; GCN-HSA-NEXT:    s_addc_u32 s49, s17, 0
7130 ; GCN-HSA-NEXT:    v_mov_b32_e32 v26, s48
7131 ; GCN-HSA-NEXT:    v_mov_b32_e32 v27, s49
7132 ; GCN-HSA-NEXT:    s_add_u32 s48, s16, 0x90
7133 ; GCN-HSA-NEXT:    s_addc_u32 s49, s17, 0
7134 ; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s44
7135 ; GCN-HSA-NEXT:    s_add_u32 s44, s16, 0x70
7136 ; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s45
7137 ; GCN-HSA-NEXT:    s_addc_u32 s45, s17, 0
7138 ; GCN-HSA-NEXT:    v_mov_b32_e32 v30, s44
7139 ; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s58
7140 ; GCN-HSA-NEXT:    v_mov_b32_e32 v31, s45
7141 ; GCN-HSA-NEXT:    s_add_u32 s44, s16, 0x50
7142 ; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s59
7143 ; GCN-HSA-NEXT:    s_addc_u32 s45, s17, 0
7144 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
7145 ; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s80
7146 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s38
7147 ; GCN-HSA-NEXT:    s_add_u32 s38, s16, 48
7148 ; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s81
7149 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s39
7150 ; GCN-HSA-NEXT:    s_addc_u32 s39, s17, 0
7151 ; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s50
7152 ; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s51
7153 ; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s78
7154 ; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s79
7155 ; GCN-HSA-NEXT:    v_mov_b32_e32 v28, s48
7156 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
7157 ; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s52
7158 ; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s36
7159 ; GCN-HSA-NEXT:    s_add_u32 s36, s16, 16
7160 ; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s53
7161 ; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s76
7162 ; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s77
7163 ; GCN-HSA-NEXT:    v_mov_b32_e32 v29, s49
7164 ; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s54
7165 ; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s55
7166 ; GCN-HSA-NEXT:    v_mov_b32_e32 v32, s44
7167 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
7168 ; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s37
7169 ; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s38
7170 ; GCN-HSA-NEXT:    s_addc_u32 s37, s17, 0
7171 ; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s36
7172 ; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s56
7173 ; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s57
7174 ; GCN-HSA-NEXT:    v_mov_b32_e32 v33, s45
7175 ; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s40
7176 ; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s41
7177 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s46
7178 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s47
7179 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s42
7180 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s43
7181 ; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s39
7182 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
7183 ; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s37
7184 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
7185 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
7186 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]
7187 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]
7188 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s14
7189 ; GCN-HSA-NEXT:    s_add_u32 s14, s16, 0xe0
7190 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s15
7191 ; GCN-HSA-NEXT:    s_addc_u32 s15, s17, 0
7192 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s14
7193 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s34
7194 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s35
7195 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s15
7196 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7197 ; GCN-HSA-NEXT:    s_nop 0
7198 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s12
7199 ; GCN-HSA-NEXT:    s_add_u32 s12, s16, 0xc0
7200 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s13
7201 ; GCN-HSA-NEXT:    s_addc_u32 s13, s17, 0
7202 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s12
7203 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s30
7204 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s31
7205 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s13
7206 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7207 ; GCN-HSA-NEXT:    s_nop 0
7208 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s10
7209 ; GCN-HSA-NEXT:    s_add_u32 s10, s16, 0xa0
7210 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s11
7211 ; GCN-HSA-NEXT:    s_addc_u32 s11, s17, 0
7212 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s10
7213 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s28
7214 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s29
7215 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s11
7216 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7217 ; GCN-HSA-NEXT:    s_nop 0
7218 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s8
7219 ; GCN-HSA-NEXT:    s_add_u32 s8, s16, 0x80
7220 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s9
7221 ; GCN-HSA-NEXT:    s_addc_u32 s9, s17, 0
7222 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s8
7223 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s26
7224 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s27
7225 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s9
7226 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7227 ; GCN-HSA-NEXT:    s_nop 0
7228 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
7229 ; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0x60
7230 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
7231 ; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
7232 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s6
7233 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s24
7234 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s25
7235 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s7
7236 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7237 ; GCN-HSA-NEXT:    s_nop 0
7238 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s4
7239 ; GCN-HSA-NEXT:    s_add_u32 s4, s16, 64
7240 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s5
7241 ; GCN-HSA-NEXT:    s_addc_u32 s5, s17, 0
7242 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
7243 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s22
7244 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s23
7245 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
7246 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7247 ; GCN-HSA-NEXT:    s_nop 0
7248 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
7249 ; GCN-HSA-NEXT:    s_add_u32 s2, s16, 32
7250 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s3
7251 ; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
7252 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
7253 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s20
7254 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
7255 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
7256 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7257 ; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
7258 ; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s18
7259 ; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s19
7260 ; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
7261 ; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
7262 ; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s17
7263 ; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7264 ; GCN-HSA-NEXT:    s_endpgm
7266 ; GCN-NOHSA-VI-LABEL: constant_sextload_v32i16_to_v32i64:
7267 ; GCN-NOHSA-VI:       ; %bb.0:
7268 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
7269 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
7270 ; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
7271 ; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
7272 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s20, s1
7273 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s26, s1, 16
7274 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[24:25], s[2:3], 0x100000
7275 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s2, 16
7276 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[30:31], s[4:5], 0x100000
7277 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s4, 16
7278 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[38:39], s[6:7], 0x100000
7279 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s6, 16
7280 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[44:45], s[8:9], 0x100000
7281 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s8, s8, 16
7282 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[50:51], s[10:11], 0x100000
7283 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s10, s10, 16
7284 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[56:57], s[12:13], 0x100000
7285 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s12, s12, 16
7286 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[62:63], s[14:15], 0x100000
7287 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s14, s14, 16
7288 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[22:23], s[20:21], 0x100000
7289 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[20:21], s[26:27], 0x100000
7290 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[26:27], s[2:3], 0x100000
7291 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, s3
7292 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[34:35], s[4:5], 0x100000
7293 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s5
7294 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[40:41], s[6:7], 0x100000
7295 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, s7
7296 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[46:47], s[8:9], 0x100000
7297 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s9
7298 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[52:53], s[10:11], 0x100000
7299 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s11
7300 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[58:59], s[12:13], 0x100000
7301 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s12, s13
7302 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[64:65], s[14:15], 0x100000
7303 ; GCN-NOHSA-VI-NEXT:    s_mov_b32 s14, s15
7304 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[18:19], s[0:1], 0x100000
7305 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s0, s0, 16
7306 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[28:29], s[2:3], 0x100000
7307 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s3, 16
7308 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[36:37], s[4:5], 0x100000
7309 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s5, 16
7310 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[42:43], s[6:7], 0x100000
7311 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s7, 16
7312 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[48:49], s[8:9], 0x100000
7313 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s8, s9, 16
7314 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[54:55], s[10:11], 0x100000
7315 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s10, s11, 16
7316 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[60:61], s[12:13], 0x100000
7317 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s12, s13, 16
7318 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[66:67], s[14:15], 0x100000
7319 ; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s14, s15, 16
7320 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[0:1], s[0:1], 0x100000
7321 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x100000
7322 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
7323 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
7324 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x100000
7325 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x100000
7326 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x100000
7327 ; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x100000
7328 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s14
7329 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s14, s16, 0xf0
7330 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s15
7331 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s15, s17, 0
7332 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s14
7333 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s66
7334 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s67
7335 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s15
7336 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s14, s16, 0xe0
7337 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7338 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s15, s17, 0
7339 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s14
7340 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s62
7341 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s63
7342 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s64
7343 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s65
7344 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s15
7345 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7346 ; GCN-NOHSA-VI-NEXT:    s_nop 0
7347 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s12
7348 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s12, s16, 0xd0
7349 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s13
7350 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s13, s17, 0
7351 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s12
7352 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s60
7353 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s61
7354 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s13
7355 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s12, s16, 0xc0
7356 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7357 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s13, s17, 0
7358 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s12
7359 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s56
7360 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s57
7361 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s58
7362 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s59
7363 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s13
7364 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7365 ; GCN-NOHSA-VI-NEXT:    s_nop 0
7366 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s10
7367 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s16, 0xb0
7368 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s11
7369 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s17, 0
7370 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
7371 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s54
7372 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s55
7373 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
7374 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s10, s16, 0xa0
7375 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7376 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s11, s17, 0
7377 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s10
7378 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s50
7379 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s51
7380 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s52
7381 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s53
7382 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s11
7383 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7384 ; GCN-NOHSA-VI-NEXT:    s_nop 0
7385 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s8
7386 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s8, s16, 0x90
7387 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s9
7388 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s9, s17, 0
7389 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s8
7390 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s48
7391 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s49
7392 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s9
7393 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s8, s16, 0x80
7394 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7395 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s9, s17, 0
7396 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s8
7397 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s44
7398 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s45
7399 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s46
7400 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s47
7401 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s9
7402 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7403 ; GCN-NOHSA-VI-NEXT:    s_nop 0
7404 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
7405 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s6, s16, 0x70
7406 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s7
7407 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s7, s17, 0
7408 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s6
7409 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s42
7410 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s43
7411 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s7
7412 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s6, s16, 0x60
7413 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7414 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s7, s17, 0
7415 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s6
7416 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s38
7417 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s39
7418 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s40
7419 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s41
7420 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s7
7421 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7422 ; GCN-NOHSA-VI-NEXT:    s_nop 0
7423 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
7424 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 0x50
7425 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s5
7426 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
7427 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
7428 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s36
7429 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s37
7430 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
7431 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s4, s16, 64
7432 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7433 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s5, s17, 0
7434 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s4
7435 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s30
7436 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s31
7437 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s34
7438 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s35
7439 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s5
7440 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7441 ; GCN-NOHSA-VI-NEXT:    s_nop 0
7442 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
7443 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s16, 48
7444 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s3
7445 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s17, 0
7446 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
7447 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
7448 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s16, 32
7449 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s28
7450 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s29
7451 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s17, 0
7452 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7453 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
7454 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
7455 ; GCN-NOHSA-VI-NEXT:    s_add_u32 s2, s16, 16
7456 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s24
7457 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s25
7458 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s26
7459 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s27
7460 ; GCN-NOHSA-VI-NEXT:    s_addc_u32 s3, s17, 0
7461 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7462 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s3
7463 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s22
7464 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s23
7465 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s20
7466 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s21
7467 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s2
7468 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7469 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s16
7470 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s18
7471 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s19
7472 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s0
7473 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s1
7474 ; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s17
7475 ; GCN-NOHSA-VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7476 ; GCN-NOHSA-VI-NEXT:    s_endpgm
7478 ; EG-LABEL: constant_sextload_v32i16_to_v32i64:
7479 ; EG:       ; %bb.0:
7480 ; EG-NEXT:    ALU 0, @30, KC0[CB0:0-32], KC1[]
7481 ; EG-NEXT:    TEX 0 @22
7482 ; EG-NEXT:    ALU 55, @31, KC0[CB0:0-32], KC1[]
7483 ; EG-NEXT:    TEX 2 @24
7484 ; EG-NEXT:    ALU 74, @87, KC0[CB0:0-32], KC1[]
7485 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T50.XYZW, T38.X, 0
7486 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T49.XYZW, T36.X, 0
7487 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T34.X, 0
7488 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T33.X, 0
7489 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T32.X, 0
7490 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T31.X, 0
7491 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T30.X, 0
7492 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T29.X, 0
7493 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T28.X, 0
7494 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T27.X, 0
7495 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T26.X, 0
7496 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T25.X, 0
7497 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T24.X, 0
7498 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T23.X, 0
7499 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T22.X, 0
7500 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T21.X, 1
7501 ; EG-NEXT:    CF_END
7502 ; EG-NEXT:    Fetch clause starting at 22:
7503 ; EG-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 0, #1
7504 ; EG-NEXT:    Fetch clause starting at 24:
7505 ; EG-NEXT:     VTX_READ_128 T38.XYZW, T19.X, 48, #1
7506 ; EG-NEXT:     VTX_READ_128 T39.XYZW, T19.X, 32, #1
7507 ; EG-NEXT:     VTX_READ_128 T40.XYZW, T19.X, 16, #1
7508 ; EG-NEXT:    ALU clause starting at 30:
7509 ; EG-NEXT:     MOV * T19.X, KC0[2].Z,
7510 ; EG-NEXT:    ALU clause starting at 31:
7511 ; EG-NEXT:     LSHR T21.X, KC0[2].Y, literal.x,
7512 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7513 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7514 ; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
7515 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7516 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
7517 ; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
7518 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7519 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
7520 ; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
7521 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7522 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
7523 ; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
7524 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7525 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
7526 ; EG-NEXT:     LSHR T26.X, PV.W, literal.x,
7527 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7528 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
7529 ; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
7530 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7531 ; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
7532 ; EG-NEXT:     LSHR T28.X, PV.W, literal.x,
7533 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7534 ; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
7535 ; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
7536 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7537 ; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
7538 ; EG-NEXT:     LSHR T30.X, PV.W, literal.x,
7539 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7540 ; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
7541 ; EG-NEXT:     LSHR T31.X, PV.W, literal.x,
7542 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7543 ; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
7544 ; EG-NEXT:     LSHR T32.X, PV.W, literal.x,
7545 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7546 ; EG-NEXT:    2(2.802597e-45), 192(2.690493e-43)
7547 ; EG-NEXT:     LSHR T33.X, PV.W, literal.x,
7548 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7549 ; EG-NEXT:    2(2.802597e-45), 208(2.914701e-43)
7550 ; EG-NEXT:     LSHR T34.X, PV.W, literal.x,
7551 ; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.y,
7552 ; EG-NEXT:     ASHR * T35.W, T20.X, literal.z,
7553 ; EG-NEXT:    2(2.802597e-45), 224(3.138909e-43)
7554 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
7555 ; EG-NEXT:     LSHR T36.X, PV.W, literal.x,
7556 ; EG-NEXT:     ASHR T35.Z, T20.X, literal.y,
7557 ; EG-NEXT:     ASHR * T37.W, T20.Y, literal.z,
7558 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7559 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
7560 ; EG-NEXT:     BFE_INT T35.X, T20.X, 0.0, literal.x,
7561 ; EG-NEXT:     ASHR * T37.Z, T20.Y, literal.x,
7562 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7563 ; EG-NEXT:     BFE_INT T37.X, T20.Y, 0.0, literal.x,
7564 ; EG-NEXT:     ASHR T35.Y, PV.X, literal.y,
7565 ; EG-NEXT:     ASHR * T19.W, T20.Z, literal.y,
7566 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7567 ; EG-NEXT:    ALU clause starting at 87:
7568 ; EG-NEXT:     ASHR T19.Z, T20.Z, literal.x,
7569 ; EG-NEXT:     ASHR * T41.W, T20.W, literal.y,
7570 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7571 ; EG-NEXT:     BFE_INT T19.X, T20.Z, 0.0, literal.x,
7572 ; EG-NEXT:     ASHR T37.Y, T37.X, literal.y,
7573 ; EG-NEXT:     ASHR T41.Z, T20.W, literal.x,
7574 ; EG-NEXT:     ASHR * T42.W, T40.X, literal.y, BS:VEC_120/SCL_212
7575 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7576 ; EG-NEXT:     BFE_INT T41.X, T20.W, 0.0, literal.x,
7577 ; EG-NEXT:     ASHR T19.Y, PV.X, literal.y,
7578 ; EG-NEXT:     ASHR T42.Z, T40.X, literal.x,
7579 ; EG-NEXT:     ASHR * T20.W, T40.Y, literal.y,
7580 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7581 ; EG-NEXT:     BFE_INT T42.X, T40.X, 0.0, literal.x,
7582 ; EG-NEXT:     ASHR T41.Y, PV.X, literal.y,
7583 ; EG-NEXT:     ASHR T20.Z, T40.Y, literal.x,
7584 ; EG-NEXT:     ASHR * T43.W, T40.Z, literal.y,
7585 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7586 ; EG-NEXT:     BFE_INT T20.X, T40.Y, 0.0, literal.x,
7587 ; EG-NEXT:     ASHR T42.Y, PV.X, literal.y,
7588 ; EG-NEXT:     ASHR T43.Z, T40.Z, literal.x,
7589 ; EG-NEXT:     ASHR * T44.W, T40.W, literal.y,
7590 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7591 ; EG-NEXT:     BFE_INT T43.X, T40.Z, 0.0, literal.x,
7592 ; EG-NEXT:     ASHR T20.Y, PV.X, literal.y,
7593 ; EG-NEXT:     ASHR T44.Z, T40.W, literal.x,
7594 ; EG-NEXT:     ASHR * T45.W, T39.X, literal.y,
7595 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7596 ; EG-NEXT:     BFE_INT T44.X, T40.W, 0.0, literal.x,
7597 ; EG-NEXT:     ASHR T43.Y, PV.X, literal.y,
7598 ; EG-NEXT:     ASHR T45.Z, T39.X, literal.x,
7599 ; EG-NEXT:     ASHR * T40.W, T39.Y, literal.y,
7600 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7601 ; EG-NEXT:     BFE_INT T45.X, T39.X, 0.0, literal.x,
7602 ; EG-NEXT:     ASHR T44.Y, PV.X, literal.y,
7603 ; EG-NEXT:     ASHR T40.Z, T39.Y, literal.x,
7604 ; EG-NEXT:     ASHR * T46.W, T39.Z, literal.y,
7605 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7606 ; EG-NEXT:     BFE_INT T40.X, T39.Y, 0.0, literal.x,
7607 ; EG-NEXT:     ASHR T45.Y, PV.X, literal.y,
7608 ; EG-NEXT:     ASHR T46.Z, T39.Z, literal.x,
7609 ; EG-NEXT:     ASHR * T47.W, T39.W, literal.y,
7610 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7611 ; EG-NEXT:     BFE_INT T46.X, T39.Z, 0.0, literal.x,
7612 ; EG-NEXT:     ASHR T40.Y, PV.X, literal.y,
7613 ; EG-NEXT:     ASHR T47.Z, T39.W, literal.x,
7614 ; EG-NEXT:     ASHR * T48.W, T38.X, literal.y,
7615 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7616 ; EG-NEXT:     BFE_INT T47.X, T39.W, 0.0, literal.x,
7617 ; EG-NEXT:     ASHR T46.Y, PV.X, literal.y,
7618 ; EG-NEXT:     ASHR T48.Z, T38.X, literal.x,
7619 ; EG-NEXT:     ASHR * T39.W, T38.Y, literal.y,
7620 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7621 ; EG-NEXT:     BFE_INT T48.X, T38.X, 0.0, literal.x,
7622 ; EG-NEXT:     ASHR T47.Y, PV.X, literal.y,
7623 ; EG-NEXT:     ASHR T39.Z, T38.Y, literal.x,
7624 ; EG-NEXT:     ASHR * T49.W, T38.Z, literal.y,
7625 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7626 ; EG-NEXT:     BFE_INT T39.X, T38.Y, 0.0, literal.x,
7627 ; EG-NEXT:     ASHR T48.Y, PV.X, literal.y,
7628 ; EG-NEXT:     ASHR T49.Z, T38.Z, literal.x,
7629 ; EG-NEXT:     ASHR * T50.W, T38.W, literal.y,
7630 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7631 ; EG-NEXT:     BFE_INT T49.X, T38.Z, 0.0, literal.x,
7632 ; EG-NEXT:     ASHR T39.Y, PV.X, literal.y,
7633 ; EG-NEXT:     ASHR * T50.Z, T38.W, literal.x,
7634 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7635 ; EG-NEXT:     BFE_INT T50.X, T38.W, 0.0, literal.x,
7636 ; EG-NEXT:     ASHR T49.Y, PV.X, literal.y,
7637 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
7638 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7639 ; EG-NEXT:    240(3.363116e-43), 0(0.000000e+00)
7640 ; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
7641 ; EG-NEXT:     ASHR * T50.Y, PV.X, literal.y,
7642 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
7643   %load = load <32 x i16>, ptr addrspace(4) %in
7644   %ext = sext <32 x i16> %load to <32 x i64>
7645   store <32 x i64> %ext, ptr addrspace(1) %out
7646   ret void
7649 ; These trigger undefined register machine verifier errors
7651 ; define amdgpu_kernel void @constant_zextload_v64i16_to_v64i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7652 ;   %load = load <64 x i16>, ptr addrspace(4) %in
7653 ;   %ext = zext <64 x i16> %load to <64 x i64>
7654 ;   store <64 x i64> %ext, ptr addrspace(1) %out
7655 ;   ret void
7656 ; }
7658 ; define amdgpu_kernel void @constant_sextload_v64i16_to_v64i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7659 ;   %load = load <64 x i16>, ptr addrspace(4) %in
7660 ;   %ext = sext <64 x i16> %load to <64 x i64>
7661 ;   store <64 x i64> %ext, ptr addrspace(1) %out
7662 ;   ret void
7663 ; }
7665 attributes #0 = { nounwind }