Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / load-constant-i8.ll
blob67a376b8c0f3c5c226ef51e6270dfb3e75573a93
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2 ; RUN: llc -mtriple=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GFX6-NOHSA %s
3 ; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=GFX7-HSA %s
4 ; RUN: llc -mtriple=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GFX8-NOHSA %s
5 ; RUN: llc -mtriple=r600 -mcpu=redwood -verify-machineinstrs < %s | FileCheck -check-prefix=EG %s
6 ; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX12 %s
8 ; TODO: NOT AND
9 define amdgpu_kernel void @constant_load_i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
10 ; GFX6-NOHSA-LABEL: constant_load_i8:
11 ; GFX6-NOHSA:       ; %bb.0: ; %entry
12 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
13 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
14 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
15 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
16 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
17 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
18 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
19 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
20 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
21 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
22 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
23 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
24 ; GFX6-NOHSA-NEXT:    buffer_store_byte v0, off, s[4:7], 0
25 ; GFX6-NOHSA-NEXT:    s_endpgm
27 ; GFX7-HSA-LABEL: constant_load_i8:
28 ; GFX7-HSA:       ; %bb.0: ; %entry
29 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
30 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
31 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
32 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
33 ; GFX7-HSA-NEXT:    flat_load_ubyte v2, v[0:1]
34 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
35 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
36 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
37 ; GFX7-HSA-NEXT:    flat_store_byte v[0:1], v2
38 ; GFX7-HSA-NEXT:    s_endpgm
40 ; GFX8-NOHSA-LABEL: constant_load_i8:
41 ; GFX8-NOHSA:       ; %bb.0: ; %entry
42 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
43 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
44 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
45 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
46 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
47 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
48 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
49 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
50 ; GFX8-NOHSA-NEXT:    flat_store_byte v[0:1], v2
51 ; GFX8-NOHSA-NEXT:    s_endpgm
53 ; EG-LABEL: constant_load_i8:
54 ; EG:       ; %bb.0: ; %entry
55 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
56 ; EG-NEXT:    TEX 0 @6
57 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
58 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
59 ; EG-NEXT:    CF_END
60 ; EG-NEXT:    PAD
61 ; EG-NEXT:    Fetch clause starting at 6:
62 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
63 ; EG-NEXT:    ALU clause starting at 8:
64 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
65 ; EG-NEXT:    ALU clause starting at 9:
66 ; EG-NEXT:     AND_INT T0.W, KC0[2].Y, literal.x,
67 ; EG-NEXT:     AND_INT * T1.W, T0.X, literal.y,
68 ; EG-NEXT:    3(4.203895e-45), 255(3.573311e-43)
69 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
70 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
71 ; EG-NEXT:     LSHL T0.X, T1.W, PV.W,
72 ; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
73 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
74 ; EG-NEXT:     MOV T0.Y, 0.0,
75 ; EG-NEXT:     MOV * T0.Z, 0.0,
76 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
77 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
79 ; GFX12-LABEL: constant_load_i8:
80 ; GFX12:       ; %bb.0: ; %entry
81 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
82 ; GFX12-NEXT:    v_mov_b32_e32 v0, 0
83 ; GFX12-NEXT:    s_wait_kmcnt 0x0
84 ; GFX12-NEXT:    global_load_u8 v1, v0, s[2:3]
85 ; GFX12-NEXT:    s_wait_loadcnt 0x0
86 ; GFX12-NEXT:    global_store_b8 v0, v1, s[0:1]
87 ; GFX12-NEXT:    s_nop 0
88 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
89 ; GFX12-NEXT:    s_endpgm
90 entry:
91   %ld = load i8, ptr addrspace(4) %in
92   store i8 %ld, ptr addrspace(1) %out
93   ret void
96 define amdgpu_kernel void @constant_load_v2i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
97 ; GFX6-NOHSA-LABEL: constant_load_v2i8:
98 ; GFX6-NOHSA:       ; %bb.0: ; %entry
99 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
100 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
101 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
102 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
103 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
104 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
105 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
106 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
107 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
108 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
109 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
110 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
111 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[4:7], 0
112 ; GFX6-NOHSA-NEXT:    s_endpgm
114 ; GFX7-HSA-LABEL: constant_load_v2i8:
115 ; GFX7-HSA:       ; %bb.0: ; %entry
116 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
117 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
118 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
119 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
120 ; GFX7-HSA-NEXT:    flat_load_ushort v2, v[0:1]
121 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
122 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
123 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
124 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v2
125 ; GFX7-HSA-NEXT:    s_endpgm
127 ; GFX8-NOHSA-LABEL: constant_load_v2i8:
128 ; GFX8-NOHSA:       ; %bb.0: ; %entry
129 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
130 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
131 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
132 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
133 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
134 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
135 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
136 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
137 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v2
138 ; GFX8-NOHSA-NEXT:    s_endpgm
140 ; EG-LABEL: constant_load_v2i8:
141 ; EG:       ; %bb.0: ; %entry
142 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
143 ; EG-NEXT:    TEX 0 @6
144 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
145 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
146 ; EG-NEXT:    CF_END
147 ; EG-NEXT:    PAD
148 ; EG-NEXT:    Fetch clause starting at 6:
149 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
150 ; EG-NEXT:    ALU clause starting at 8:
151 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
152 ; EG-NEXT:    ALU clause starting at 9:
153 ; EG-NEXT:     AND_INT T0.W, KC0[2].Y, literal.x,
154 ; EG-NEXT:     AND_INT * T1.W, T0.X, literal.y,
155 ; EG-NEXT:    3(4.203895e-45), 65535(9.183409e-41)
156 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
157 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
158 ; EG-NEXT:     LSHL T0.X, T1.W, PV.W,
159 ; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
160 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
161 ; EG-NEXT:     MOV T0.Y, 0.0,
162 ; EG-NEXT:     MOV * T0.Z, 0.0,
163 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
164 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
166 ; GFX12-LABEL: constant_load_v2i8:
167 ; GFX12:       ; %bb.0: ; %entry
168 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
169 ; GFX12-NEXT:    v_mov_b32_e32 v0, 0
170 ; GFX12-NEXT:    s_wait_kmcnt 0x0
171 ; GFX12-NEXT:    global_load_u16 v1, v0, s[2:3]
172 ; GFX12-NEXT:    s_wait_loadcnt 0x0
173 ; GFX12-NEXT:    global_store_b16 v0, v1, s[0:1]
174 ; GFX12-NEXT:    s_nop 0
175 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
176 ; GFX12-NEXT:    s_endpgm
177 entry:
178   %ld = load <2 x i8>, ptr addrspace(4) %in
179   store <2 x i8> %ld, ptr addrspace(1) %out
180   ret void
183 define amdgpu_kernel void @constant_load_v3i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
184 ; GFX6-NOHSA-LABEL: constant_load_v3i8:
185 ; GFX6-NOHSA:       ; %bb.0: ; %entry
186 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
187 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
188 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
189 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
190 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
191 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s5, s4, 16
192 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
193 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
194 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
195 ; GFX6-NOHSA-NEXT:    buffer_store_byte v1, off, s[0:3], 0 offset:2
196 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[0:3], 0
197 ; GFX6-NOHSA-NEXT:    s_endpgm
199 ; GFX7-HSA-LABEL: constant_load_v3i8:
200 ; GFX7-HSA:       ; %bb.0: ; %entry
201 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
202 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
203 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
204 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
205 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
206 ; GFX7-HSA-NEXT:    s_add_u32 s0, s0, 2
207 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s1, 0
208 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
209 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
210 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
211 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
212 ; GFX7-HSA-NEXT:    s_lshr_b32 s0, s2, 16
213 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v4
214 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
215 ; GFX7-HSA-NEXT:    flat_store_byte v[2:3], v0
216 ; GFX7-HSA-NEXT:    s_endpgm
218 ; GFX8-NOHSA-LABEL: constant_load_v3i8:
219 ; GFX8-NOHSA:       ; %bb.0: ; %entry
220 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
221 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
222 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
223 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
224 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
225 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s0, 2
226 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s1, 0
227 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s1
228 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s0
229 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
230 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
231 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s2, 16
232 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v4
233 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
234 ; GFX8-NOHSA-NEXT:    flat_store_byte v[2:3], v0
235 ; GFX8-NOHSA-NEXT:    s_endpgm
237 ; EG-LABEL: constant_load_v3i8:
238 ; EG:       ; %bb.0: ; %entry
239 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
240 ; EG-NEXT:    TEX 0 @6
241 ; EG-NEXT:    ALU 27, @9, KC0[CB0:0-32], KC1[]
242 ; EG-NEXT:    MEM_RAT MSKOR T6.XW, T8.X
243 ; EG-NEXT:    MEM_RAT MSKOR T5.XW, T7.X
244 ; EG-NEXT:    CF_END
245 ; EG-NEXT:    Fetch clause starting at 6:
246 ; EG-NEXT:     VTX_READ_32 T5.X, T5.X, 0, #1
247 ; EG-NEXT:    ALU clause starting at 8:
248 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
249 ; EG-NEXT:    ALU clause starting at 9:
250 ; EG-NEXT:     MOV * T2.X, T5.X,
251 ; EG-NEXT:     MOV T0.Y, PV.X,
252 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
253 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
254 ; EG-NEXT:     AND_INT T1.W, PV.W, literal.x,
255 ; EG-NEXT:     MOV * T2.W, literal.y,
256 ; EG-NEXT:    3(4.203895e-45), 8(1.121039e-44)
257 ; EG-NEXT:     BFE_UINT T2.W, T0.Y, literal.x, PS,
258 ; EG-NEXT:     LSHL * T1.W, PV.W, literal.y,
259 ; EG-NEXT:    16(2.242078e-44), 3(4.203895e-45)
260 ; EG-NEXT:     LSHL T6.X, PV.W, PS,
261 ; EG-NEXT:     LSHL * T6.W, literal.x, PS,
262 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
263 ; EG-NEXT:     MOV T6.Y, 0.0,
264 ; EG-NEXT:     AND_INT T1.W, KC0[2].Y, literal.x,
265 ; EG-NEXT:     AND_INT * T2.W, T5.X, literal.y,
266 ; EG-NEXT:    3(4.203895e-45), 65535(9.183409e-41)
267 ; EG-NEXT:     LSHL * T1.W, PV.W, literal.x,
268 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
269 ; EG-NEXT:     LSHL T5.X, T2.W, PV.W,
270 ; EG-NEXT:     LSHL * T5.W, literal.x, PV.W,
271 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
272 ; EG-NEXT:     MOV T5.Y, 0.0,
273 ; EG-NEXT:     MOV T6.Z, 0.0,
274 ; EG-NEXT:     MOV * T5.Z, 0.0,
275 ; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
276 ; EG-NEXT:     LSHR * T8.X, T0.W, literal.x,
277 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
279 ; GFX12-LABEL: constant_load_v3i8:
280 ; GFX12:       ; %bb.0: ; %entry
281 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
282 ; GFX12-NEXT:    s_wait_kmcnt 0x0
283 ; GFX12-NEXT:    s_load_b32 s2, s[2:3], 0x0
284 ; GFX12-NEXT:    s_wait_kmcnt 0x0
285 ; GFX12-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
286 ; GFX12-NEXT:    s_clause 0x1
287 ; GFX12-NEXT:    global_store_d16_hi_b8 v0, v1, s[0:1] offset:2
288 ; GFX12-NEXT:    global_store_b16 v0, v1, s[0:1]
289 ; GFX12-NEXT:    s_nop 0
290 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
291 ; GFX12-NEXT:    s_endpgm
292 entry:
293   %ld = load <3 x i8>, ptr addrspace(4) %in
294   store <3 x i8> %ld, ptr addrspace(1) %out
295   ret void
298 define amdgpu_kernel void @constant_load_v4i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
299 ; GFX6-NOHSA-LABEL: constant_load_v4i8:
300 ; GFX6-NOHSA:       ; %bb.0: ; %entry
301 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
302 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
303 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
304 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
305 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
306 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
307 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
308 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[0:3], 0
309 ; GFX6-NOHSA-NEXT:    s_endpgm
311 ; GFX7-HSA-LABEL: constant_load_v4i8:
312 ; GFX7-HSA:       ; %bb.0: ; %entry
313 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
314 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
315 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
316 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
317 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
318 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
319 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
320 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
321 ; GFX7-HSA-NEXT:    s_endpgm
323 ; GFX8-NOHSA-LABEL: constant_load_v4i8:
324 ; GFX8-NOHSA:       ; %bb.0: ; %entry
325 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
326 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
327 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
328 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
329 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
330 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
331 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s2
332 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
333 ; GFX8-NOHSA-NEXT:    s_endpgm
335 ; EG-LABEL: constant_load_v4i8:
336 ; EG:       ; %bb.0: ; %entry
337 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
338 ; EG-NEXT:    TEX 0 @6
339 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
340 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
341 ; EG-NEXT:    CF_END
342 ; EG-NEXT:    PAD
343 ; EG-NEXT:    Fetch clause starting at 6:
344 ; EG-NEXT:     VTX_READ_32 T0.X, T0.X, 0, #1
345 ; EG-NEXT:    ALU clause starting at 8:
346 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
347 ; EG-NEXT:    ALU clause starting at 9:
348 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
349 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
351 ; GFX12-LABEL: constant_load_v4i8:
352 ; GFX12:       ; %bb.0: ; %entry
353 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
354 ; GFX12-NEXT:    s_wait_kmcnt 0x0
355 ; GFX12-NEXT:    s_load_b32 s2, s[2:3], 0x0
356 ; GFX12-NEXT:    s_wait_kmcnt 0x0
357 ; GFX12-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
358 ; GFX12-NEXT:    global_store_b32 v0, v1, s[0:1]
359 ; GFX12-NEXT:    s_nop 0
360 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
361 ; GFX12-NEXT:    s_endpgm
362 entry:
363   %ld = load <4 x i8>, ptr addrspace(4) %in
364   store <4 x i8> %ld, ptr addrspace(1) %out
365   ret void
368 define amdgpu_kernel void @constant_load_v8i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
369 ; GFX6-NOHSA-LABEL: constant_load_v8i8:
370 ; GFX6-NOHSA:       ; %bb.0: ; %entry
371 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
372 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
373 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
374 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
375 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
376 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
377 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
378 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
379 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
380 ; GFX6-NOHSA-NEXT:    s_endpgm
382 ; GFX7-HSA-LABEL: constant_load_v8i8:
383 ; GFX7-HSA:       ; %bb.0: ; %entry
384 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
385 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
386 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
387 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
388 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
389 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
390 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
391 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s3
392 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
393 ; GFX7-HSA-NEXT:    s_endpgm
395 ; GFX8-NOHSA-LABEL: constant_load_v8i8:
396 ; GFX8-NOHSA:       ; %bb.0: ; %entry
397 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
398 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
399 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
400 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
401 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
402 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
403 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s2
404 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s3
405 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
406 ; GFX8-NOHSA-NEXT:    s_endpgm
408 ; EG-LABEL: constant_load_v8i8:
409 ; EG:       ; %bb.0: ; %entry
410 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
411 ; EG-NEXT:    TEX 0 @6
412 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
413 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
414 ; EG-NEXT:    CF_END
415 ; EG-NEXT:    PAD
416 ; EG-NEXT:    Fetch clause starting at 6:
417 ; EG-NEXT:     VTX_READ_64 T0.XY, T0.X, 0, #1
418 ; EG-NEXT:    ALU clause starting at 8:
419 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
420 ; EG-NEXT:    ALU clause starting at 9:
421 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
422 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
424 ; GFX12-LABEL: constant_load_v8i8:
425 ; GFX12:       ; %bb.0: ; %entry
426 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
427 ; GFX12-NEXT:    s_wait_kmcnt 0x0
428 ; GFX12-NEXT:    s_load_b64 s[2:3], s[2:3], 0x0
429 ; GFX12-NEXT:    v_mov_b32_e32 v2, 0
430 ; GFX12-NEXT:    s_wait_kmcnt 0x0
431 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
432 ; GFX12-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
433 ; GFX12-NEXT:    s_nop 0
434 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
435 ; GFX12-NEXT:    s_endpgm
436 entry:
437   %ld = load <8 x i8>, ptr addrspace(4) %in
438   store <8 x i8> %ld, ptr addrspace(1) %out
439   ret void
442 define amdgpu_kernel void @constant_load_v16i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
443 ; GFX6-NOHSA-LABEL: constant_load_v16i8:
444 ; GFX6-NOHSA:       ; %bb.0: ; %entry
445 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
446 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
447 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
448 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
449 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
450 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
451 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
452 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
453 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
454 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s7
455 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
456 ; GFX6-NOHSA-NEXT:    s_endpgm
458 ; GFX7-HSA-LABEL: constant_load_v16i8:
459 ; GFX7-HSA:       ; %bb.0: ; %entry
460 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
461 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
462 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
463 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
464 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
465 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
466 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
467 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s5
468 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
469 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s7
470 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
471 ; GFX7-HSA-NEXT:    s_endpgm
473 ; GFX8-NOHSA-LABEL: constant_load_v16i8:
474 ; GFX8-NOHSA:       ; %bb.0: ; %entry
475 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
476 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
477 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
478 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
479 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
480 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
481 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
482 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
483 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
484 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s7
485 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
486 ; GFX8-NOHSA-NEXT:    s_endpgm
488 ; EG-LABEL: constant_load_v16i8:
489 ; EG:       ; %bb.0: ; %entry
490 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
491 ; EG-NEXT:    TEX 0 @6
492 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
493 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
494 ; EG-NEXT:    CF_END
495 ; EG-NEXT:    PAD
496 ; EG-NEXT:    Fetch clause starting at 6:
497 ; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
498 ; EG-NEXT:    ALU clause starting at 8:
499 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
500 ; EG-NEXT:    ALU clause starting at 9:
501 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
502 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
504 ; GFX12-LABEL: constant_load_v16i8:
505 ; GFX12:       ; %bb.0: ; %entry
506 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
507 ; GFX12-NEXT:    s_wait_kmcnt 0x0
508 ; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x0
509 ; GFX12-NEXT:    v_mov_b32_e32 v4, 0
510 ; GFX12-NEXT:    s_wait_kmcnt 0x0
511 ; GFX12-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v3, s7
512 ; GFX12-NEXT:    v_dual_mov_b32 v1, s5 :: v_dual_mov_b32 v2, s6
513 ; GFX12-NEXT:    global_store_b128 v4, v[0:3], s[0:1]
514 ; GFX12-NEXT:    s_nop 0
515 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
516 ; GFX12-NEXT:    s_endpgm
517 entry:
518   %ld = load <16 x i8>, ptr addrspace(4) %in
519   store <16 x i8> %ld, ptr addrspace(1) %out
520   ret void
523 define amdgpu_kernel void @constant_zextload_i8_to_i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
524 ; GFX6-NOHSA-LABEL: constant_zextload_i8_to_i32:
525 ; GFX6-NOHSA:       ; %bb.0:
526 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
527 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
528 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
529 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
530 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
531 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
532 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
533 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
534 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
535 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
536 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
537 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
538 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
539 ; GFX6-NOHSA-NEXT:    s_endpgm
541 ; GFX7-HSA-LABEL: constant_zextload_i8_to_i32:
542 ; GFX7-HSA:       ; %bb.0:
543 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
544 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
545 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
546 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
547 ; GFX7-HSA-NEXT:    flat_load_ubyte v2, v[0:1]
548 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
549 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
550 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
551 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
552 ; GFX7-HSA-NEXT:    s_endpgm
554 ; GFX8-NOHSA-LABEL: constant_zextload_i8_to_i32:
555 ; GFX8-NOHSA:       ; %bb.0:
556 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
557 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
558 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
559 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
560 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
561 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
562 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
563 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
564 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
565 ; GFX8-NOHSA-NEXT:    s_endpgm
567 ; EG-LABEL: constant_zextload_i8_to_i32:
568 ; EG:       ; %bb.0:
569 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
570 ; EG-NEXT:    TEX 0 @6
571 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
572 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
573 ; EG-NEXT:    CF_END
574 ; EG-NEXT:    PAD
575 ; EG-NEXT:    Fetch clause starting at 6:
576 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
577 ; EG-NEXT:    ALU clause starting at 8:
578 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
579 ; EG-NEXT:    ALU clause starting at 9:
580 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
581 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
583 ; GFX12-LABEL: constant_zextload_i8_to_i32:
584 ; GFX12:       ; %bb.0:
585 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
586 ; GFX12-NEXT:    s_wait_kmcnt 0x0
587 ; GFX12-NEXT:    s_load_u8 s2, s[2:3], 0x0
588 ; GFX12-NEXT:    s_wait_kmcnt 0x0
589 ; GFX12-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
590 ; GFX12-NEXT:    global_store_b32 v0, v1, s[0:1]
591 ; GFX12-NEXT:    s_nop 0
592 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
593 ; GFX12-NEXT:    s_endpgm
594   %a = load i8, ptr addrspace(4) %in
595   %ext = zext i8 %a to i32
596   store i32 %ext, ptr addrspace(1) %out
597   ret void
600 define amdgpu_kernel void @constant_sextload_i8_to_i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
601 ; GFX6-NOHSA-LABEL: constant_sextload_i8_to_i32:
602 ; GFX6-NOHSA:       ; %bb.0:
603 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
604 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
605 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
606 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
607 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
608 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
609 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
610 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
611 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
612 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
613 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
614 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
615 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
616 ; GFX6-NOHSA-NEXT:    s_endpgm
618 ; GFX7-HSA-LABEL: constant_sextload_i8_to_i32:
619 ; GFX7-HSA:       ; %bb.0:
620 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
621 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
622 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
623 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
624 ; GFX7-HSA-NEXT:    flat_load_sbyte v2, v[0:1]
625 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
626 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
627 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
628 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
629 ; GFX7-HSA-NEXT:    s_endpgm
631 ; GFX8-NOHSA-LABEL: constant_sextload_i8_to_i32:
632 ; GFX8-NOHSA:       ; %bb.0:
633 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
634 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
635 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
636 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
637 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
638 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
639 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
640 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
641 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
642 ; GFX8-NOHSA-NEXT:    s_endpgm
644 ; EG-LABEL: constant_sextload_i8_to_i32:
645 ; EG:       ; %bb.0:
646 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
647 ; EG-NEXT:    TEX 0 @6
648 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
649 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
650 ; EG-NEXT:    CF_END
651 ; EG-NEXT:    PAD
652 ; EG-NEXT:    Fetch clause starting at 6:
653 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
654 ; EG-NEXT:    ALU clause starting at 8:
655 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
656 ; EG-NEXT:    ALU clause starting at 9:
657 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
658 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
659 ; EG-NEXT:    8(1.121039e-44), 2(2.802597e-45)
661 ; GFX12-LABEL: constant_sextload_i8_to_i32:
662 ; GFX12:       ; %bb.0:
663 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
664 ; GFX12-NEXT:    s_wait_kmcnt 0x0
665 ; GFX12-NEXT:    s_load_i8 s2, s[2:3], 0x0
666 ; GFX12-NEXT:    s_wait_kmcnt 0x0
667 ; GFX12-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
668 ; GFX12-NEXT:    global_store_b32 v0, v1, s[0:1]
669 ; GFX12-NEXT:    s_nop 0
670 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
671 ; GFX12-NEXT:    s_endpgm
672   %ld = load i8, ptr addrspace(4) %in
673   %ext = sext i8 %ld to i32
674   store i32 %ext, ptr addrspace(1) %out
675   ret void
678 define amdgpu_kernel void @constant_zextload_v1i8_to_v1i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
679 ; GFX6-NOHSA-LABEL: constant_zextload_v1i8_to_v1i32:
680 ; GFX6-NOHSA:       ; %bb.0:
681 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
682 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
683 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
684 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
685 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
686 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
687 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
688 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
689 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
690 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
691 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
692 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
693 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
694 ; GFX6-NOHSA-NEXT:    s_endpgm
696 ; GFX7-HSA-LABEL: constant_zextload_v1i8_to_v1i32:
697 ; GFX7-HSA:       ; %bb.0:
698 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
699 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
700 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
701 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
702 ; GFX7-HSA-NEXT:    flat_load_ubyte v2, v[0:1]
703 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
704 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
705 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
706 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
707 ; GFX7-HSA-NEXT:    s_endpgm
709 ; GFX8-NOHSA-LABEL: constant_zextload_v1i8_to_v1i32:
710 ; GFX8-NOHSA:       ; %bb.0:
711 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
712 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
713 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
714 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
715 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
716 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
717 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
718 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
719 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
720 ; GFX8-NOHSA-NEXT:    s_endpgm
722 ; EG-LABEL: constant_zextload_v1i8_to_v1i32:
723 ; EG:       ; %bb.0:
724 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
725 ; EG-NEXT:    TEX 0 @6
726 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
727 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
728 ; EG-NEXT:    CF_END
729 ; EG-NEXT:    PAD
730 ; EG-NEXT:    Fetch clause starting at 6:
731 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
732 ; EG-NEXT:    ALU clause starting at 8:
733 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
734 ; EG-NEXT:    ALU clause starting at 9:
735 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
736 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
738 ; GFX12-LABEL: constant_zextload_v1i8_to_v1i32:
739 ; GFX12:       ; %bb.0:
740 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
741 ; GFX12-NEXT:    s_wait_kmcnt 0x0
742 ; GFX12-NEXT:    s_load_u8 s2, s[2:3], 0x0
743 ; GFX12-NEXT:    s_wait_kmcnt 0x0
744 ; GFX12-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
745 ; GFX12-NEXT:    global_store_b32 v0, v1, s[0:1]
746 ; GFX12-NEXT:    s_nop 0
747 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
748 ; GFX12-NEXT:    s_endpgm
749   %load = load <1 x i8>, ptr addrspace(4) %in
750   %ext = zext <1 x i8> %load to <1 x i32>
751   store <1 x i32> %ext, ptr addrspace(1) %out
752   ret void
755 define amdgpu_kernel void @constant_sextload_v1i8_to_v1i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
756 ; GFX6-NOHSA-LABEL: constant_sextload_v1i8_to_v1i32:
757 ; GFX6-NOHSA:       ; %bb.0:
758 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
759 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
760 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
761 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
762 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
763 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
764 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
765 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
766 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
767 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
768 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
769 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
770 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
771 ; GFX6-NOHSA-NEXT:    s_endpgm
773 ; GFX7-HSA-LABEL: constant_sextload_v1i8_to_v1i32:
774 ; GFX7-HSA:       ; %bb.0:
775 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
776 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
777 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
778 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
779 ; GFX7-HSA-NEXT:    flat_load_sbyte v2, v[0:1]
780 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
781 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
782 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
783 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
784 ; GFX7-HSA-NEXT:    s_endpgm
786 ; GFX8-NOHSA-LABEL: constant_sextload_v1i8_to_v1i32:
787 ; GFX8-NOHSA:       ; %bb.0:
788 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
789 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
790 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
791 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
792 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
793 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
794 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
795 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
796 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
797 ; GFX8-NOHSA-NEXT:    s_endpgm
799 ; EG-LABEL: constant_sextload_v1i8_to_v1i32:
800 ; EG:       ; %bb.0:
801 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
802 ; EG-NEXT:    TEX 0 @6
803 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
804 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
805 ; EG-NEXT:    CF_END
806 ; EG-NEXT:    PAD
807 ; EG-NEXT:    Fetch clause starting at 6:
808 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
809 ; EG-NEXT:    ALU clause starting at 8:
810 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
811 ; EG-NEXT:    ALU clause starting at 9:
812 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
813 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
814 ; EG-NEXT:    8(1.121039e-44), 2(2.802597e-45)
816 ; GFX12-LABEL: constant_sextload_v1i8_to_v1i32:
817 ; GFX12:       ; %bb.0:
818 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
819 ; GFX12-NEXT:    s_wait_kmcnt 0x0
820 ; GFX12-NEXT:    s_load_i8 s2, s[2:3], 0x0
821 ; GFX12-NEXT:    s_wait_kmcnt 0x0
822 ; GFX12-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
823 ; GFX12-NEXT:    global_store_b32 v0, v1, s[0:1]
824 ; GFX12-NEXT:    s_nop 0
825 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
826 ; GFX12-NEXT:    s_endpgm
827   %load = load <1 x i8>, ptr addrspace(4) %in
828   %ext = sext <1 x i8> %load to <1 x i32>
829   store <1 x i32> %ext, ptr addrspace(1) %out
830   ret void
833 ; TODO: This should use DST, but for some there are redundant MOVs
834 define amdgpu_kernel void @constant_zextload_v2i8_to_v2i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
835 ; GFX6-NOHSA-LABEL: constant_zextload_v2i8_to_v2i32:
836 ; GFX6-NOHSA:       ; %bb.0:
837 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
838 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
839 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
840 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
841 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
842 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
843 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
844 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
845 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
846 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
847 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
848 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
849 ; GFX6-NOHSA-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
850 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v0, 0xff, v0
851 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
852 ; GFX6-NOHSA-NEXT:    s_endpgm
854 ; GFX7-HSA-LABEL: constant_zextload_v2i8_to_v2i32:
855 ; GFX7-HSA:       ; %bb.0:
856 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
857 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
858 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
859 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
860 ; GFX7-HSA-NEXT:    flat_load_ushort v2, v[0:1]
861 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
862 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
863 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
864 ; GFX7-HSA-NEXT:    v_lshrrev_b32_e32 v3, 8, v2
865 ; GFX7-HSA-NEXT:    v_and_b32_e32 v2, 0xff, v2
866 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
867 ; GFX7-HSA-NEXT:    s_endpgm
869 ; GFX8-NOHSA-LABEL: constant_zextload_v2i8_to_v2i32:
870 ; GFX8-NOHSA:       ; %bb.0:
871 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
872 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
873 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
874 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
875 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
876 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
877 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
878 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
879 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e32 v3, 8, v2
880 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v2, 0xff, v2
881 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
882 ; GFX8-NOHSA-NEXT:    s_endpgm
884 ; EG-LABEL: constant_zextload_v2i8_to_v2i32:
885 ; EG:       ; %bb.0:
886 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
887 ; EG-NEXT:    TEX 0 @6
888 ; EG-NEXT:    ALU 12, @10, KC0[CB0:0-32], KC1[]
889 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XY, T5.X, 1
890 ; EG-NEXT:    CF_END
891 ; EG-NEXT:    PAD
892 ; EG-NEXT:    Fetch clause starting at 6:
893 ; EG-NEXT:     VTX_READ_16 T4.X, T4.X, 0, #1
894 ; EG-NEXT:    ALU clause starting at 8:
895 ; EG-NEXT:     MOV * T0.Y, T2.X,
896 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
897 ; EG-NEXT:    ALU clause starting at 10:
898 ; EG-NEXT:     AND_INT T0.W, T4.X, literal.x,
899 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
900 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
901 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
902 ; EG-NEXT:     MOV * T2.X, PV.W,
903 ; EG-NEXT:     MOV T0.Y, PV.X,
904 ; EG-NEXT:     MOV * T1.W, literal.x,
905 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
906 ; EG-NEXT:     BFE_UINT * T4.Y, PV.Y, literal.x, PV.W,
907 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
908 ; EG-NEXT:     AND_INT T4.X, T0.W, literal.x,
909 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
910 ; EG-NEXT:    255(3.573311e-43), 2(2.802597e-45)
912 ; GFX12-LABEL: constant_zextload_v2i8_to_v2i32:
913 ; GFX12:       ; %bb.0:
914 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
915 ; GFX12-NEXT:    v_mov_b32_e32 v2, 0
916 ; GFX12-NEXT:    s_wait_kmcnt 0x0
917 ; GFX12-NEXT:    global_load_u16 v0, v2, s[2:3]
918 ; GFX12-NEXT:    s_wait_loadcnt 0x0
919 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, v0
920 ; GFX12-NEXT:    v_and_b32_e32 v0, 0xff, v0
921 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
922 ; GFX12-NEXT:    v_and_b32_e32 v1, 0xffff, v1
923 ; GFX12-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
924 ; GFX12-NEXT:    s_nop 0
925 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
926 ; GFX12-NEXT:    s_endpgm
927   %load = load <2 x i8>, ptr addrspace(4) %in
928   %ext = zext <2 x i8> %load to <2 x i32>
929   store <2 x i32> %ext, ptr addrspace(1) %out
930   ret void
933 ; TODO: These should use DST, but for some there are redundant MOVs
934 define amdgpu_kernel void @constant_sextload_v2i8_to_v2i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
935 ; GFX6-NOHSA-LABEL: constant_sextload_v2i8_to_v2i32:
936 ; GFX6-NOHSA:       ; %bb.0:
937 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
938 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
939 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
940 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
941 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
942 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
943 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
944 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
945 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
946 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
947 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
948 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
949 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v1, v0, 8, 8
950 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v0, v0, 0, 8
951 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
952 ; GFX6-NOHSA-NEXT:    s_endpgm
954 ; GFX7-HSA-LABEL: constant_sextload_v2i8_to_v2i32:
955 ; GFX7-HSA:       ; %bb.0:
956 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
957 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
958 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
959 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
960 ; GFX7-HSA-NEXT:    flat_load_ushort v2, v[0:1]
961 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
962 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
963 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
964 ; GFX7-HSA-NEXT:    v_bfe_i32 v3, v2, 8, 8
965 ; GFX7-HSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
966 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
967 ; GFX7-HSA-NEXT:    s_endpgm
969 ; GFX8-NOHSA-LABEL: constant_sextload_v2i8_to_v2i32:
970 ; GFX8-NOHSA:       ; %bb.0:
971 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
972 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
973 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
974 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
975 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
976 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
977 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
978 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
979 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e32 v3, 8, v2
980 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
981 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v3, v3, 0, 8
982 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
983 ; GFX8-NOHSA-NEXT:    s_endpgm
985 ; EG-LABEL: constant_sextload_v2i8_to_v2i32:
986 ; EG:       ; %bb.0:
987 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
988 ; EG-NEXT:    TEX 0 @6
989 ; EG-NEXT:    ALU 11, @10, KC0[CB0:0-32], KC1[]
990 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XY, T5.X, 1
991 ; EG-NEXT:    CF_END
992 ; EG-NEXT:    PAD
993 ; EG-NEXT:    Fetch clause starting at 6:
994 ; EG-NEXT:     VTX_READ_16 T4.X, T4.X, 0, #1
995 ; EG-NEXT:    ALU clause starting at 8:
996 ; EG-NEXT:     MOV * T0.Y, T2.X,
997 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
998 ; EG-NEXT:    ALU clause starting at 10:
999 ; EG-NEXT:     AND_INT T0.W, T4.X, literal.x,
1000 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
1001 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
1002 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
1003 ; EG-NEXT:     MOV * T2.X, PV.W,
1004 ; EG-NEXT:     MOV * T0.Y, PV.X,
1005 ; EG-NEXT:     BFE_INT T4.X, T0.W, 0.0, literal.x,
1006 ; EG-NEXT:     LSHR T0.W, PV.Y, literal.x,
1007 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
1008 ; EG-NEXT:    8(1.121039e-44), 2(2.802597e-45)
1009 ; EG-NEXT:     BFE_INT * T4.Y, PV.W, 0.0, literal.x,
1010 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1012 ; GFX12-LABEL: constant_sextload_v2i8_to_v2i32:
1013 ; GFX12:       ; %bb.0:
1014 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1015 ; GFX12-NEXT:    v_mov_b32_e32 v2, 0
1016 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1017 ; GFX12-NEXT:    global_load_u16 v0, v2, s[2:3]
1018 ; GFX12-NEXT:    s_wait_loadcnt 0x0
1019 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, v0
1020 ; GFX12-NEXT:    v_bfe_i32 v0, v0, 0, 8
1021 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
1022 ; GFX12-NEXT:    v_bfe_i32 v1, v1, 0, 8
1023 ; GFX12-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1024 ; GFX12-NEXT:    s_nop 0
1025 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1026 ; GFX12-NEXT:    s_endpgm
1027   %load = load <2 x i8>, ptr addrspace(4) %in
1028   %ext = sext <2 x i8> %load to <2 x i32>
1029   store <2 x i32> %ext, ptr addrspace(1) %out
1030   ret void
1033 ; TODO: These should use DST, but for some there are redundant MOVs
1034 define amdgpu_kernel void @constant_zextload_v3i8_to_v3i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1035 ; GFX6-NOHSA-LABEL: constant_zextload_v3i8_to_v3i32:
1036 ; GFX6-NOHSA:       ; %bb.0: ; %entry
1037 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
1038 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1039 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
1040 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1041 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1042 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1043 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s4, 0x80008
1044 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s4, 0x80010
1045 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
1046 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
1047 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:8
1048 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1049 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
1050 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
1051 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
1052 ; GFX6-NOHSA-NEXT:    s_endpgm
1054 ; GFX7-HSA-LABEL: constant_zextload_v3i8_to_v3i32:
1055 ; GFX7-HSA:       ; %bb.0: ; %entry
1056 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
1057 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1058 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1059 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
1060 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s1
1061 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1062 ; GFX7-HSA-NEXT:    s_bfe_u32 s0, s2, 0x80008
1063 ; GFX7-HSA-NEXT:    s_and_b32 s1, s2, 0xff
1064 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
1065 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s1
1066 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s0
1067 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
1068 ; GFX7-HSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1069 ; GFX7-HSA-NEXT:    s_endpgm
1071 ; GFX8-NOHSA-LABEL: constant_zextload_v3i8_to_v3i32:
1072 ; GFX8-NOHSA:       ; %bb.0: ; %entry
1073 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1074 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1075 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1076 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
1077 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s1
1078 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1079 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s2, 0xff
1080 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s2, 0x80010
1081 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s2
1082 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
1083 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s1
1084 ; GFX8-NOHSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1085 ; GFX8-NOHSA-NEXT:    s_endpgm
1087 ; EG-LABEL: constant_zextload_v3i8_to_v3i32:
1088 ; EG:       ; %bb.0: ; %entry
1089 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1090 ; EG-NEXT:    TEX 0 @6
1091 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
1092 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.X, T7.X, 0
1093 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XY, T6.X, 1
1094 ; EG-NEXT:    CF_END
1095 ; EG-NEXT:    Fetch clause starting at 6:
1096 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1097 ; EG-NEXT:    ALU clause starting at 8:
1098 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1099 ; EG-NEXT:    ALU clause starting at 9:
1100 ; EG-NEXT:     MOV * T0.W, literal.x,
1101 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1102 ; EG-NEXT:     BFE_UINT * T5.Y, T4.X, literal.x, PV.W,
1103 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1104 ; EG-NEXT:     AND_INT T5.X, T4.X, literal.x,
1105 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.y,
1106 ; EG-NEXT:    255(3.573311e-43), 2(2.802597e-45)
1107 ; EG-NEXT:     BFE_UINT T4.X, T4.X, literal.x, T0.W,
1108 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1109 ; EG-NEXT:    16(2.242078e-44), 8(1.121039e-44)
1110 ; EG-NEXT:     LSHR * T7.X, PV.W, literal.x,
1111 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1113 ; GFX12-LABEL: constant_zextload_v3i8_to_v3i32:
1114 ; GFX12:       ; %bb.0: ; %entry
1115 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1116 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1117 ; GFX12-NEXT:    s_load_b32 s2, s[2:3], 0x0
1118 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1119 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s2
1120 ; GFX12-NEXT:    s_and_b32 s3, s2, 0xff
1121 ; GFX12-NEXT:    s_bfe_u32 s2, s2, 0x80010
1122 ; GFX12-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_mov_b32 v0, s3
1123 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
1124 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_and_b32 v1, 0xffff, v1
1125 ; GFX12-NEXT:    global_store_b96 v3, v[0:2], s[0:1]
1126 ; GFX12-NEXT:    s_nop 0
1127 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1128 ; GFX12-NEXT:    s_endpgm
1129 entry:
1130   %ld = load <3 x i8>, ptr addrspace(4) %in
1131   %ext = zext <3 x i8> %ld to <3 x i32>
1132   store <3 x i32> %ext, ptr addrspace(1) %out
1133   ret void
1136 ; TODO: These should use DST, but for some there are redundant MOVs
1137 define amdgpu_kernel void @constant_sextload_v3i8_to_v3i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1138 ; GFX6-NOHSA-LABEL: constant_sextload_v3i8_to_v3i32:
1139 ; GFX6-NOHSA:       ; %bb.0: ; %entry
1140 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
1141 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1142 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
1143 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1144 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1145 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1146 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s5, s4, 0x80008
1147 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s6, s4, 0x80010
1148 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
1149 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
1150 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:8
1151 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1152 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
1153 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
1154 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
1155 ; GFX6-NOHSA-NEXT:    s_endpgm
1157 ; GFX7-HSA-LABEL: constant_sextload_v3i8_to_v3i32:
1158 ; GFX7-HSA:       ; %bb.0: ; %entry
1159 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
1160 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1161 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1162 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
1163 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s1
1164 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1165 ; GFX7-HSA-NEXT:    s_bfe_i32 s0, s2, 0x80010
1166 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s2, 0x80008
1167 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s2, s2
1168 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
1169 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
1170 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
1171 ; GFX7-HSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1172 ; GFX7-HSA-NEXT:    s_endpgm
1174 ; GFX8-NOHSA-LABEL: constant_sextload_v3i8_to_v3i32:
1175 ; GFX8-NOHSA:       ; %bb.0: ; %entry
1176 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1177 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1178 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1179 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
1180 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s1
1181 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1182 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s2
1183 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s2, 0x80010
1184 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s1, s2
1185 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v0, 0, 8
1186 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s1
1187 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s0
1188 ; GFX8-NOHSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1189 ; GFX8-NOHSA-NEXT:    s_endpgm
1191 ; EG-LABEL: constant_sextload_v3i8_to_v3i32:
1192 ; EG:       ; %bb.0: ; %entry
1193 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1194 ; EG-NEXT:    TEX 0 @6
1195 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
1196 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.X, T4.X, 0
1197 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XY, T5.X, 1
1198 ; EG-NEXT:    CF_END
1199 ; EG-NEXT:    Fetch clause starting at 6:
1200 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1201 ; EG-NEXT:    ALU clause starting at 8:
1202 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1203 ; EG-NEXT:    ALU clause starting at 9:
1204 ; EG-NEXT:     LSHR T5.X, KC0[2].Y, literal.x,
1205 ; EG-NEXT:     LSHR * T0.W, T4.X, literal.y,
1206 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1207 ; EG-NEXT:     BFE_INT * T6.X, PV.W, 0.0, literal.x,
1208 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1209 ; EG-NEXT:     BFE_INT T7.X, T4.X, 0.0, literal.x,
1210 ; EG-NEXT:     LSHR T0.W, T4.X, literal.x,
1211 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.x,
1212 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1213 ; EG-NEXT:     LSHR T4.X, PS, literal.x,
1214 ; EG-NEXT:     BFE_INT * T7.Y, PV.W, 0.0, literal.y,
1215 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1217 ; GFX12-LABEL: constant_sextload_v3i8_to_v3i32:
1218 ; GFX12:       ; %bb.0: ; %entry
1219 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1220 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1221 ; GFX12-NEXT:    s_load_b32 s2, s[2:3], 0x0
1222 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1223 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s2
1224 ; GFX12-NEXT:    s_sext_i32_i8 s3, s2
1225 ; GFX12-NEXT:    s_bfe_i32 s2, s2, 0x80010
1226 ; GFX12-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_mov_b32 v0, s3
1227 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
1228 ; GFX12-NEXT:    v_bfe_i32 v1, v1, 0, 8
1229 ; GFX12-NEXT:    v_mov_b32_e32 v2, s2
1230 ; GFX12-NEXT:    global_store_b96 v3, v[0:2], s[0:1]
1231 ; GFX12-NEXT:    s_nop 0
1232 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1233 ; GFX12-NEXT:    s_endpgm
1234 entry:
1235   %ld = load <3 x i8>, ptr addrspace(4) %in
1236   %ext = sext <3 x i8> %ld to <3 x i32>
1237   store <3 x i32> %ext, ptr addrspace(1) %out
1238   ret void
1241 ; TODO: These should use DST, but for some there are redundant MOVs
1242 define amdgpu_kernel void @constant_zextload_v4i8_to_v4i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1243 ; GFX6-NOHSA-LABEL: constant_zextload_v4i8_to_v4i32:
1244 ; GFX6-NOHSA:       ; %bb.0:
1245 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
1246 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1247 ; GFX6-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1248 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1249 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1250 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s4, s2, 24
1251 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s2, 0x80008
1252 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s2, 0xff
1253 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s2, 0x80010
1254 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1255 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
1256 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
1257 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
1258 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s4
1259 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1260 ; GFX6-NOHSA-NEXT:    s_endpgm
1262 ; GFX7-HSA-LABEL: constant_zextload_v4i8_to_v4i32:
1263 ; GFX7-HSA:       ; %bb.0:
1264 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
1265 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1266 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1267 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1268 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1269 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1270 ; GFX7-HSA-NEXT:    s_lshr_b32 s0, s2, 24
1271 ; GFX7-HSA-NEXT:    s_bfe_u32 s1, s2, 0x80008
1272 ; GFX7-HSA-NEXT:    s_and_b32 s3, s2, 0xff
1273 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
1274 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
1275 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
1276 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
1277 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
1278 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1279 ; GFX7-HSA-NEXT:    s_endpgm
1281 ; GFX8-NOHSA-LABEL: constant_zextload_v4i8_to_v4i32:
1282 ; GFX8-NOHSA:       ; %bb.0:
1283 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1284 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1285 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1286 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1287 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1288 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1289 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s2, 24
1290 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s2, 0xff
1291 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s2
1292 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
1293 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s1
1294 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s2
1295 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
1296 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1297 ; GFX8-NOHSA-NEXT:    s_endpgm
1299 ; EG-LABEL: constant_zextload_v4i8_to_v4i32:
1300 ; EG:       ; %bb.0:
1301 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1302 ; EG-NEXT:    TEX 0 @6
1303 ; EG-NEXT:    ALU 9, @9, KC0[CB0:0-32], KC1[]
1304 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
1305 ; EG-NEXT:    CF_END
1306 ; EG-NEXT:    PAD
1307 ; EG-NEXT:    Fetch clause starting at 6:
1308 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1309 ; EG-NEXT:    ALU clause starting at 8:
1310 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1311 ; EG-NEXT:    ALU clause starting at 9:
1312 ; EG-NEXT:     MOV * T0.W, literal.x,
1313 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1314 ; EG-NEXT:     BFE_UINT * T4.Z, T4.X, literal.x, PV.W,
1315 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1316 ; EG-NEXT:     BFE_UINT T4.Y, T4.X, literal.x, T0.W,
1317 ; EG-NEXT:     LSHR * T4.W, T4.X, literal.y,
1318 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
1319 ; EG-NEXT:     AND_INT T4.X, T4.X, literal.x,
1320 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
1321 ; EG-NEXT:    255(3.573311e-43), 2(2.802597e-45)
1323 ; GFX12-LABEL: constant_zextload_v4i8_to_v4i32:
1324 ; GFX12:       ; %bb.0:
1325 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1326 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1327 ; GFX12-NEXT:    s_load_b32 s2, s[2:3], 0x0
1328 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1329 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s2
1330 ; GFX12-NEXT:    s_lshr_b32 s3, s2, 24
1331 ; GFX12-NEXT:    s_and_b32 s4, s2, 0xff
1332 ; GFX12-NEXT:    s_bfe_u32 s2, s2, 0x80010
1333 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1334 ; GFX12-NEXT:    v_dual_mov_b32 v4, 0 :: v_dual_and_b32 v1, 0xffff, v1
1335 ; GFX12-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v3, s3
1336 ; GFX12-NEXT:    v_mov_b32_e32 v2, s2
1337 ; GFX12-NEXT:    global_store_b128 v4, v[0:3], s[0:1]
1338 ; GFX12-NEXT:    s_nop 0
1339 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1340 ; GFX12-NEXT:    s_endpgm
1341   %load = load <4 x i8>, ptr addrspace(4) %in
1342   %ext = zext <4 x i8> %load to <4 x i32>
1343   store <4 x i32> %ext, ptr addrspace(1) %out
1344   ret void
1347 ; TODO: These should use DST, but for some there are redundant MOVs
1348 define amdgpu_kernel void @constant_sextload_v4i8_to_v4i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1349 ; GFX6-NOHSA-LABEL: constant_sextload_v4i8_to_v4i32:
1350 ; GFX6-NOHSA:       ; %bb.0:
1351 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
1352 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1353 ; GFX6-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1354 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1355 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1356 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s4, s2, 24
1357 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s5, s2, 0x80010
1358 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s6, s2, 0x80008
1359 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s2
1360 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1361 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
1362 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s6
1363 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
1364 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s4
1365 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1366 ; GFX6-NOHSA-NEXT:    s_endpgm
1368 ; GFX7-HSA-LABEL: constant_sextload_v4i8_to_v4i32:
1369 ; GFX7-HSA:       ; %bb.0:
1370 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
1371 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1372 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1373 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1374 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1375 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1376 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s2, 24
1377 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s2, 0x80010
1378 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s2, 0x80008
1379 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s2, s2
1380 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
1381 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
1382 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s1
1383 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
1384 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1385 ; GFX7-HSA-NEXT:    s_endpgm
1387 ; GFX8-NOHSA-LABEL: constant_sextload_v4i8_to_v4i32:
1388 ; GFX8-NOHSA:       ; %bb.0:
1389 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1390 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1391 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1392 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1393 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1394 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1395 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s2
1396 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s0, s2, 24
1397 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s2, 0x80010
1398 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
1399 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v0, 0, 8
1400 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
1401 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s1
1402 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
1403 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1404 ; GFX8-NOHSA-NEXT:    s_endpgm
1406 ; EG-LABEL: constant_sextload_v4i8_to_v4i32:
1407 ; EG:       ; %bb.0:
1408 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1409 ; EG-NEXT:    TEX 0 @6
1410 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
1411 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T4.X, 1
1412 ; EG-NEXT:    CF_END
1413 ; EG-NEXT:    PAD
1414 ; EG-NEXT:    Fetch clause starting at 6:
1415 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1416 ; EG-NEXT:    ALU clause starting at 8:
1417 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1418 ; EG-NEXT:    ALU clause starting at 9:
1419 ; EG-NEXT:     BFE_INT T5.X, T4.X, 0.0, literal.x,
1420 ; EG-NEXT:     LSHR * T0.W, T4.X, literal.y,
1421 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
1422 ; EG-NEXT:     BFE_INT T5.W, PV.W, 0.0, literal.x,
1423 ; EG-NEXT:     LSHR * T0.W, T4.X, literal.y,
1424 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
1425 ; EG-NEXT:     BFE_INT T5.Z, PS, 0.0, literal.x,
1426 ; EG-NEXT:     LSHR * T0.W, T4.X, literal.x,
1427 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1428 ; EG-NEXT:     LSHR T4.X, KC0[2].Y, literal.x,
1429 ; EG-NEXT:     BFE_INT * T5.Y, PV.W, 0.0, literal.y,
1430 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1432 ; GFX12-LABEL: constant_sextload_v4i8_to_v4i32:
1433 ; GFX12:       ; %bb.0:
1434 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1435 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1436 ; GFX12-NEXT:    s_load_b32 s2, s[2:3], 0x0
1437 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1438 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s2
1439 ; GFX12-NEXT:    s_ashr_i32 s3, s2, 24
1440 ; GFX12-NEXT:    s_sext_i32_i8 s4, s2
1441 ; GFX12-NEXT:    s_bfe_i32 s2, s2, 0x80010
1442 ; GFX12-NEXT:    v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, s3
1443 ; GFX12-NEXT:    v_mov_b32_e32 v0, s4
1444 ; GFX12-NEXT:    v_mov_b32_e32 v2, s2
1445 ; GFX12-NEXT:    v_bfe_i32 v1, v1, 0, 8
1446 ; GFX12-NEXT:    global_store_b128 v4, v[0:3], s[0:1]
1447 ; GFX12-NEXT:    s_nop 0
1448 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1449 ; GFX12-NEXT:    s_endpgm
1450   %load = load <4 x i8>, ptr addrspace(4) %in
1451   %ext = sext <4 x i8> %load to <4 x i32>
1452   store <4 x i32> %ext, ptr addrspace(1) %out
1453   ret void
1456 ; TODO: These should use DST, but for some there are redundant MOVs
1457 define amdgpu_kernel void @constant_zextload_v8i8_to_v8i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1458 ; GFX6-NOHSA-LABEL: constant_zextload_v8i8_to_v8i32:
1459 ; GFX6-NOHSA:       ; %bb.0:
1460 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
1461 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1462 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1463 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1464 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1465 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1466 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s4, 24
1467 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s4, 0x80008
1468 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s5, 24
1469 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s9, s5, 0x80008
1470 ; GFX6-NOHSA-NEXT:    s_and_b32 s10, s4, 0xff
1471 ; GFX6-NOHSA-NEXT:    s_and_b32 s11, s5, 0xff
1472 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
1473 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
1474 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
1475 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
1476 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
1477 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
1478 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1479 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1480 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
1481 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s7
1482 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
1483 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s6
1484 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1485 ; GFX6-NOHSA-NEXT:    s_endpgm
1487 ; GFX7-HSA-LABEL: constant_zextload_v8i8_to_v8i32:
1488 ; GFX7-HSA:       ; %bb.0:
1489 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
1490 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1491 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1492 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1493 ; GFX7-HSA-NEXT:    s_lshr_b32 s4, s2, 24
1494 ; GFX7-HSA-NEXT:    s_bfe_u32 s5, s2, 0x80008
1495 ; GFX7-HSA-NEXT:    s_lshr_b32 s6, s3, 24
1496 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s3, 0x80008
1497 ; GFX7-HSA-NEXT:    s_and_b32 s8, s2, 0xff
1498 ; GFX7-HSA-NEXT:    s_bfe_u32 s9, s2, 0x80010
1499 ; GFX7-HSA-NEXT:    s_and_b32 s2, s3, 0xff
1500 ; GFX7-HSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
1501 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
1502 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
1503 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
1504 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1505 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1506 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s7
1507 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s6
1508 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1509 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1510 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1511 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
1512 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s5
1513 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s9
1514 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s4
1515 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1516 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1517 ; GFX7-HSA-NEXT:    s_endpgm
1519 ; GFX8-NOHSA-LABEL: constant_zextload_v8i8_to_v8i32:
1520 ; GFX8-NOHSA:       ; %bb.0:
1521 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1522 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1523 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1524 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s1
1525 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s0
1526 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1527 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s4, s3, 24
1528 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s5, s2, 24
1529 ; GFX8-NOHSA-NEXT:    s_and_b32 s6, s3, 0xff
1530 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s3
1531 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
1532 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s2
1533 ; GFX8-NOHSA-NEXT:    s_and_b32 s7, s2, 0xff
1534 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
1535 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s0, 16
1536 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
1537 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
1538 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s5
1539 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s1, 0
1540 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
1541 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
1542 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1543 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s3
1544 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s4
1545 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1546 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1547 ; GFX8-NOHSA-NEXT:    s_endpgm
1549 ; EG-LABEL: constant_zextload_v8i8_to_v8i32:
1550 ; EG:       ; %bb.0:
1551 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1552 ; EG-NEXT:    TEX 0 @6
1553 ; EG-NEXT:    ALU 20, @9, KC0[CB0:0-32], KC1[]
1554 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T8.X, 0
1555 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T5.X, 1
1556 ; EG-NEXT:    CF_END
1557 ; EG-NEXT:    Fetch clause starting at 6:
1558 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1559 ; EG-NEXT:    ALU clause starting at 8:
1560 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
1561 ; EG-NEXT:    ALU clause starting at 9:
1562 ; EG-NEXT:     MOV * T0.W, literal.x,
1563 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1564 ; EG-NEXT:     BFE_UINT * T6.Z, T5.X, literal.x, PV.W,
1565 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1566 ; EG-NEXT:     BFE_UINT T6.Y, T5.X, literal.x, T0.W,
1567 ; EG-NEXT:     BFE_UINT T7.Z, T5.Y, literal.y, T0.W,
1568 ; EG-NEXT:     LSHR * T6.W, T5.X, literal.z,
1569 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
1570 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
1571 ; EG-NEXT:     AND_INT T6.X, T5.X, literal.x,
1572 ; EG-NEXT:     BFE_UINT T7.Y, T5.Y, literal.y, T0.W,
1573 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.z,
1574 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
1575 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1576 ; EG-NEXT:     LSHR * T7.W, T5.Y, literal.x,
1577 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
1578 ; EG-NEXT:     AND_INT T7.X, T5.Y, literal.x,
1579 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1580 ; EG-NEXT:    255(3.573311e-43), 16(2.242078e-44)
1581 ; EG-NEXT:     LSHR * T8.X, PV.W, literal.x,
1582 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1584 ; GFX12-LABEL: constant_zextload_v8i8_to_v8i32:
1585 ; GFX12:       ; %bb.0:
1586 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1587 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1588 ; GFX12-NEXT:    s_load_b64 s[2:3], s[2:3], 0x0
1589 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1590 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s2
1591 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s3
1592 ; GFX12-NEXT:    s_lshr_b32 s5, s2, 24
1593 ; GFX12-NEXT:    s_and_b32 s7, s2, 0xff
1594 ; GFX12-NEXT:    s_bfe_u32 s2, s2, 0x80010
1595 ; GFX12-NEXT:    s_lshr_b32 s4, s3, 24
1596 ; GFX12-NEXT:    s_and_b32 s6, s3, 0xff
1597 ; GFX12-NEXT:    s_bfe_u32 s3, s3, 0x80010
1598 ; GFX12-NEXT:    v_dual_mov_b32 v8, 0 :: v_dual_mov_b32 v3, s5
1599 ; GFX12-NEXT:    v_dual_mov_b32 v0, s7 :: v_dual_mov_b32 v7, s4
1600 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_and_b32 v1, 0xffff, v1
1601 ; GFX12-NEXT:    v_dual_mov_b32 v4, s6 :: v_dual_and_b32 v5, 0xffff, v5
1602 ; GFX12-NEXT:    v_mov_b32_e32 v6, s3
1603 ; GFX12-NEXT:    s_clause 0x1
1604 ; GFX12-NEXT:    global_store_b128 v8, v[0:3], s[0:1]
1605 ; GFX12-NEXT:    global_store_b128 v8, v[4:7], s[0:1] offset:16
1606 ; GFX12-NEXT:    s_nop 0
1607 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1608 ; GFX12-NEXT:    s_endpgm
1609   %load = load <8 x i8>, ptr addrspace(4) %in
1610   %ext = zext <8 x i8> %load to <8 x i32>
1611   store <8 x i32> %ext, ptr addrspace(1) %out
1612   ret void
1615 ; TODO: These should use DST, but for some there are redundant MOVs
1616 define amdgpu_kernel void @constant_sextload_v8i8_to_v8i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1617 ; GFX6-NOHSA-LABEL: constant_sextload_v8i8_to_v8i32:
1618 ; GFX6-NOHSA:       ; %bb.0:
1619 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
1620 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1621 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1622 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1623 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1624 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1625 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s6, s4, 24
1626 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s7, s4, 0x80010
1627 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s8, s4, 0x80008
1628 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s9, s5, 24
1629 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s10, s5, 0x80010
1630 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s11, s5, 0x80008
1631 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
1632 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
1633 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
1634 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
1635 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
1636 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s9
1637 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1638 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1639 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
1640 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s8
1641 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
1642 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s6
1643 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1644 ; GFX6-NOHSA-NEXT:    s_endpgm
1646 ; GFX7-HSA-LABEL: constant_sextload_v8i8_to_v8i32:
1647 ; GFX7-HSA:       ; %bb.0:
1648 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
1649 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1650 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1651 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1652 ; GFX7-HSA-NEXT:    s_ashr_i32 s4, s2, 24
1653 ; GFX7-HSA-NEXT:    s_bfe_i32 s5, s2, 0x80010
1654 ; GFX7-HSA-NEXT:    s_bfe_i32 s6, s2, 0x80008
1655 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s2
1656 ; GFX7-HSA-NEXT:    s_ashr_i32 s2, s3, 24
1657 ; GFX7-HSA-NEXT:    s_bfe_i32 s8, s3, 0x80010
1658 ; GFX7-HSA-NEXT:    s_bfe_i32 s9, s3, 0x80008
1659 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s3, s3
1660 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
1661 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
1662 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
1663 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1664 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1665 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s9
1666 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s8
1667 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1668 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1669 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1670 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
1671 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s6
1672 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
1673 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s4
1674 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1675 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1676 ; GFX7-HSA-NEXT:    s_endpgm
1678 ; GFX8-NOHSA-LABEL: constant_sextload_v8i8_to_v8i32:
1679 ; GFX8-NOHSA:       ; %bb.0:
1680 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1681 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1682 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1683 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s1
1684 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s0
1685 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1686 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s4, s3, 24
1687 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s5, s3, 0x80010
1688 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s6, s2, 24
1689 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s7, s2, 0x80010
1690 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s2
1691 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
1692 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s0, 16
1693 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v3, v0, 0, 8
1694 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s2
1695 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s7
1696 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s6
1697 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s1, 0
1698 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s3
1699 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s3, s3
1700 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
1701 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v1, 0, 8
1702 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1703 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s3
1704 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
1705 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s4
1706 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1707 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1708 ; GFX8-NOHSA-NEXT:    s_endpgm
1710 ; EG-LABEL: constant_sextload_v8i8_to_v8i32:
1711 ; EG:       ; %bb.0:
1712 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1713 ; EG-NEXT:    TEX 0 @6
1714 ; EG-NEXT:    ALU 23, @9, KC0[CB0:0-32], KC1[]
1715 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T8.X, 0
1716 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T5.X, 1
1717 ; EG-NEXT:    CF_END
1718 ; EG-NEXT:    Fetch clause starting at 6:
1719 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1720 ; EG-NEXT:    ALU clause starting at 8:
1721 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
1722 ; EG-NEXT:    ALU clause starting at 9:
1723 ; EG-NEXT:     BFE_INT T6.X, T5.X, 0.0, literal.x,
1724 ; EG-NEXT:     LSHR * T0.W, T5.X, literal.y,
1725 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
1726 ; EG-NEXT:     BFE_INT T7.X, T5.Y, 0.0, literal.x,
1727 ; EG-NEXT:     LSHR T0.Z, T5.Y, literal.y,
1728 ; EG-NEXT:     BFE_INT T6.W, PV.W, 0.0, literal.x,
1729 ; EG-NEXT:     LSHR * T0.W, T5.X, literal.z,
1730 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
1731 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1732 ; EG-NEXT:     LSHR T0.Y, T5.Y, literal.x,
1733 ; EG-NEXT:     BFE_INT T6.Z, PS, 0.0, literal.y,
1734 ; EG-NEXT:     BFE_INT T7.W, PV.Z, 0.0, literal.y,
1735 ; EG-NEXT:     LSHR * T0.W, T5.X, literal.y,
1736 ; EG-NEXT:    16(2.242078e-44), 8(1.121039e-44)
1737 ; EG-NEXT:     LSHR T5.X, KC0[2].Y, literal.x,
1738 ; EG-NEXT:     BFE_INT T6.Y, PS, 0.0, literal.y,
1739 ; EG-NEXT:     BFE_INT T7.Z, PV.Y, 0.0, literal.y,
1740 ; EG-NEXT:     LSHR T0.W, T5.Y, literal.y,
1741 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
1742 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1743 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1744 ; EG-NEXT:     LSHR T8.X, PS, literal.x,
1745 ; EG-NEXT:     BFE_INT * T7.Y, PV.W, 0.0, literal.y,
1746 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1748 ; GFX12-LABEL: constant_sextload_v8i8_to_v8i32:
1749 ; GFX12:       ; %bb.0:
1750 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1751 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1752 ; GFX12-NEXT:    s_load_b64 s[2:3], s[2:3], 0x0
1753 ; GFX12-NEXT:    s_wait_kmcnt 0x0
1754 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s2
1755 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s3
1756 ; GFX12-NEXT:    s_ashr_i32 s6, s2, 24
1757 ; GFX12-NEXT:    s_sext_i32_i8 s7, s2
1758 ; GFX12-NEXT:    s_bfe_i32 s2, s2, 0x80010
1759 ; GFX12-NEXT:    s_ashr_i32 s4, s3, 24
1760 ; GFX12-NEXT:    s_bfe_i32 s5, s3, 0x80010
1761 ; GFX12-NEXT:    s_sext_i32_i8 s3, s3
1762 ; GFX12-NEXT:    v_dual_mov_b32 v8, 0 :: v_dual_mov_b32 v3, s6
1763 ; GFX12-NEXT:    v_dual_mov_b32 v0, s7 :: v_dual_mov_b32 v7, s4
1764 ; GFX12-NEXT:    v_mov_b32_e32 v2, s2
1765 ; GFX12-NEXT:    v_bfe_i32 v1, v1, 0, 8
1766 ; GFX12-NEXT:    v_mov_b32_e32 v4, s3
1767 ; GFX12-NEXT:    v_mov_b32_e32 v6, s5
1768 ; GFX12-NEXT:    v_bfe_i32 v5, v5, 0, 8
1769 ; GFX12-NEXT:    s_clause 0x1
1770 ; GFX12-NEXT:    global_store_b128 v8, v[0:3], s[0:1]
1771 ; GFX12-NEXT:    global_store_b128 v8, v[4:7], s[0:1] offset:16
1772 ; GFX12-NEXT:    s_nop 0
1773 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1774 ; GFX12-NEXT:    s_endpgm
1775   %load = load <8 x i8>, ptr addrspace(4) %in
1776   %ext = sext <8 x i8> %load to <8 x i32>
1777   store <8 x i32> %ext, ptr addrspace(1) %out
1778   ret void
1781 ; TODO: These should use DST, but for some there are redundant MOVs
1782 define amdgpu_kernel void @constant_zextload_v16i8_to_v16i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1783 ; GFX6-NOHSA-LABEL: constant_zextload_v16i8_to_v16i32:
1784 ; GFX6-NOHSA:       ; %bb.0:
1785 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
1786 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1787 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1788 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1789 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1790 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1791 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s4, 24
1792 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s9, s4, 0x80008
1793 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s10, s5, 24
1794 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s11, s5, 0x80008
1795 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s12, s6, 24
1796 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s13, s6, 0x80008
1797 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s7, 24
1798 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s15, s7, 0x80008
1799 ; GFX6-NOHSA-NEXT:    s_and_b32 s16, s4, 0xff
1800 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
1801 ; GFX6-NOHSA-NEXT:    s_and_b32 s17, s5, 0xff
1802 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
1803 ; GFX6-NOHSA-NEXT:    s_and_b32 s18, s6, 0xff
1804 ; GFX6-NOHSA-NEXT:    s_and_b32 s19, s7, 0xff
1805 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
1806 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
1807 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s19
1808 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s15
1809 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
1810 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s14
1811 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
1812 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1813 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s18
1814 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s13
1815 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
1816 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s12
1817 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
1818 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1819 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s17
1820 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
1821 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
1822 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s10
1823 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1824 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1825 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s16
1826 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
1827 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
1828 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
1829 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1830 ; GFX6-NOHSA-NEXT:    s_endpgm
1832 ; GFX7-HSA-LABEL: constant_zextload_v16i8_to_v16i32:
1833 ; GFX7-HSA:       ; %bb.0:
1834 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
1835 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1836 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1837 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1838 ; GFX7-HSA-NEXT:    s_lshr_b32 s8, s4, 24
1839 ; GFX7-HSA-NEXT:    s_bfe_u32 s9, s4, 0x80008
1840 ; GFX7-HSA-NEXT:    s_lshr_b32 s10, s5, 24
1841 ; GFX7-HSA-NEXT:    s_bfe_u32 s11, s5, 0x80008
1842 ; GFX7-HSA-NEXT:    s_lshr_b32 s12, s6, 24
1843 ; GFX7-HSA-NEXT:    s_bfe_u32 s13, s6, 0x80008
1844 ; GFX7-HSA-NEXT:    s_lshr_b32 s2, s7, 24
1845 ; GFX7-HSA-NEXT:    s_bfe_u32 s3, s7, 0x80008
1846 ; GFX7-HSA-NEXT:    s_and_b32 s14, s4, 0xff
1847 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
1848 ; GFX7-HSA-NEXT:    s_and_b32 s15, s5, 0xff
1849 ; GFX7-HSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
1850 ; GFX7-HSA-NEXT:    s_and_b32 s16, s6, 0xff
1851 ; GFX7-HSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
1852 ; GFX7-HSA-NEXT:    s_and_b32 s17, s7, 0xff
1853 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
1854 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
1855 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
1856 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
1857 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1858 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1859 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1860 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
1861 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s17
1862 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s7
1863 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1864 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1865 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1866 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1867 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
1868 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s16
1869 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s13
1870 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
1871 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s12
1872 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1873 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1874 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1875 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s15
1876 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s11
1877 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
1878 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s10
1879 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1880 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1881 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1882 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s14
1883 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s9
1884 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
1885 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s8
1886 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1887 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1888 ; GFX7-HSA-NEXT:    s_endpgm
1890 ; GFX8-NOHSA-LABEL: constant_zextload_v16i8_to_v16i32:
1891 ; GFX8-NOHSA:       ; %bb.0:
1892 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1893 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1894 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1895 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1896 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s8, s4, 24
1897 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s9, s5, 24
1898 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s6, 24
1899 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s2, s7, 24
1900 ; GFX8-NOHSA-NEXT:    s_and_b32 s11, s4, 0xff
1901 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s4
1902 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
1903 ; GFX8-NOHSA-NEXT:    s_and_b32 s12, s5, 0xff
1904 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s5
1905 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
1906 ; GFX8-NOHSA-NEXT:    s_and_b32 s13, s6, 0xff
1907 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s6
1908 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
1909 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, s7, 0xff
1910 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s7
1911 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
1912 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s2
1913 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 48
1914 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s3
1915 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
1916 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s3
1917 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s2
1918 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 32
1919 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s7
1920 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
1921 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
1922 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s13
1923 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
1924 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s2
1925 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
1926 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s6
1927 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s10
1928 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
1929 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
1930 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s12
1931 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s3
1932 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s5
1933 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
1934 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
1935 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
1936 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
1937 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1938 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
1939 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
1940 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1941 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1942 ; GFX8-NOHSA-NEXT:    s_endpgm
1944 ; EG-LABEL: constant_zextload_v16i8_to_v16i32:
1945 ; EG:       ; %bb.0:
1946 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
1947 ; EG-NEXT:    TEX 0 @8
1948 ; EG-NEXT:    ALU 39, @11, KC0[CB0:0-32], KC1[]
1949 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T14.X, 0
1950 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T13.X, 0
1951 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T11.X, 0
1952 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1
1953 ; EG-NEXT:    CF_END
1954 ; EG-NEXT:    Fetch clause starting at 8:
1955 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
1956 ; EG-NEXT:    ALU clause starting at 10:
1957 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
1958 ; EG-NEXT:    ALU clause starting at 11:
1959 ; EG-NEXT:     MOV * T0.W, literal.x,
1960 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1961 ; EG-NEXT:     BFE_UINT * T8.Z, T7.X, literal.x, PV.W,
1962 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1963 ; EG-NEXT:     BFE_UINT T8.Y, T7.X, literal.x, T0.W,
1964 ; EG-NEXT:     BFE_UINT T9.Z, T7.Y, literal.y, T0.W,
1965 ; EG-NEXT:     LSHR * T8.W, T7.X, literal.z,
1966 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
1967 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
1968 ; EG-NEXT:     AND_INT T8.X, T7.X, literal.x,
1969 ; EG-NEXT:     BFE_UINT T9.Y, T7.Y, literal.y, T0.W,
1970 ; EG-NEXT:     LSHR * T7.X, KC0[2].Y, literal.z,
1971 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
1972 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1973 ; EG-NEXT:     BFE_UINT T10.Z, T7.Z, literal.x, T0.W,
1974 ; EG-NEXT:     LSHR * T9.W, T7.Y, literal.y,
1975 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
1976 ; EG-NEXT:     AND_INT T9.X, T7.Y, literal.x,
1977 ; EG-NEXT:     BFE_UINT T10.Y, T7.Z, literal.y, T0.W,
1978 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
1979 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
1980 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1981 ; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
1982 ; EG-NEXT:     BFE_UINT T12.Z, T7.W, literal.y, T0.W,
1983 ; EG-NEXT:     LSHR T10.W, T7.Z, literal.z,
1984 ; EG-NEXT:     AND_INT * T10.X, T7.Z, literal.w,
1985 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1986 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
1987 ; EG-NEXT:     BFE_UINT T12.Y, T7.W, literal.x, T0.W,
1988 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1989 ; EG-NEXT:    8(1.121039e-44), 32(4.484155e-44)
1990 ; EG-NEXT:     LSHR T13.X, PV.W, literal.x,
1991 ; EG-NEXT:     LSHR T12.W, T7.W, literal.y,
1992 ; EG-NEXT:     AND_INT * T12.X, T7.W, literal.z,
1993 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
1994 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
1995 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
1996 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
1997 ; EG-NEXT:     LSHR * T14.X, PV.W, literal.x,
1998 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2000 ; GFX12-LABEL: constant_zextload_v16i8_to_v16i32:
2001 ; GFX12:       ; %bb.0:
2002 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
2003 ; GFX12-NEXT:    s_wait_kmcnt 0x0
2004 ; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x0
2005 ; GFX12-NEXT:    s_wait_kmcnt 0x0
2006 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s7
2007 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s6
2008 ; GFX12-NEXT:    v_lshrrev_b16 v9, 8, s5
2009 ; GFX12-NEXT:    s_lshr_b32 s8, s6, 24
2010 ; GFX12-NEXT:    s_lshr_b32 s9, s7, 24
2011 ; GFX12-NEXT:    v_lshrrev_b16 v13, 8, s4
2012 ; GFX12-NEXT:    s_and_b32 s12, s6, 0xff
2013 ; GFX12-NEXT:    s_bfe_u32 s6, s6, 0x80010
2014 ; GFX12-NEXT:    s_and_b32 s13, s7, 0xff
2015 ; GFX12-NEXT:    s_bfe_u32 s7, s7, 0x80010
2016 ; GFX12-NEXT:    s_and_b32 s11, s5, 0xff
2017 ; GFX12-NEXT:    v_dual_mov_b32 v16, 0 :: v_dual_mov_b32 v3, s9
2018 ; GFX12-NEXT:    s_lshr_b32 s3, s5, 24
2019 ; GFX12-NEXT:    s_bfe_u32 s5, s5, 0x80010
2020 ; GFX12-NEXT:    v_dual_mov_b32 v0, s13 :: v_dual_mov_b32 v7, s8
2021 ; GFX12-NEXT:    v_dual_mov_b32 v2, s7 :: v_dual_mov_b32 v11, s3
2022 ; GFX12-NEXT:    v_dual_mov_b32 v6, s6 :: v_dual_and_b32 v1, 0xffff, v1
2023 ; GFX12-NEXT:    s_lshr_b32 s2, s4, 24
2024 ; GFX12-NEXT:    s_and_b32 s10, s4, 0xff
2025 ; GFX12-NEXT:    s_bfe_u32 s4, s4, 0x80010
2026 ; GFX12-NEXT:    v_dual_mov_b32 v4, s12 :: v_dual_mov_b32 v15, s2
2027 ; GFX12-NEXT:    v_dual_mov_b32 v8, s11 :: v_dual_and_b32 v5, 0xffff, v5
2028 ; GFX12-NEXT:    v_dual_mov_b32 v10, s5 :: v_dual_and_b32 v9, 0xffff, v9
2029 ; GFX12-NEXT:    v_dual_mov_b32 v12, s10 :: v_dual_and_b32 v13, 0xffff, v13
2030 ; GFX12-NEXT:    v_mov_b32_e32 v14, s4
2031 ; GFX12-NEXT:    s_clause 0x3
2032 ; GFX12-NEXT:    global_store_b128 v16, v[0:3], s[0:1] offset:48
2033 ; GFX12-NEXT:    global_store_b128 v16, v[4:7], s[0:1] offset:32
2034 ; GFX12-NEXT:    global_store_b128 v16, v[8:11], s[0:1] offset:16
2035 ; GFX12-NEXT:    global_store_b128 v16, v[12:15], s[0:1]
2036 ; GFX12-NEXT:    s_nop 0
2037 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2038 ; GFX12-NEXT:    s_endpgm
2039   %load = load <16 x i8>, ptr addrspace(4) %in
2040   %ext = zext <16 x i8> %load to <16 x i32>
2041   store <16 x i32> %ext, ptr addrspace(1) %out
2042   ret void
2045 ; TODO: These should use DST, but for some there are redundant MOVs
2046 define amdgpu_kernel void @constant_sextload_v16i8_to_v16i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
2047 ; GFX6-NOHSA-LABEL: constant_sextload_v16i8_to_v16i32:
2048 ; GFX6-NOHSA:       ; %bb.0:
2049 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
2050 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2051 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
2052 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
2053 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
2054 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2055 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s8, s4, 24
2056 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s9, s4, 0x80010
2057 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s10, s4, 0x80008
2058 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
2059 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s11, s5, 24
2060 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s12, s5, 0x80010
2061 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s13, s5, 0x80008
2062 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
2063 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s14, s6, 24
2064 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s15, s6, 0x80010
2065 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s16, s6, 0x80008
2066 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s17, s7, 24
2067 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s18, s7, 0x80010
2068 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s19, s7, 0x80008
2069 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
2070 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
2071 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
2072 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s19
2073 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s18
2074 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s17
2075 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
2076 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2077 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
2078 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s16
2079 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
2080 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s14
2081 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2082 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2083 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
2084 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s13
2085 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s12
2086 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s11
2087 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
2088 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2089 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
2090 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s10
2091 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
2092 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
2093 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
2094 ; GFX6-NOHSA-NEXT:    s_endpgm
2096 ; GFX7-HSA-LABEL: constant_sextload_v16i8_to_v16i32:
2097 ; GFX7-HSA:       ; %bb.0:
2098 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
2099 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2100 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
2101 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2102 ; GFX7-HSA-NEXT:    s_ashr_i32 s8, s4, 24
2103 ; GFX7-HSA-NEXT:    s_bfe_i32 s9, s4, 0x80010
2104 ; GFX7-HSA-NEXT:    s_bfe_i32 s10, s4, 0x80008
2105 ; GFX7-HSA-NEXT:    s_ashr_i32 s11, s5, 24
2106 ; GFX7-HSA-NEXT:    s_bfe_i32 s12, s5, 0x80010
2107 ; GFX7-HSA-NEXT:    s_bfe_i32 s13, s5, 0x80008
2108 ; GFX7-HSA-NEXT:    s_ashr_i32 s14, s6, 24
2109 ; GFX7-HSA-NEXT:    s_bfe_i32 s15, s6, 0x80010
2110 ; GFX7-HSA-NEXT:    s_bfe_i32 s16, s6, 0x80008
2111 ; GFX7-HSA-NEXT:    s_ashr_i32 s2, s7, 24
2112 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s7, 0x80010
2113 ; GFX7-HSA-NEXT:    s_bfe_i32 s17, s7, 0x80008
2114 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
2115 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
2116 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
2117 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2118 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2119 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s7
2120 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2121 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
2122 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
2123 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
2124 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2125 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2126 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2127 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s6, s6
2128 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2129 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
2130 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
2131 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s16
2132 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s15
2133 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s14
2134 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2135 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s5, s5
2136 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2137 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2138 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
2139 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s13
2140 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s12
2141 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s11
2142 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2143 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s4, s4
2144 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2145 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
2146 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
2147 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s10
2148 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s9
2149 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s8
2150 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
2151 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2152 ; GFX7-HSA-NEXT:    s_endpgm
2154 ; GFX8-NOHSA-LABEL: constant_sextload_v16i8_to_v16i32:
2155 ; GFX8-NOHSA:       ; %bb.0:
2156 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
2157 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2158 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
2159 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2160 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s8, s4, 24
2161 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s9, s4, 0x80010
2162 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s10, s5, 24
2163 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s11, s5, 0x80010
2164 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s12, s6, 24
2165 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s13, s6, 0x80010
2166 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s2, s7, 24
2167 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s7, 0x80010
2168 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s2
2169 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 48
2170 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s3
2171 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
2172 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s3
2173 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s7
2174 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
2175 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s2
2176 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 32
2177 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v7, v0, 0, 8
2178 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s7
2179 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
2180 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
2181 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s6
2182 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
2183 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
2184 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s2
2185 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
2186 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v5, v2, 0, 8
2187 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s6
2188 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s13
2189 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s12
2190 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
2191 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s5
2192 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
2193 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
2194 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v3, v3, 0, 8
2195 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s3
2196 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
2197 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s11
2198 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s10
2199 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
2200 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s4
2201 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
2202 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
2203 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v1, 0, 8
2204 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
2205 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
2206 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
2207 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
2208 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
2209 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2210 ; GFX8-NOHSA-NEXT:    s_endpgm
2212 ; EG-LABEL: constant_sextload_v16i8_to_v16i32:
2213 ; EG:       ; %bb.0:
2214 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
2215 ; EG-NEXT:    TEX 0 @8
2216 ; EG-NEXT:    ALU 47, @11, KC0[CB0:0-32], KC1[]
2217 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T14.X, 0
2218 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T13.X, 0
2219 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T7.X, 0
2220 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T8.X, 1
2221 ; EG-NEXT:    CF_END
2222 ; EG-NEXT:    Fetch clause starting at 8:
2223 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
2224 ; EG-NEXT:    ALU clause starting at 10:
2225 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
2226 ; EG-NEXT:    ALU clause starting at 11:
2227 ; EG-NEXT:     LSHR T8.X, KC0[2].Y, literal.x,
2228 ; EG-NEXT:     LSHR T0.W, T7.W, literal.y,
2229 ; EG-NEXT:     LSHR * T1.W, T7.Z, literal.z,
2230 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2231 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
2232 ; EG-NEXT:     BFE_INT T9.X, T7.X, 0.0, literal.x,
2233 ; EG-NEXT:     LSHR T0.Y, T7.W, literal.y,
2234 ; EG-NEXT:     LSHR T0.Z, T7.Z, literal.z,
2235 ; EG-NEXT:     LSHR T2.W, T7.Y, literal.x,
2236 ; EG-NEXT:     LSHR * T3.W, T7.X, literal.y,
2237 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
2238 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2239 ; EG-NEXT:     BFE_INT T10.X, T7.Y, 0.0, literal.x,
2240 ; EG-NEXT:     LSHR T1.Y, T7.Z, literal.y,
2241 ; EG-NEXT:     LSHR T1.Z, T7.Y, literal.y,
2242 ; EG-NEXT:     BFE_INT T9.W, PS, 0.0, literal.x,
2243 ; EG-NEXT:     LSHR * T3.W, T7.X, literal.z,
2244 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
2245 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2246 ; EG-NEXT:     BFE_INT T11.X, T7.Z, 0.0, literal.x,
2247 ; EG-NEXT:     LSHR T2.Y, T7.Y, literal.y,
2248 ; EG-NEXT:     BFE_INT T9.Z, PS, 0.0, literal.x,
2249 ; EG-NEXT:     BFE_INT T10.W, PV.Z, 0.0, literal.x,
2250 ; EG-NEXT:     LSHR * T3.W, T7.X, literal.x,
2251 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
2252 ; EG-NEXT:     BFE_INT T12.X, T7.W, 0.0, literal.x,
2253 ; EG-NEXT:     BFE_INT T9.Y, PS, 0.0, literal.x,
2254 ; EG-NEXT:     BFE_INT T10.Z, PV.Y, 0.0, literal.x,
2255 ; EG-NEXT:     BFE_INT T11.W, T1.Y, 0.0, literal.x,
2256 ; EG-NEXT:     ADD_INT * T3.W, KC0[2].Y, literal.y,
2257 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
2258 ; EG-NEXT:     LSHR T7.X, PS, literal.x,
2259 ; EG-NEXT:     BFE_INT T10.Y, T2.W, 0.0, literal.y,
2260 ; EG-NEXT:     BFE_INT T11.Z, T0.Z, 0.0, literal.y,
2261 ; EG-NEXT:     BFE_INT T12.W, T0.Y, 0.0, literal.y,
2262 ; EG-NEXT:     ADD_INT * T2.W, KC0[2].Y, literal.z,
2263 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
2264 ; EG-NEXT:    32(4.484155e-44), 0(0.000000e+00)
2265 ; EG-NEXT:     LSHR T13.X, PS, literal.x,
2266 ; EG-NEXT:     BFE_INT T11.Y, T1.W, 0.0, literal.y,
2267 ; EG-NEXT:     BFE_INT T12.Z, T0.W, 0.0, literal.y, BS:VEC_120/SCL_212
2268 ; EG-NEXT:     LSHR T0.W, T7.W, literal.y, BS:VEC_201
2269 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
2270 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
2271 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
2272 ; EG-NEXT:     LSHR T14.X, PS, literal.x,
2273 ; EG-NEXT:     BFE_INT * T12.Y, PV.W, 0.0, literal.y,
2274 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
2276 ; GFX12-LABEL: constant_sextload_v16i8_to_v16i32:
2277 ; GFX12:       ; %bb.0:
2278 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
2279 ; GFX12-NEXT:    s_wait_kmcnt 0x0
2280 ; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x0
2281 ; GFX12-NEXT:    s_wait_kmcnt 0x0
2282 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s7
2283 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s6
2284 ; GFX12-NEXT:    v_lshrrev_b16 v9, 8, s5
2285 ; GFX12-NEXT:    v_lshrrev_b16 v13, 8, s4
2286 ; GFX12-NEXT:    s_ashr_i32 s12, s7, 24
2287 ; GFX12-NEXT:    s_sext_i32_i8 s13, s7
2288 ; GFX12-NEXT:    s_bfe_i32 s7, s7, 0x80010
2289 ; GFX12-NEXT:    s_ashr_i32 s10, s6, 24
2290 ; GFX12-NEXT:    s_bfe_i32 s11, s6, 0x80010
2291 ; GFX12-NEXT:    s_sext_i32_i8 s6, s6
2292 ; GFX12-NEXT:    v_dual_mov_b32 v16, 0 :: v_dual_mov_b32 v3, s12
2293 ; GFX12-NEXT:    s_ashr_i32 s8, s5, 24
2294 ; GFX12-NEXT:    s_bfe_i32 s9, s5, 0x80010
2295 ; GFX12-NEXT:    s_sext_i32_i8 s5, s5
2296 ; GFX12-NEXT:    v_dual_mov_b32 v0, s13 :: v_dual_mov_b32 v7, s10
2297 ; GFX12-NEXT:    v_dual_mov_b32 v2, s7 :: v_dual_mov_b32 v11, s8
2298 ; GFX12-NEXT:    v_bfe_i32 v1, v1, 0, 8
2299 ; GFX12-NEXT:    s_ashr_i32 s2, s4, 24
2300 ; GFX12-NEXT:    s_bfe_i32 s3, s4, 0x80010
2301 ; GFX12-NEXT:    s_sext_i32_i8 s4, s4
2302 ; GFX12-NEXT:    v_dual_mov_b32 v4, s6 :: v_dual_mov_b32 v15, s2
2303 ; GFX12-NEXT:    v_mov_b32_e32 v6, s11
2304 ; GFX12-NEXT:    v_bfe_i32 v5, v5, 0, 8
2305 ; GFX12-NEXT:    v_mov_b32_e32 v8, s5
2306 ; GFX12-NEXT:    v_mov_b32_e32 v10, s9
2307 ; GFX12-NEXT:    v_bfe_i32 v9, v9, 0, 8
2308 ; GFX12-NEXT:    v_mov_b32_e32 v12, s4
2309 ; GFX12-NEXT:    v_mov_b32_e32 v14, s3
2310 ; GFX12-NEXT:    v_bfe_i32 v13, v13, 0, 8
2311 ; GFX12-NEXT:    s_clause 0x3
2312 ; GFX12-NEXT:    global_store_b128 v16, v[0:3], s[0:1] offset:48
2313 ; GFX12-NEXT:    global_store_b128 v16, v[4:7], s[0:1] offset:32
2314 ; GFX12-NEXT:    global_store_b128 v16, v[8:11], s[0:1] offset:16
2315 ; GFX12-NEXT:    global_store_b128 v16, v[12:15], s[0:1]
2316 ; GFX12-NEXT:    s_nop 0
2317 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2318 ; GFX12-NEXT:    s_endpgm
2319   %load = load <16 x i8>, ptr addrspace(4) %in
2320   %ext = sext <16 x i8> %load to <16 x i32>
2321   store <16 x i32> %ext, ptr addrspace(1) %out
2322   ret void
2325 ; TODO: These should use DST, but for some there are redundant MOVs
2326 define amdgpu_kernel void @constant_zextload_v32i8_to_v32i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
2327 ; GFX6-NOHSA-LABEL: constant_zextload_v32i8_to_v32i32:
2328 ; GFX6-NOHSA:       ; %bb.0:
2329 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
2330 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2331 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
2332 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
2333 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
2334 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2335 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s12, s4, 24
2336 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s13, s4, 0x80008
2337 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s5, 24
2338 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s15, s5, 0x80008
2339 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s16, s6, 24
2340 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s17, s6, 0x80008
2341 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s18, s7, 24
2342 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s19, s7, 0x80008
2343 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s20, s8, 24
2344 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s21, s8, 0x80008
2345 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s22, s9, 24
2346 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s23, s9, 0x80008
2347 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s24, s10, 24
2348 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s25, s10, 0x80008
2349 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s26, s11, 24
2350 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s27, s11, 0x80008
2351 ; GFX6-NOHSA-NEXT:    s_and_b32 s28, s4, 0xff
2352 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
2353 ; GFX6-NOHSA-NEXT:    s_and_b32 s29, s5, 0xff
2354 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
2355 ; GFX6-NOHSA-NEXT:    s_and_b32 s30, s6, 0xff
2356 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
2357 ; GFX6-NOHSA-NEXT:    s_and_b32 s31, s7, 0xff
2358 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
2359 ; GFX6-NOHSA-NEXT:    s_and_b32 s33, s8, 0xff
2360 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
2361 ; GFX6-NOHSA-NEXT:    s_and_b32 s34, s9, 0xff
2362 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
2363 ; GFX6-NOHSA-NEXT:    s_and_b32 s35, s10, 0xff
2364 ; GFX6-NOHSA-NEXT:    s_and_b32 s36, s11, 0xff
2365 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s11, s11, 0x80010
2366 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
2367 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s36
2368 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s27
2369 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s11
2370 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s26
2371 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
2372 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2373 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s35
2374 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s25
2375 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
2376 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s24
2377 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
2378 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2379 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s34
2380 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s23
2381 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
2382 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s22
2383 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
2384 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2385 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s33
2386 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s21
2387 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s8
2388 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s20
2389 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
2390 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2391 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s31
2392 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s19
2393 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
2394 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
2395 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
2396 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2397 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s30
2398 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s17
2399 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
2400 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s16
2401 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2402 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2403 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s29
2404 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s15
2405 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
2406 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s14
2407 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
2408 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2409 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s28
2410 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s13
2411 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
2412 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s12
2413 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
2414 ; GFX6-NOHSA-NEXT:    s_endpgm
2416 ; GFX7-HSA-LABEL: constant_zextload_v32i8_to_v32i32:
2417 ; GFX7-HSA:       ; %bb.0:
2418 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
2419 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2420 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
2421 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2422 ; GFX7-HSA-NEXT:    s_lshr_b32 s12, s4, 24
2423 ; GFX7-HSA-NEXT:    s_bfe_u32 s13, s4, 0x80008
2424 ; GFX7-HSA-NEXT:    s_lshr_b32 s14, s5, 24
2425 ; GFX7-HSA-NEXT:    s_bfe_u32 s15, s5, 0x80008
2426 ; GFX7-HSA-NEXT:    s_lshr_b32 s16, s6, 24
2427 ; GFX7-HSA-NEXT:    s_bfe_u32 s17, s6, 0x80008
2428 ; GFX7-HSA-NEXT:    s_lshr_b32 s18, s7, 24
2429 ; GFX7-HSA-NEXT:    s_bfe_u32 s19, s7, 0x80008
2430 ; GFX7-HSA-NEXT:    s_lshr_b32 s20, s8, 24
2431 ; GFX7-HSA-NEXT:    s_bfe_u32 s21, s8, 0x80008
2432 ; GFX7-HSA-NEXT:    s_lshr_b32 s22, s9, 24
2433 ; GFX7-HSA-NEXT:    s_bfe_u32 s23, s9, 0x80008
2434 ; GFX7-HSA-NEXT:    s_lshr_b32 s24, s10, 24
2435 ; GFX7-HSA-NEXT:    s_bfe_u32 s25, s10, 0x80008
2436 ; GFX7-HSA-NEXT:    s_lshr_b32 s2, s11, 24
2437 ; GFX7-HSA-NEXT:    s_bfe_u32 s3, s11, 0x80008
2438 ; GFX7-HSA-NEXT:    s_and_b32 s26, s4, 0xff
2439 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
2440 ; GFX7-HSA-NEXT:    s_and_b32 s27, s5, 0xff
2441 ; GFX7-HSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
2442 ; GFX7-HSA-NEXT:    s_and_b32 s28, s6, 0xff
2443 ; GFX7-HSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
2444 ; GFX7-HSA-NEXT:    s_and_b32 s29, s7, 0xff
2445 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
2446 ; GFX7-HSA-NEXT:    s_and_b32 s30, s8, 0xff
2447 ; GFX7-HSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
2448 ; GFX7-HSA-NEXT:    s_and_b32 s31, s9, 0xff
2449 ; GFX7-HSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
2450 ; GFX7-HSA-NEXT:    s_and_b32 s33, s10, 0xff
2451 ; GFX7-HSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
2452 ; GFX7-HSA-NEXT:    s_and_b32 s34, s11, 0xff
2453 ; GFX7-HSA-NEXT:    s_bfe_u32 s11, s11, 0x80010
2454 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
2455 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x70
2456 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
2457 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2458 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2459 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2460 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x60
2461 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s34
2462 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s11
2463 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2464 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2465 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2466 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2467 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x50
2468 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s33
2469 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s25
2470 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s10
2471 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s24
2472 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2473 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2474 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2475 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2476 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 64
2477 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s31
2478 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s23
2479 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s9
2480 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s22
2481 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2482 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2483 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2484 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2485 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
2486 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s30
2487 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s21
2488 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s8
2489 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s20
2490 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2491 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2492 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2493 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2494 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
2495 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s29
2496 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s19
2497 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s7
2498 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s18
2499 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2500 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2501 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2502 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2503 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
2504 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s28
2505 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
2506 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
2507 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s16
2508 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2509 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2510 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2511 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s27
2512 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s15
2513 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
2514 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s14
2515 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2516 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2517 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
2518 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s26
2519 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s13
2520 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
2521 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s12
2522 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
2523 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2524 ; GFX7-HSA-NEXT:    s_endpgm
2526 ; GFX8-NOHSA-LABEL: constant_zextload_v32i8_to_v32i32:
2527 ; GFX8-NOHSA:       ; %bb.0:
2528 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x24
2529 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2530 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
2531 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2532 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s0, 24
2533 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s11, s1, 24
2534 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s12, s2, 24
2535 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s13, s3, 24
2536 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s14, s4, 24
2537 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s15, s5, 24
2538 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s16, s6, 24
2539 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s17, s7, 24
2540 ; GFX8-NOHSA-NEXT:    s_and_b32 s18, s0, 0xff
2541 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s0
2542 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s19, s0, 0x80010
2543 ; GFX8-NOHSA-NEXT:    s_and_b32 s20, s1, 0xff
2544 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s1
2545 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s21, s1, 0x80010
2546 ; GFX8-NOHSA-NEXT:    s_and_b32 s22, s2, 0xff
2547 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s2
2548 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
2549 ; GFX8-NOHSA-NEXT:    s_and_b32 s23, s3, 0xff
2550 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s3
2551 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
2552 ; GFX8-NOHSA-NEXT:    s_and_b32 s24, s4, 0xff
2553 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s4
2554 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
2555 ; GFX8-NOHSA-NEXT:    s_and_b32 s25, s5, 0xff
2556 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s26, s5, 0x80010
2557 ; GFX8-NOHSA-NEXT:    s_and_b32 s27, s6, 0xff
2558 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s28, s6, 0x80010
2559 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s7, 0xff
2560 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s7, 0x80010
2561 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s0
2562 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x70
2563 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s1
2564 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2565 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
2566 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
2567 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x60
2568 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s7
2569 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s17
2570 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2571 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
2572 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
2573 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
2574 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x50
2575 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s6
2576 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s27
2577 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s28
2578 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s16
2579 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2580 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
2581 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
2582 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
2583 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 64
2584 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s5
2585 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s25
2586 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s26
2587 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s15
2588 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2589 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
2590 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s24
2591 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s1
2592 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s0
2593 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 48
2594 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
2595 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s14
2596 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2597 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
2598 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s23
2599 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s1
2600 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s0
2601 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 32
2602 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s3
2603 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s13
2604 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2605 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
2606 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s22
2607 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s1
2608 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s0
2609 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 16
2610 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
2611 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s12
2612 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2613 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
2614 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s20
2615 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s1
2616 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s21
2617 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s11
2618 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s0
2619 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
2620 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s18
2621 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
2622 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
2623 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s10
2624 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
2625 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2626 ; GFX8-NOHSA-NEXT:    s_endpgm
2628 ; EG-LABEL: constant_zextload_v32i8_to_v32i32:
2629 ; EG:       ; %bb.0:
2630 ; EG-NEXT:    ALU 0, @16, KC0[CB0:0-32], KC1[]
2631 ; EG-NEXT:    TEX 1 @12
2632 ; EG-NEXT:    ALU 75, @17, KC0[CB0:0-32], KC1[]
2633 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T26.X, 0
2634 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T25.X, 0
2635 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T23.X, 0
2636 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T12.X, 0
2637 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T20.X, 0
2638 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T18.X, 0
2639 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T16.X, 0
2640 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T11.X, 1
2641 ; EG-NEXT:    CF_END
2642 ; EG-NEXT:    Fetch clause starting at 12:
2643 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
2644 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
2645 ; EG-NEXT:    ALU clause starting at 16:
2646 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
2647 ; EG-NEXT:    ALU clause starting at 17:
2648 ; EG-NEXT:     MOV * T0.W, literal.x,
2649 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
2650 ; EG-NEXT:     BFE_UINT * T13.Z, T11.X, literal.x, PV.W,
2651 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2652 ; EG-NEXT:     BFE_UINT T13.Y, T11.X, literal.x, T0.W,
2653 ; EG-NEXT:     BFE_UINT T14.Z, T11.Y, literal.y, T0.W,
2654 ; EG-NEXT:     LSHR * T13.W, T11.X, literal.z,
2655 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
2656 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
2657 ; EG-NEXT:     AND_INT T13.X, T11.X, literal.x,
2658 ; EG-NEXT:     BFE_UINT T14.Y, T11.Y, literal.y, T0.W,
2659 ; EG-NEXT:     LSHR * T11.X, KC0[2].Y, literal.z,
2660 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
2661 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2662 ; EG-NEXT:     BFE_UINT T15.Z, T11.Z, literal.x, T0.W,
2663 ; EG-NEXT:     LSHR * T14.W, T11.Y, literal.y,
2664 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
2665 ; EG-NEXT:     AND_INT T14.X, T11.Y, literal.x,
2666 ; EG-NEXT:     BFE_UINT T15.Y, T11.Z, literal.y, T0.W,
2667 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
2668 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
2669 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2670 ; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
2671 ; EG-NEXT:     BFE_UINT T17.Z, T11.W, literal.y, T0.W,
2672 ; EG-NEXT:     LSHR T15.W, T11.Z, literal.z,
2673 ; EG-NEXT:     AND_INT * T15.X, T11.Z, literal.w,
2674 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2675 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
2676 ; EG-NEXT:     BFE_UINT T17.Y, T11.W, literal.x, T0.W,
2677 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
2678 ; EG-NEXT:    8(1.121039e-44), 32(4.484155e-44)
2679 ; EG-NEXT:     LSHR T18.X, PV.W, literal.x,
2680 ; EG-NEXT:     BFE_UINT T19.Z, T12.X, literal.y, T0.W, BS:VEC_021/SCL_122
2681 ; EG-NEXT:     LSHR T17.W, T11.W, literal.z,
2682 ; EG-NEXT:     AND_INT * T17.X, T11.W, literal.w,
2683 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2684 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
2685 ; EG-NEXT:     BFE_UINT T19.Y, T12.X, literal.x, T0.W,
2686 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
2687 ; EG-NEXT:    8(1.121039e-44), 48(6.726233e-44)
2688 ; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
2689 ; EG-NEXT:     BFE_UINT T21.Z, T12.Y, literal.y, T0.W,
2690 ; EG-NEXT:     LSHR T19.W, T12.X, literal.z,
2691 ; EG-NEXT:     AND_INT * T19.X, T12.X, literal.w,
2692 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2693 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
2694 ; EG-NEXT:     BFE_UINT T21.Y, T12.Y, literal.x, T0.W,
2695 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
2696 ; EG-NEXT:    8(1.121039e-44), 64(8.968310e-44)
2697 ; EG-NEXT:     LSHR T12.X, PV.W, literal.x,
2698 ; EG-NEXT:     BFE_UINT T22.Z, T12.Z, literal.y, T0.W,
2699 ; EG-NEXT:     LSHR T21.W, T12.Y, literal.z,
2700 ; EG-NEXT:     AND_INT * T21.X, T12.Y, literal.w,
2701 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2702 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
2703 ; EG-NEXT:     BFE_UINT T22.Y, T12.Z, literal.x, T0.W,
2704 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
2705 ; EG-NEXT:    8(1.121039e-44), 80(1.121039e-43)
2706 ; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
2707 ; EG-NEXT:     BFE_UINT T24.Z, T12.W, literal.y, T0.W,
2708 ; EG-NEXT:     LSHR T22.W, T12.Z, literal.z,
2709 ; EG-NEXT:     AND_INT * T22.X, T12.Z, literal.w,
2710 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2711 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
2712 ; EG-NEXT:     BFE_UINT T24.Y, T12.W, literal.x, T0.W,
2713 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2714 ; EG-NEXT:    8(1.121039e-44), 96(1.345247e-43)
2715 ; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
2716 ; EG-NEXT:     LSHR T24.W, T12.W, literal.y,
2717 ; EG-NEXT:     AND_INT * T24.X, T12.W, literal.z,
2718 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
2719 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
2720 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
2721 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
2722 ; EG-NEXT:     LSHR * T26.X, PV.W, literal.x,
2723 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2725 ; GFX12-LABEL: constant_zextload_v32i8_to_v32i32:
2726 ; GFX12:       ; %bb.0:
2727 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
2728 ; GFX12-NEXT:    s_wait_kmcnt 0x0
2729 ; GFX12-NEXT:    s_load_b256 s[4:11], s[2:3], 0x0
2730 ; GFX12-NEXT:    s_wait_kmcnt 0x0
2731 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s11
2732 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s10
2733 ; GFX12-NEXT:    v_lshrrev_b16 v9, 8, s9
2734 ; GFX12-NEXT:    v_lshrrev_b16 v10, 8, s8
2735 ; GFX12-NEXT:    v_lshrrev_b16 v11, 8, s7
2736 ; GFX12-NEXT:    s_lshr_b32 s15, s9, 24
2737 ; GFX12-NEXT:    s_lshr_b32 s17, s11, 24
2738 ; GFX12-NEXT:    v_lshrrev_b16 v12, 8, s6
2739 ; GFX12-NEXT:    s_and_b32 s23, s9, 0xff
2740 ; GFX12-NEXT:    s_bfe_u32 s9, s9, 0x80010
2741 ; GFX12-NEXT:    s_and_b32 s25, s11, 0xff
2742 ; GFX12-NEXT:    s_bfe_u32 s11, s11, 0x80010
2743 ; GFX12-NEXT:    s_lshr_b32 s14, s8, 24
2744 ; GFX12-NEXT:    s_lshr_b32 s16, s10, 24
2745 ; GFX12-NEXT:    v_lshrrev_b16 v14, 8, s5
2746 ; GFX12-NEXT:    s_and_b32 s22, s8, 0xff
2747 ; GFX12-NEXT:    s_bfe_u32 s8, s8, 0x80010
2748 ; GFX12-NEXT:    s_and_b32 s24, s10, 0xff
2749 ; GFX12-NEXT:    s_bfe_u32 s10, s10, 0x80010
2750 ; GFX12-NEXT:    v_dual_mov_b32 v32, 0 :: v_dual_mov_b32 v3, s17
2751 ; GFX12-NEXT:    s_lshr_b32 s13, s7, 24
2752 ; GFX12-NEXT:    v_lshrrev_b16 v13, 8, s4
2753 ; GFX12-NEXT:    s_and_b32 s21, s7, 0xff
2754 ; GFX12-NEXT:    s_bfe_u32 s7, s7, 0x80010
2755 ; GFX12-NEXT:    v_dual_mov_b32 v0, s25 :: v_dual_mov_b32 v7, s16
2756 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
2757 ; GFX12-NEXT:    v_dual_mov_b32 v2, s11 :: v_dual_and_b32 v13, 0xffff, v13
2758 ; GFX12-NEXT:    v_dual_mov_b32 v8, s23 :: v_dual_and_b32 v1, 0xffff, v1
2759 ; GFX12-NEXT:    v_and_b32_e32 v5, 0xffff, v5
2760 ; GFX12-NEXT:    v_dual_mov_b32 v28, s22 :: v_dual_and_b32 v25, 0xffff, v11
2761 ; GFX12-NEXT:    v_dual_mov_b32 v30, s8 :: v_dual_and_b32 v29, 0xffff, v10
2762 ; GFX12-NEXT:    v_dual_mov_b32 v24, s21 :: v_dual_and_b32 v9, 0xffff, v9
2763 ; GFX12-NEXT:    v_dual_mov_b32 v10, s9 :: v_dual_mov_b32 v11, s15
2764 ; GFX12-NEXT:    v_mov_b32_e32 v26, s7
2765 ; GFX12-NEXT:    s_lshr_b32 s12, s6, 24
2766 ; GFX12-NEXT:    s_and_b32 s20, s6, 0xff
2767 ; GFX12-NEXT:    s_bfe_u32 s6, s6, 0x80010
2768 ; GFX12-NEXT:    v_dual_mov_b32 v4, s24 :: v_dual_and_b32 v17, 0xffff, v14
2769 ; GFX12-NEXT:    v_dual_mov_b32 v6, s10 :: v_dual_and_b32 v21, 0xffff, v12
2770 ; GFX12-NEXT:    v_dual_mov_b32 v31, s14 :: v_dual_mov_b32 v20, s20
2771 ; GFX12-NEXT:    s_lshr_b32 s3, s5, 24
2772 ; GFX12-NEXT:    s_and_b32 s19, s5, 0xff
2773 ; GFX12-NEXT:    s_bfe_u32 s5, s5, 0x80010
2774 ; GFX12-NEXT:    v_dual_mov_b32 v27, s13 :: v_dual_mov_b32 v22, s6
2775 ; GFX12-NEXT:    s_lshr_b32 s2, s4, 24
2776 ; GFX12-NEXT:    s_and_b32 s18, s4, 0xff
2777 ; GFX12-NEXT:    s_bfe_u32 s4, s4, 0x80010
2778 ; GFX12-NEXT:    v_dual_mov_b32 v23, s12 :: v_dual_mov_b32 v16, s19
2779 ; GFX12-NEXT:    v_dual_mov_b32 v18, s5 :: v_dual_mov_b32 v19, s3
2780 ; GFX12-NEXT:    s_clause 0x1
2781 ; GFX12-NEXT:    global_store_b128 v32, v[0:3], s[0:1] offset:112
2782 ; GFX12-NEXT:    global_store_b128 v32, v[4:7], s[0:1] offset:96
2783 ; GFX12-NEXT:    v_dual_mov_b32 v12, s18 :: v_dual_mov_b32 v15, s2
2784 ; GFX12-NEXT:    v_mov_b32_e32 v14, s4
2785 ; GFX12-NEXT:    s_clause 0x5
2786 ; GFX12-NEXT:    global_store_b128 v32, v[8:11], s[0:1] offset:80
2787 ; GFX12-NEXT:    global_store_b128 v32, v[28:31], s[0:1] offset:64
2788 ; GFX12-NEXT:    global_store_b128 v32, v[24:27], s[0:1] offset:48
2789 ; GFX12-NEXT:    global_store_b128 v32, v[20:23], s[0:1] offset:32
2790 ; GFX12-NEXT:    global_store_b128 v32, v[16:19], s[0:1] offset:16
2791 ; GFX12-NEXT:    global_store_b128 v32, v[12:15], s[0:1]
2792 ; GFX12-NEXT:    s_nop 0
2793 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2794 ; GFX12-NEXT:    s_endpgm
2795   %load = load <32 x i8>, ptr addrspace(4) %in
2796   %ext = zext <32 x i8> %load to <32 x i32>
2797   store <32 x i32> %ext, ptr addrspace(1) %out
2798   ret void
2801 ; TODO: These should use DST, but for some there are redundant MOVs
2802 define amdgpu_kernel void @constant_sextload_v32i8_to_v32i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
2803 ; GFX6-NOHSA-LABEL: constant_sextload_v32i8_to_v32i32:
2804 ; GFX6-NOHSA:       ; %bb.0:
2805 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
2806 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2807 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
2808 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
2809 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
2810 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2811 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s12, s4, 24
2812 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s13, s4, 0x80010
2813 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s14, s4, 0x80008
2814 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
2815 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s15, s5, 24
2816 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s16, s5, 0x80010
2817 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s17, s5, 0x80008
2818 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
2819 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s18, s6, 24
2820 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s19, s6, 0x80010
2821 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s20, s6, 0x80008
2822 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
2823 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s21, s7, 24
2824 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s22, s7, 0x80010
2825 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s23, s7, 0x80008
2826 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
2827 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s24, s8, 24
2828 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s25, s8, 0x80010
2829 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s26, s8, 0x80008
2830 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s8, s8
2831 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s27, s9, 24
2832 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s28, s9, 0x80010
2833 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s29, s9, 0x80008
2834 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s9, s9
2835 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s30, s10, 24
2836 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s31, s10, 0x80010
2837 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s33, s10, 0x80008
2838 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s34, s11, 24
2839 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s35, s11, 0x80010
2840 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s36, s11, 0x80008
2841 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s11, s11
2842 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s10, s10
2843 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
2844 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s36
2845 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s35
2846 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s34
2847 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
2848 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2849 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
2850 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s33
2851 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s31
2852 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s30
2853 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
2854 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2855 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s9
2856 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s29
2857 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s28
2858 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s27
2859 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
2860 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2861 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
2862 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s26
2863 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s25
2864 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s24
2865 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
2866 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2867 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
2868 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s23
2869 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s22
2870 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s21
2871 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
2872 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2873 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
2874 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s20
2875 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
2876 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
2877 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2878 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2879 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
2880 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s17
2881 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s16
2882 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s15
2883 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
2884 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2885 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
2886 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s14
2887 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s13
2888 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s12
2889 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
2890 ; GFX6-NOHSA-NEXT:    s_endpgm
2892 ; GFX7-HSA-LABEL: constant_sextload_v32i8_to_v32i32:
2893 ; GFX7-HSA:       ; %bb.0:
2894 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
2895 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2896 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
2897 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2898 ; GFX7-HSA-NEXT:    s_ashr_i32 s12, s4, 24
2899 ; GFX7-HSA-NEXT:    s_bfe_i32 s13, s4, 0x80010
2900 ; GFX7-HSA-NEXT:    s_bfe_i32 s14, s4, 0x80008
2901 ; GFX7-HSA-NEXT:    s_ashr_i32 s15, s5, 24
2902 ; GFX7-HSA-NEXT:    s_bfe_i32 s16, s5, 0x80010
2903 ; GFX7-HSA-NEXT:    s_bfe_i32 s17, s5, 0x80008
2904 ; GFX7-HSA-NEXT:    s_ashr_i32 s18, s6, 24
2905 ; GFX7-HSA-NEXT:    s_bfe_i32 s19, s6, 0x80010
2906 ; GFX7-HSA-NEXT:    s_bfe_i32 s20, s6, 0x80008
2907 ; GFX7-HSA-NEXT:    s_ashr_i32 s21, s7, 24
2908 ; GFX7-HSA-NEXT:    s_bfe_i32 s22, s7, 0x80010
2909 ; GFX7-HSA-NEXT:    s_bfe_i32 s23, s7, 0x80008
2910 ; GFX7-HSA-NEXT:    s_ashr_i32 s24, s8, 24
2911 ; GFX7-HSA-NEXT:    s_bfe_i32 s25, s8, 0x80010
2912 ; GFX7-HSA-NEXT:    s_bfe_i32 s26, s8, 0x80008
2913 ; GFX7-HSA-NEXT:    s_ashr_i32 s27, s9, 24
2914 ; GFX7-HSA-NEXT:    s_bfe_i32 s28, s9, 0x80010
2915 ; GFX7-HSA-NEXT:    s_bfe_i32 s29, s9, 0x80008
2916 ; GFX7-HSA-NEXT:    s_ashr_i32 s30, s10, 24
2917 ; GFX7-HSA-NEXT:    s_bfe_i32 s31, s10, 0x80010
2918 ; GFX7-HSA-NEXT:    s_bfe_i32 s33, s10, 0x80008
2919 ; GFX7-HSA-NEXT:    s_ashr_i32 s2, s11, 24
2920 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s11, 0x80010
2921 ; GFX7-HSA-NEXT:    s_bfe_i32 s34, s11, 0x80008
2922 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
2923 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x70
2924 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
2925 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2926 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2927 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s11, s11
2928 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2929 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x60
2930 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s11
2931 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s34
2932 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2933 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2934 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2935 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s10, s10
2936 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2937 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x50
2938 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
2939 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s33
2940 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s31
2941 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s30
2942 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2943 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2944 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2945 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s9, s9
2946 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2947 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 64
2948 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s9
2949 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s29
2950 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s28
2951 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s27
2952 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2953 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2954 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2955 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s8, s8
2956 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2957 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
2958 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
2959 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s26
2960 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s25
2961 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s24
2962 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2963 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2964 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2965 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s7
2966 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2967 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
2968 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
2969 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s23
2970 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s22
2971 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s21
2972 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2973 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2974 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2975 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s6, s6
2976 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2977 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
2978 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
2979 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s20
2980 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s19
2981 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s18
2982 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2983 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s5, s5
2984 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2985 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2986 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
2987 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
2988 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s16
2989 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s15
2990 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2991 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s4, s4
2992 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2993 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
2994 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
2995 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s14
2996 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s13
2997 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s12
2998 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
2999 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3000 ; GFX7-HSA-NEXT:    s_endpgm
3002 ; GFX8-NOHSA-LABEL: constant_sextload_v32i8_to_v32i32:
3003 ; GFX8-NOHSA:       ; %bb.0:
3004 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x24
3005 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3006 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
3007 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3008 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s1
3009 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s0
3010 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s10, s0, 24
3011 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s11, s0, 0x80010
3012 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s12, s0
3013 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s13, s1, 24
3014 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s14, s1, 0x80010
3015 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s15, s1
3016 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s16, s2, 24
3017 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s17, s2, 0x80010
3018 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s18, s3, 24
3019 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s19, s3, 0x80010
3020 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s20, s4, 24
3021 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s21, s4, 0x80010
3022 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s22, s5, 24
3023 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s23, s5, 0x80010
3024 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s24, s6, 24
3025 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s25, s6, 0x80010
3026 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s0, s7, 24
3027 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s7, 0x80010
3028 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s0
3029 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x70
3030 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s1
3031 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
3032 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
3033 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s7
3034 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
3035 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
3036 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x60
3037 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v11, v0, 0, 8
3038 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s7
3039 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
3040 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3041 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
3042 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s6
3043 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
3044 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
3045 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x50
3046 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v11, v2, 0, 8
3047 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s6
3048 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s25
3049 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s24
3050 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
3051 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3052 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
3053 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s5
3054 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
3055 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
3056 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 64
3057 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v11, v4, 0, 8
3058 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s5
3059 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s23
3060 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s22
3061 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
3062 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3063 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s4
3064 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s1
3065 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
3066 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s0
3067 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 48
3068 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v9, v6, 0, 8
3069 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
3070 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s21
3071 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s20
3072 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
3073 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
3074 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s3
3075 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s1
3076 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s3, s3
3077 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s0
3078 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 32
3079 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v7, v7, 0, 8
3080 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s3
3081 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s19
3082 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s18
3083 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
3084 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
3085 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s2
3086 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s1
3087 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
3088 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s0
3089 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 16
3090 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v5, v5, 0, 8
3091 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
3092 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s17
3093 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s16
3094 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
3095 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
3096 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v3, v3, 0, 8
3097 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s1
3098 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
3099 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s14
3100 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s13
3101 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s0
3102 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
3103 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v1, 0, 8
3104 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
3105 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s12
3106 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s11
3107 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s10
3108 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
3109 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3110 ; GFX8-NOHSA-NEXT:    s_endpgm
3112 ; EG-LABEL: constant_sextload_v32i8_to_v32i32:
3113 ; EG:       ; %bb.0:
3114 ; EG-NEXT:    ALU 0, @18, KC0[CB0:0-32], KC1[]
3115 ; EG-NEXT:    TEX 0 @14
3116 ; EG-NEXT:    ALU 18, @19, KC0[CB0:0-32], KC1[]
3117 ; EG-NEXT:    TEX 0 @16
3118 ; EG-NEXT:    ALU 75, @38, KC0[CB0:0-32], KC1[]
3119 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T26.X, 0
3120 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T25.X, 0
3121 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T12.X, 0
3122 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T17.X, 0
3123 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T16.X, 0
3124 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T15.X, 0
3125 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T14.X, 0
3126 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T13.X, 1
3127 ; EG-NEXT:    CF_END
3128 ; EG-NEXT:    Fetch clause starting at 14:
3129 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
3130 ; EG-NEXT:    Fetch clause starting at 16:
3131 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
3132 ; EG-NEXT:    ALU clause starting at 18:
3133 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
3134 ; EG-NEXT:    ALU clause starting at 19:
3135 ; EG-NEXT:     LSHR T13.X, KC0[2].Y, literal.x,
3136 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3137 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3138 ; EG-NEXT:     LSHR T14.X, PV.W, literal.x,
3139 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3140 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
3141 ; EG-NEXT:     LSHR T15.X, PV.W, literal.x,
3142 ; EG-NEXT:     LSHR T0.Z, T12.W, literal.y,
3143 ; EG-NEXT:     LSHR T0.W, T12.Z, literal.z,
3144 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
3145 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3146 ; EG-NEXT:    8(1.121039e-44), 48(6.726233e-44)
3147 ; EG-NEXT:     LSHR T16.X, PS, literal.x,
3148 ; EG-NEXT:     LSHR T0.Y, T12.W, literal.y,
3149 ; EG-NEXT:     LSHR T1.Z, T12.Z, literal.z,
3150 ; EG-NEXT:     LSHR T1.W, T12.Y, literal.w,
3151 ; EG-NEXT:     LSHR * T2.W, T12.Z, literal.y,
3152 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
3153 ; EG-NEXT:    16(2.242078e-44), 8(1.121039e-44)
3154 ; EG-NEXT:    ALU clause starting at 38:
3155 ; EG-NEXT:     ADD_INT * T3.W, KC0[2].Y, literal.x,
3156 ; EG-NEXT:    64(8.968310e-44), 0(0.000000e+00)
3157 ; EG-NEXT:     LSHR T17.X, PV.W, literal.x,
3158 ; EG-NEXT:     LSHR T1.Y, T12.Y, literal.y,
3159 ; EG-NEXT:     LSHR T2.Z, T12.Y, literal.z,
3160 ; EG-NEXT:     LSHR T3.W, T12.X, literal.y,
3161 ; EG-NEXT:     LSHR * T4.W, T12.X, literal.z,
3162 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3163 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
3164 ; EG-NEXT:     BFE_INT T18.X, T11.X, 0.0, literal.x,
3165 ; EG-NEXT:     LSHR T2.Y, T11.W, literal.y,
3166 ; EG-NEXT:     LSHR T3.Z, T11.W, literal.z,
3167 ; EG-NEXT:     LSHR T5.W, T11.Z, literal.y,
3168 ; EG-NEXT:     LSHR * T6.W, T11.X, literal.z,
3169 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
3170 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
3171 ; EG-NEXT:     BFE_INT T19.X, T11.Y, 0.0, literal.x,
3172 ; EG-NEXT:     LSHR T3.Y, T11.Z, literal.y,
3173 ; EG-NEXT:     LSHR T4.Z, T11.Y, literal.y,
3174 ; EG-NEXT:     BFE_INT T18.W, PS, 0.0, literal.x,
3175 ; EG-NEXT:     LSHR * T6.W, T11.X, literal.z,
3176 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
3177 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3178 ; EG-NEXT:     BFE_INT T20.X, T11.Z, 0.0, literal.x,
3179 ; EG-NEXT:     LSHR T4.Y, T11.Y, literal.y,
3180 ; EG-NEXT:     BFE_INT T18.Z, PS, 0.0, literal.x,
3181 ; EG-NEXT:     BFE_INT T19.W, PV.Z, 0.0, literal.x,
3182 ; EG-NEXT:     LSHR * T6.W, T11.X, literal.x,
3183 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
3184 ; EG-NEXT:     BFE_INT T21.X, T11.W, 0.0, literal.x,
3185 ; EG-NEXT:     BFE_INT T18.Y, PS, 0.0, literal.x,
3186 ; EG-NEXT:     BFE_INT T19.Z, PV.Y, 0.0, literal.x,
3187 ; EG-NEXT:     BFE_INT T20.W, T3.Y, 0.0, literal.x,
3188 ; EG-NEXT:     LSHR * T6.W, T11.Y, literal.x,
3189 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
3190 ; EG-NEXT:     BFE_INT T22.X, T12.X, 0.0, literal.x,
3191 ; EG-NEXT:     BFE_INT T19.Y, PS, 0.0, literal.x,
3192 ; EG-NEXT:     BFE_INT T20.Z, T5.W, 0.0, literal.x,
3193 ; EG-NEXT:     BFE_INT T21.W, T3.Z, 0.0, literal.x,
3194 ; EG-NEXT:     LSHR * T5.W, T11.Z, literal.x,
3195 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
3196 ; EG-NEXT:     BFE_INT T11.X, T12.Y, 0.0, literal.x,
3197 ; EG-NEXT:     BFE_INT T20.Y, PS, 0.0, literal.x,
3198 ; EG-NEXT:     BFE_INT T21.Z, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212
3199 ; EG-NEXT:     BFE_INT T22.W, T4.W, 0.0, literal.x,
3200 ; EG-NEXT:     LSHR * T4.W, T11.W, literal.x,
3201 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
3202 ; EG-NEXT:     BFE_INT T23.X, T12.Z, 0.0, literal.x,
3203 ; EG-NEXT:     BFE_INT T21.Y, PS, 0.0, literal.x,
3204 ; EG-NEXT:     BFE_INT T22.Z, T3.W, 0.0, literal.x,
3205 ; EG-NEXT:     BFE_INT T11.W, T2.Z, 0.0, literal.x, BS:VEC_120/SCL_212
3206 ; EG-NEXT:     LSHR * T3.W, T12.X, literal.x,
3207 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
3208 ; EG-NEXT:     BFE_INT T24.X, T12.W, 0.0, literal.x,
3209 ; EG-NEXT:     BFE_INT T22.Y, PS, 0.0, literal.x,
3210 ; EG-NEXT:     BFE_INT T11.Z, T1.Y, 0.0, literal.x,
3211 ; EG-NEXT:     BFE_INT T23.W, T2.W, 0.0, literal.x, BS:VEC_120/SCL_212
3212 ; EG-NEXT:     ADD_INT * T2.W, KC0[2].Y, literal.y,
3213 ; EG-NEXT:    8(1.121039e-44), 80(1.121039e-43)
3214 ; EG-NEXT:     LSHR T12.X, PS, literal.x,
3215 ; EG-NEXT:     BFE_INT T11.Y, T1.W, 0.0, literal.y,
3216 ; EG-NEXT:     BFE_INT T23.Z, T1.Z, 0.0, literal.y,
3217 ; EG-NEXT:     BFE_INT T24.W, T0.Y, 0.0, literal.y,
3218 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
3219 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
3220 ; EG-NEXT:    96(1.345247e-43), 0(0.000000e+00)
3221 ; EG-NEXT:     LSHR T25.X, PS, literal.x,
3222 ; EG-NEXT:     BFE_INT T23.Y, T0.W, 0.0, literal.y,
3223 ; EG-NEXT:     BFE_INT T24.Z, T0.Z, 0.0, literal.y,
3224 ; EG-NEXT:     LSHR T0.W, T12.W, literal.y, BS:VEC_120/SCL_212
3225 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
3226 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
3227 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
3228 ; EG-NEXT:     LSHR T26.X, PS, literal.x,
3229 ; EG-NEXT:     BFE_INT * T24.Y, PV.W, 0.0, literal.y,
3230 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
3232 ; GFX12-LABEL: constant_sextload_v32i8_to_v32i32:
3233 ; GFX12:       ; %bb.0:
3234 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
3235 ; GFX12-NEXT:    s_wait_kmcnt 0x0
3236 ; GFX12-NEXT:    s_load_b256 s[4:11], s[2:3], 0x0
3237 ; GFX12-NEXT:    s_wait_kmcnt 0x0
3238 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s11
3239 ; GFX12-NEXT:    v_lshrrev_b16 v9, 8, s9
3240 ; GFX12-NEXT:    v_lshrrev_b16 v10, 8, s8
3241 ; GFX12-NEXT:    v_lshrrev_b16 v11, 8, s7
3242 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s10
3243 ; GFX12-NEXT:    v_lshrrev_b16 v12, 8, s6
3244 ; GFX12-NEXT:    s_ashr_i32 s20, s9, 24
3245 ; GFX12-NEXT:    s_bfe_i32 s21, s9, 0x80010
3246 ; GFX12-NEXT:    s_sext_i32_i8 s9, s9
3247 ; GFX12-NEXT:    s_ashr_i32 s24, s11, 24
3248 ; GFX12-NEXT:    s_sext_i32_i8 s25, s11
3249 ; GFX12-NEXT:    s_bfe_i32 s11, s11, 0x80010
3250 ; GFX12-NEXT:    v_lshrrev_b16 v14, 8, s5
3251 ; GFX12-NEXT:    s_ashr_i32 s18, s8, 24
3252 ; GFX12-NEXT:    s_bfe_i32 s19, s8, 0x80010
3253 ; GFX12-NEXT:    s_sext_i32_i8 s8, s8
3254 ; GFX12-NEXT:    s_ashr_i32 s22, s10, 24
3255 ; GFX12-NEXT:    s_bfe_i32 s23, s10, 0x80010
3256 ; GFX12-NEXT:    s_sext_i32_i8 s10, s10
3257 ; GFX12-NEXT:    v_dual_mov_b32 v32, 0 :: v_dual_mov_b32 v3, s24
3258 ; GFX12-NEXT:    v_lshrrev_b16 v13, 8, s4
3259 ; GFX12-NEXT:    s_ashr_i32 s12, s5, 24
3260 ; GFX12-NEXT:    s_ashr_i32 s14, s6, 24
3261 ; GFX12-NEXT:    s_ashr_i32 s16, s7, 24
3262 ; GFX12-NEXT:    s_bfe_i32 s17, s7, 0x80010
3263 ; GFX12-NEXT:    s_sext_i32_i8 s7, s7
3264 ; GFX12-NEXT:    v_dual_mov_b32 v0, s25 :: v_dual_mov_b32 v7, s22
3265 ; GFX12-NEXT:    v_mov_b32_e32 v2, s11
3266 ; GFX12-NEXT:    v_dual_mov_b32 v8, s9 :: v_dual_mov_b32 v23, s14
3267 ; GFX12-NEXT:    v_bfe_i32 v1, v1, 0, 8
3268 ; GFX12-NEXT:    v_bfe_i32 v25, v11, 0, 8
3269 ; GFX12-NEXT:    v_bfe_i32 v29, v10, 0, 8
3270 ; GFX12-NEXT:    v_bfe_i32 v9, v9, 0, 8
3271 ; GFX12-NEXT:    v_dual_mov_b32 v10, s21 :: v_dual_mov_b32 v19, s12
3272 ; GFX12-NEXT:    v_mov_b32_e32 v11, s20
3273 ; GFX12-NEXT:    s_ashr_i32 s2, s4, 24
3274 ; GFX12-NEXT:    s_bfe_i32 s15, s6, 0x80010
3275 ; GFX12-NEXT:    s_sext_i32_i8 s6, s6
3276 ; GFX12-NEXT:    v_dual_mov_b32 v4, s10 :: v_dual_mov_b32 v31, s18
3277 ; GFX12-NEXT:    v_dual_mov_b32 v6, s23 :: v_dual_mov_b32 v27, s16
3278 ; GFX12-NEXT:    v_bfe_i32 v5, v5, 0, 8
3279 ; GFX12-NEXT:    v_dual_mov_b32 v28, s8 :: v_dual_mov_b32 v15, s2
3280 ; GFX12-NEXT:    v_mov_b32_e32 v30, s19
3281 ; GFX12-NEXT:    s_bfe_i32 s13, s5, 0x80010
3282 ; GFX12-NEXT:    s_sext_i32_i8 s5, s5
3283 ; GFX12-NEXT:    v_mov_b32_e32 v24, s7
3284 ; GFX12-NEXT:    v_mov_b32_e32 v26, s17
3285 ; GFX12-NEXT:    s_bfe_i32 s3, s4, 0x80010
3286 ; GFX12-NEXT:    s_sext_i32_i8 s4, s4
3287 ; GFX12-NEXT:    v_bfe_i32 v21, v12, 0, 8
3288 ; GFX12-NEXT:    v_mov_b32_e32 v20, s6
3289 ; GFX12-NEXT:    v_mov_b32_e32 v22, s15
3290 ; GFX12-NEXT:    v_bfe_i32 v17, v14, 0, 8
3291 ; GFX12-NEXT:    v_mov_b32_e32 v16, s5
3292 ; GFX12-NEXT:    v_mov_b32_e32 v18, s13
3293 ; GFX12-NEXT:    v_bfe_i32 v13, v13, 0, 8
3294 ; GFX12-NEXT:    s_clause 0x1
3295 ; GFX12-NEXT:    global_store_b128 v32, v[0:3], s[0:1] offset:112
3296 ; GFX12-NEXT:    global_store_b128 v32, v[4:7], s[0:1] offset:96
3297 ; GFX12-NEXT:    v_mov_b32_e32 v12, s4
3298 ; GFX12-NEXT:    v_mov_b32_e32 v14, s3
3299 ; GFX12-NEXT:    s_clause 0x5
3300 ; GFX12-NEXT:    global_store_b128 v32, v[8:11], s[0:1] offset:80
3301 ; GFX12-NEXT:    global_store_b128 v32, v[28:31], s[0:1] offset:64
3302 ; GFX12-NEXT:    global_store_b128 v32, v[24:27], s[0:1] offset:48
3303 ; GFX12-NEXT:    global_store_b128 v32, v[20:23], s[0:1] offset:32
3304 ; GFX12-NEXT:    global_store_b128 v32, v[16:19], s[0:1] offset:16
3305 ; GFX12-NEXT:    global_store_b128 v32, v[12:15], s[0:1]
3306 ; GFX12-NEXT:    s_nop 0
3307 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
3308 ; GFX12-NEXT:    s_endpgm
3309   %load = load <32 x i8>, ptr addrspace(4) %in
3310   %ext = sext <32 x i8> %load to <32 x i32>
3311   store <32 x i32> %ext, ptr addrspace(1) %out
3312   ret void
3315 define amdgpu_kernel void @constant_zextload_v64i8_to_v64i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
3316 ; GFX6-NOHSA-LABEL: constant_zextload_v64i8_to_v64i32:
3317 ; GFX6-NOHSA:       ; %bb.0:
3318 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[16:19], s[2:3], 0x9
3319 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3320 ; GFX6-NOHSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
3321 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3322 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s18, s0, 24
3323 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s19, s0, 0x80008
3324 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s20, s1, 24
3325 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s21, s1, 0x80008
3326 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s22, s2, 24
3327 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s23, s2, 0x80008
3328 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s24, s3, 24
3329 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s26, s3, 0x80008
3330 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s27, s4, 24
3331 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s28, s4, 0x80008
3332 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s29, s5, 24
3333 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s30, s5, 0x80008
3334 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s31, s6, 24
3335 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s33, s6, 0x80008
3336 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s34, s7, 24
3337 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s35, s7, 0x80008
3338 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s36, s8, 24
3339 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s37, s8, 0x80008
3340 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s38, s9, 24
3341 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s39, s9, 0x80008
3342 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s40, s10, 24
3343 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s41, s10, 0x80008
3344 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s42, s11, 24
3345 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s43, s11, 0x80008
3346 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s44, s12, 24
3347 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s45, s12, 0x80008
3348 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s46, s13, 24
3349 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s47, s13, 0x80008
3350 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s48, s14, 24
3351 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s49, s14, 0x80008
3352 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s50, s15, 24
3353 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s51, s15, 0x80008
3354 ; GFX6-NOHSA-NEXT:    s_and_b32 s52, s0, 0xff
3355 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s25, s0, 0x80010
3356 ; GFX6-NOHSA-NEXT:    s_and_b32 s53, s1, 0xff
3357 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s54, s1, 0x80010
3358 ; GFX6-NOHSA-NEXT:    s_and_b32 s55, s2, 0xff
3359 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s56, s2, 0x80010
3360 ; GFX6-NOHSA-NEXT:    s_and_b32 s57, s3, 0xff
3361 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s58, s3, 0x80010
3362 ; GFX6-NOHSA-NEXT:    s_and_b32 s59, s4, 0xff
3363 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
3364 ; GFX6-NOHSA-NEXT:    s_and_b32 s60, s5, 0xff
3365 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
3366 ; GFX6-NOHSA-NEXT:    s_and_b32 s61, s6, 0xff
3367 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
3368 ; GFX6-NOHSA-NEXT:    s_and_b32 s62, s7, 0xff
3369 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
3370 ; GFX6-NOHSA-NEXT:    s_and_b32 s63, s8, 0xff
3371 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
3372 ; GFX6-NOHSA-NEXT:    s_and_b32 s64, s9, 0xff
3373 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
3374 ; GFX6-NOHSA-NEXT:    s_and_b32 s65, s10, 0xff
3375 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
3376 ; GFX6-NOHSA-NEXT:    s_and_b32 s66, s11, 0xff
3377 ; GFX6-NOHSA-NEXT:    s_and_b32 s67, s12, 0xff
3378 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s12, s12, 0x80010
3379 ; GFX6-NOHSA-NEXT:    s_and_b32 s68, s13, 0xff
3380 ; GFX6-NOHSA-NEXT:    s_and_b32 s69, s14, 0xff
3381 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s14, s14, 0x80010
3382 ; GFX6-NOHSA-NEXT:    s_and_b32 s70, s15, 0xff
3383 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s15, s15, 0x80010
3384 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s13, s13, 0x80010
3385 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s11, s11, 0x80010
3386 ; GFX6-NOHSA-NEXT:    s_mov_b32 s0, s16
3387 ; GFX6-NOHSA-NEXT:    s_mov_b32 s1, s17
3388 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
3389 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
3390 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s70
3391 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s51
3392 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
3393 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s50
3394 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s69
3395 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s49
3396 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s14
3397 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s48
3398 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s68
3399 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s47
3400 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s13
3401 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s46
3402 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s67
3403 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s45
3404 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s12
3405 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
3406 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:224
3407 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208
3408 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s44
3409 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192
3410 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(3)
3411 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s66
3412 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s43
3413 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s11
3414 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s42
3415 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
3416 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3417 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s65
3418 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s41
3419 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
3420 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s40
3421 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160
3422 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3423 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s64
3424 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s39
3425 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
3426 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s38
3427 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
3428 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3429 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s63
3430 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s37
3431 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s8
3432 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s36
3433 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
3434 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3435 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s62
3436 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s35
3437 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
3438 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s34
3439 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
3440 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3441 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s61
3442 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s33
3443 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
3444 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s31
3445 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
3446 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3447 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s60
3448 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s30
3449 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
3450 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s29
3451 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
3452 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3453 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s59
3454 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s28
3455 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
3456 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s27
3457 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
3458 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3459 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s57
3460 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s26
3461 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s58
3462 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s24
3463 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
3464 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3465 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s55
3466 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s23
3467 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s56
3468 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s22
3469 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
3470 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3471 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s53
3472 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s21
3473 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s54
3474 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s20
3475 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
3476 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3477 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s52
3478 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s19
3479 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s25
3480 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
3481 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
3482 ; GFX6-NOHSA-NEXT:    s_endpgm
3484 ; GFX7-HSA-LABEL: constant_zextload_v64i8_to_v64i32:
3485 ; GFX7-HSA:       ; %bb.0:
3486 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[16:19], s[6:7], 0x0
3487 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3488 ; GFX7-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
3489 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3490 ; GFX7-HSA-NEXT:    s_lshr_b32 s18, s0, 24
3491 ; GFX7-HSA-NEXT:    s_bfe_u32 s19, s0, 0x80008
3492 ; GFX7-HSA-NEXT:    s_lshr_b32 s20, s1, 24
3493 ; GFX7-HSA-NEXT:    s_bfe_u32 s21, s1, 0x80008
3494 ; GFX7-HSA-NEXT:    s_lshr_b32 s22, s2, 24
3495 ; GFX7-HSA-NEXT:    s_bfe_u32 s23, s2, 0x80008
3496 ; GFX7-HSA-NEXT:    s_lshr_b32 s25, s3, 24
3497 ; GFX7-HSA-NEXT:    s_bfe_u32 s26, s3, 0x80008
3498 ; GFX7-HSA-NEXT:    s_lshr_b32 s28, s4, 24
3499 ; GFX7-HSA-NEXT:    s_bfe_u32 s29, s4, 0x80008
3500 ; GFX7-HSA-NEXT:    s_lshr_b32 s31, s5, 24
3501 ; GFX7-HSA-NEXT:    s_bfe_u32 s33, s5, 0x80008
3502 ; GFX7-HSA-NEXT:    s_lshr_b32 s35, s6, 24
3503 ; GFX7-HSA-NEXT:    s_bfe_u32 s36, s6, 0x80008
3504 ; GFX7-HSA-NEXT:    s_lshr_b32 s38, s7, 24
3505 ; GFX7-HSA-NEXT:    s_bfe_u32 s39, s7, 0x80008
3506 ; GFX7-HSA-NEXT:    s_lshr_b32 s41, s8, 24
3507 ; GFX7-HSA-NEXT:    s_bfe_u32 s42, s8, 0x80008
3508 ; GFX7-HSA-NEXT:    s_lshr_b32 s43, s9, 24
3509 ; GFX7-HSA-NEXT:    s_bfe_u32 s44, s9, 0x80008
3510 ; GFX7-HSA-NEXT:    s_lshr_b32 s45, s10, 24
3511 ; GFX7-HSA-NEXT:    s_bfe_u32 s46, s10, 0x80008
3512 ; GFX7-HSA-NEXT:    s_lshr_b32 s47, s11, 24
3513 ; GFX7-HSA-NEXT:    s_bfe_u32 s48, s11, 0x80008
3514 ; GFX7-HSA-NEXT:    s_lshr_b32 s49, s12, 24
3515 ; GFX7-HSA-NEXT:    s_bfe_u32 s50, s12, 0x80008
3516 ; GFX7-HSA-NEXT:    s_lshr_b32 s51, s13, 24
3517 ; GFX7-HSA-NEXT:    s_bfe_u32 s52, s13, 0x80008
3518 ; GFX7-HSA-NEXT:    s_lshr_b32 s53, s14, 24
3519 ; GFX7-HSA-NEXT:    s_bfe_u32 s54, s14, 0x80008
3520 ; GFX7-HSA-NEXT:    s_lshr_b32 s55, s15, 24
3521 ; GFX7-HSA-NEXT:    s_bfe_u32 s56, s15, 0x80008
3522 ; GFX7-HSA-NEXT:    s_and_b32 s24, s0, 0xff
3523 ; GFX7-HSA-NEXT:    s_bfe_u32 s0, s0, 0x80010
3524 ; GFX7-HSA-NEXT:    s_and_b32 s27, s1, 0xff
3525 ; GFX7-HSA-NEXT:    s_bfe_u32 s1, s1, 0x80010
3526 ; GFX7-HSA-NEXT:    s_and_b32 s30, s2, 0xff
3527 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
3528 ; GFX7-HSA-NEXT:    s_and_b32 s34, s3, 0xff
3529 ; GFX7-HSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
3530 ; GFX7-HSA-NEXT:    s_and_b32 s37, s4, 0xff
3531 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
3532 ; GFX7-HSA-NEXT:    s_and_b32 s40, s5, 0xff
3533 ; GFX7-HSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
3534 ; GFX7-HSA-NEXT:    s_and_b32 s57, s6, 0xff
3535 ; GFX7-HSA-NEXT:    s_bfe_u32 s58, s6, 0x80010
3536 ; GFX7-HSA-NEXT:    s_and_b32 s59, s7, 0xff
3537 ; GFX7-HSA-NEXT:    s_bfe_u32 s60, s7, 0x80010
3538 ; GFX7-HSA-NEXT:    s_and_b32 s61, s8, 0xff
3539 ; GFX7-HSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
3540 ; GFX7-HSA-NEXT:    s_and_b32 s62, s9, 0xff
3541 ; GFX7-HSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
3542 ; GFX7-HSA-NEXT:    s_and_b32 s63, s10, 0xff
3543 ; GFX7-HSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
3544 ; GFX7-HSA-NEXT:    s_and_b32 s64, s11, 0xff
3545 ; GFX7-HSA-NEXT:    s_bfe_u32 s11, s11, 0x80010
3546 ; GFX7-HSA-NEXT:    s_and_b32 s65, s12, 0xff
3547 ; GFX7-HSA-NEXT:    s_bfe_u32 s12, s12, 0x80010
3548 ; GFX7-HSA-NEXT:    s_and_b32 s66, s13, 0xff
3549 ; GFX7-HSA-NEXT:    s_bfe_u32 s13, s13, 0x80010
3550 ; GFX7-HSA-NEXT:    s_and_b32 s67, s14, 0xff
3551 ; GFX7-HSA-NEXT:    s_bfe_u32 s14, s14, 0x80010
3552 ; GFX7-HSA-NEXT:    s_and_b32 s68, s15, 0xff
3553 ; GFX7-HSA-NEXT:    s_bfe_u32 s15, s15, 0x80010
3554 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xf0
3555 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3556 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s7
3557 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s6
3558 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xe0
3559 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3560 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v25, s7
3561 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v24, s6
3562 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xd0
3563 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3564 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v27, s7
3565 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v26, s6
3566 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xc0
3567 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3568 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v29, s7
3569 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v28, s6
3570 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xb0
3571 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3572 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v31, s7
3573 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v30, s6
3574 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xa0
3575 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3576 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v33, s7
3577 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v32, s6
3578 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x90
3579 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s67
3580 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s54
3581 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s14
3582 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s53
3583 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3584 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
3585 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v25, s7
3586 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v24, s6
3587 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x80
3588 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3589 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v35, s7
3590 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s68
3591 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s56
3592 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s15
3593 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s55
3594 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s66
3595 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s52
3596 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v10, s13
3597 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v11, s51
3598 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v12, s65
3599 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v13, s50
3600 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v14, s12
3601 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v15, s49
3602 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v16, s64
3603 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v17, s48
3604 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v18, s11
3605 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v19, s47
3606 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v34, s6
3607 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s61
3608 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s42
3609 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s8
3610 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s41
3611 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x70
3612 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v20, s63
3613 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v21, s46
3614 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
3615 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s10
3616 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s62
3617 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s45
3618 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s44
3619 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
3620 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s9
3621 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
3622 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s43
3623 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
3624 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
3625 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[0:3]
3626 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[34:35], v[4:7]
3627 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3628 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
3629 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s59
3630 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s39
3631 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s60
3632 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s38
3633 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
3634 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x60
3635 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3636 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3637 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
3638 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s57
3639 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s36
3640 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s58
3641 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s35
3642 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
3643 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x50
3644 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3645 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3646 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
3647 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s40
3648 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s33
3649 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
3650 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s31
3651 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
3652 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3653 ; GFX7-HSA-NEXT:    s_nop 0
3654 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
3655 ; GFX7-HSA-NEXT:    s_add_u32 s4, s16, 64
3656 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s17, 0
3657 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
3658 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s37
3659 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s29
3660 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s28
3661 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
3662 ; GFX7-HSA-NEXT:    s_add_u32 s4, s16, 48
3663 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3664 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s17, 0
3665 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
3666 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s34
3667 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s26
3668 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
3669 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s25
3670 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
3671 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3672 ; GFX7-HSA-NEXT:    s_nop 0
3673 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
3674 ; GFX7-HSA-NEXT:    s_add_u32 s2, s16, 32
3675 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s17, 0
3676 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
3677 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
3678 ; GFX7-HSA-NEXT:    s_add_u32 s2, s16, 16
3679 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s30
3680 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s23
3681 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s22
3682 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s17, 0
3683 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3684 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
3685 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s27
3686 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s21
3687 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s1
3688 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s20
3689 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
3690 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3691 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s16
3692 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s24
3693 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s19
3694 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
3695 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s18
3696 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s17
3697 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3698 ; GFX7-HSA-NEXT:    s_endpgm
3700 ; GFX8-NOHSA-LABEL: constant_zextload_v64i8_to_v64i32:
3701 ; GFX8-NOHSA:       ; %bb.0:
3702 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[16:19], s[2:3], 0x24
3703 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3704 ; GFX8-NOHSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
3705 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3706 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s18, s0, 24
3707 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s19, s1, 24
3708 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s21, s2, 24
3709 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s23, s3, 24
3710 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s25, s4, 24
3711 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s27, s5, 24
3712 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s29, s6, 24
3713 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s33, s7, 24
3714 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s34, s8, 24
3715 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s35, s9, 24
3716 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s36, s10, 24
3717 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s37, s11, 24
3718 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s38, s12, 24
3719 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s39, s13, 24
3720 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s40, s14, 24
3721 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s30, s15, 24
3722 ; GFX8-NOHSA-NEXT:    s_and_b32 s20, s0, 0xff
3723 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s0
3724 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s0, s0, 0x80010
3725 ; GFX8-NOHSA-NEXT:    s_and_b32 s22, s1, 0xff
3726 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s1
3727 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s1, 0x80010
3728 ; GFX8-NOHSA-NEXT:    s_and_b32 s24, s2, 0xff
3729 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s2
3730 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
3731 ; GFX8-NOHSA-NEXT:    s_and_b32 s26, s3, 0xff
3732 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s3
3733 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
3734 ; GFX8-NOHSA-NEXT:    s_and_b32 s28, s4, 0xff
3735 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s4
3736 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
3737 ; GFX8-NOHSA-NEXT:    s_and_b32 s41, s5, 0xff
3738 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s42, s5, 0x80010
3739 ; GFX8-NOHSA-NEXT:    s_and_b32 s43, s6, 0xff
3740 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s44, s6, 0x80010
3741 ; GFX8-NOHSA-NEXT:    s_and_b32 s45, s7, 0xff
3742 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s46, s7, 0x80010
3743 ; GFX8-NOHSA-NEXT:    s_and_b32 s47, s8, 0xff
3744 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s48, s8, 0x80010
3745 ; GFX8-NOHSA-NEXT:    s_and_b32 s49, s9, 0xff
3746 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s50, s9, 0x80010
3747 ; GFX8-NOHSA-NEXT:    s_and_b32 s51, s10, 0xff
3748 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s52, s10, 0x80010
3749 ; GFX8-NOHSA-NEXT:    s_and_b32 s53, s11, 0xff
3750 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s54, s11, 0x80010
3751 ; GFX8-NOHSA-NEXT:    s_and_b32 s55, s12, 0xff
3752 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s56, s12, 0x80010
3753 ; GFX8-NOHSA-NEXT:    s_and_b32 s57, s13, 0xff
3754 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s58, s13, 0x80010
3755 ; GFX8-NOHSA-NEXT:    s_and_b32 s59, s14, 0xff
3756 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s60, s14, 0x80010
3757 ; GFX8-NOHSA-NEXT:    s_and_b32 s31, s15, 0xff
3758 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s15
3759 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s15, s15, 0x80010
3760 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s30
3761 ; GFX8-NOHSA-NEXT:    s_add_u32 s30, s16, 0xf0
3762 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s31
3763 ; GFX8-NOHSA-NEXT:    s_addc_u32 s31, s17, 0
3764 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s30
3765 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s15
3766 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s31
3767 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3768 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s28
3769 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s14
3770 ; GFX8-NOHSA-NEXT:    s_add_u32 s14, s16, 0xe0
3771 ; GFX8-NOHSA-NEXT:    s_addc_u32 s15, s17, 0
3772 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s14
3773 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s59
3774 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s60
3775 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s40
3776 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s15
3777 ; GFX8-NOHSA-NEXT:    s_add_u32 s14, s16, 0xd0
3778 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3779 ; GFX8-NOHSA-NEXT:    s_addc_u32 s15, s17, 0
3780 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s14
3781 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s13
3782 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s57
3783 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s58
3784 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s39
3785 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s15
3786 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3787 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s26
3788 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s12
3789 ; GFX8-NOHSA-NEXT:    s_add_u32 s12, s16, 0xc0
3790 ; GFX8-NOHSA-NEXT:    s_addc_u32 s13, s17, 0
3791 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s13
3792 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s12
3793 ; GFX8-NOHSA-NEXT:    s_add_u32 s12, s16, 0xb0
3794 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s55
3795 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s56
3796 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s38
3797 ; GFX8-NOHSA-NEXT:    s_addc_u32 s13, s17, 0
3798 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3799 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s13
3800 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s11
3801 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s53
3802 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s54
3803 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s37
3804 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s12
3805 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3806 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s24
3807 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s10
3808 ; GFX8-NOHSA-NEXT:    s_add_u32 s10, s16, 0xa0
3809 ; GFX8-NOHSA-NEXT:    s_addc_u32 s11, s17, 0
3810 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s11
3811 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s10
3812 ; GFX8-NOHSA-NEXT:    s_add_u32 s10, s16, 0x90
3813 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s51
3814 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s52
3815 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s36
3816 ; GFX8-NOHSA-NEXT:    s_addc_u32 s11, s17, 0
3817 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3818 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s11
3819 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s9
3820 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s49
3821 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s50
3822 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s35
3823 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s10
3824 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3825 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s22
3826 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s8
3827 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s16, 0x80
3828 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s17, 0
3829 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s9
3830 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s8
3831 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s16, 0x70
3832 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s47
3833 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s48
3834 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s34
3835 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s17, 0
3836 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3837 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s9
3838 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s7
3839 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s45
3840 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s46
3841 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s33
3842 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s8
3843 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3844 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s20
3845 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s6
3846 ; GFX8-NOHSA-NEXT:    s_add_u32 s6, s16, 0x60
3847 ; GFX8-NOHSA-NEXT:    s_addc_u32 s7, s17, 0
3848 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s7
3849 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s6
3850 ; GFX8-NOHSA-NEXT:    s_add_u32 s6, s16, 0x50
3851 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s43
3852 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s44
3853 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s29
3854 ; GFX8-NOHSA-NEXT:    s_addc_u32 s7, s17, 0
3855 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3856 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s7
3857 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s5
3858 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s41
3859 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s42
3860 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s27
3861 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s6
3862 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3863 ; GFX8-NOHSA-NEXT:    s_nop 0
3864 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
3865 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 64
3866 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
3867 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s5
3868 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s4
3869 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 48
3870 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s25
3871 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
3872 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
3873 ; GFX8-NOHSA-NEXT:    s_nop 0
3874 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
3875 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s3
3876 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s23
3877 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
3878 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
3879 ; GFX8-NOHSA-NEXT:    s_nop 0
3880 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
3881 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s16, 32
3882 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s17, 0
3883 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
3884 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s2
3885 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s16, 16
3886 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s21
3887 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s17, 0
3888 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
3889 ; GFX8-NOHSA-NEXT:    s_nop 0
3890 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s3
3891 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s1
3892 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s19
3893 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
3894 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
3895 ; GFX8-NOHSA-NEXT:    s_nop 0
3896 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s16
3897 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s0
3898 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
3899 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s17
3900 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3901 ; GFX8-NOHSA-NEXT:    s_endpgm
3903 ; EG-LABEL: constant_zextload_v64i8_to_v64i32:
3904 ; EG:       ; %bb.0:
3905 ; EG-NEXT:    ALU 0, @30, KC0[CB0:0-32], KC1[]
3906 ; EG-NEXT:    TEX 1 @22
3907 ; EG-NEXT:    ALU 59, @31, KC0[CB0:0-32], KC1[]
3908 ; EG-NEXT:    TEX 1 @26
3909 ; EG-NEXT:    ALU 88, @91, KC0[CB0:0-32], KC1[]
3910 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T50.X, 0
3911 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T49.X, 0
3912 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T47.X, 0
3913 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T32.X, 0
3914 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T44.X, 0
3915 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T42.X, 0
3916 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T40.X, 0
3917 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T33.X, 0
3918 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T37.X, 0
3919 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T35.X, 0
3920 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T31.X, 0
3921 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T22.X, 0
3922 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T29.X, 0
3923 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T27.X, 0
3924 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T25.X, 0
3925 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T23.X, 1
3926 ; EG-NEXT:    CF_END
3927 ; EG-NEXT:    Fetch clause starting at 22:
3928 ; EG-NEXT:     VTX_READ_128 T22.XYZW, T21.X, 16, #1
3929 ; EG-NEXT:     VTX_READ_128 T23.XYZW, T21.X, 0, #1
3930 ; EG-NEXT:    Fetch clause starting at 26:
3931 ; EG-NEXT:     VTX_READ_128 T32.XYZW, T21.X, 48, #1
3932 ; EG-NEXT:     VTX_READ_128 T33.XYZW, T21.X, 32, #1
3933 ; EG-NEXT:    ALU clause starting at 30:
3934 ; EG-NEXT:     MOV * T21.X, KC0[2].Z,
3935 ; EG-NEXT:    ALU clause starting at 31:
3936 ; EG-NEXT:     MOV * T0.W, literal.x,
3937 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
3938 ; EG-NEXT:     BFE_UINT * T19.Z, T23.X, literal.x, PV.W,
3939 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3940 ; EG-NEXT:     BFE_UINT T19.Y, T23.X, literal.x, T0.W,
3941 ; EG-NEXT:     BFE_UINT T20.Z, T23.Y, literal.y, T0.W,
3942 ; EG-NEXT:     LSHR * T19.W, T23.X, literal.z,
3943 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
3944 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
3945 ; EG-NEXT:     AND_INT T19.X, T23.X, literal.x,
3946 ; EG-NEXT:     BFE_UINT T20.Y, T23.Y, literal.y, T0.W,
3947 ; EG-NEXT:     LSHR * T23.X, KC0[2].Y, literal.z,
3948 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
3949 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
3950 ; EG-NEXT:     BFE_UINT T24.Z, T23.Z, literal.x, T0.W,
3951 ; EG-NEXT:     LSHR * T20.W, T23.Y, literal.y,
3952 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
3953 ; EG-NEXT:     AND_INT T20.X, T23.Y, literal.x,
3954 ; EG-NEXT:     BFE_UINT T24.Y, T23.Z, literal.y, T0.W,
3955 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
3956 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
3957 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3958 ; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
3959 ; EG-NEXT:     BFE_UINT T26.Z, T23.W, literal.y, T0.W,
3960 ; EG-NEXT:     LSHR T24.W, T23.Z, literal.z,
3961 ; EG-NEXT:     AND_INT * T24.X, T23.Z, literal.w,
3962 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3963 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3964 ; EG-NEXT:     BFE_UINT T26.Y, T23.W, literal.x, T0.W,
3965 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3966 ; EG-NEXT:    8(1.121039e-44), 32(4.484155e-44)
3967 ; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
3968 ; EG-NEXT:     BFE_UINT T28.Z, T22.X, literal.y, T0.W, BS:VEC_021/SCL_122
3969 ; EG-NEXT:     LSHR T26.W, T23.W, literal.z,
3970 ; EG-NEXT:     AND_INT * T26.X, T23.W, literal.w,
3971 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3972 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3973 ; EG-NEXT:     BFE_UINT T28.Y, T22.X, literal.x, T0.W,
3974 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3975 ; EG-NEXT:    8(1.121039e-44), 48(6.726233e-44)
3976 ; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
3977 ; EG-NEXT:     BFE_UINT T30.Z, T22.Y, literal.y, T0.W,
3978 ; EG-NEXT:     LSHR T28.W, T22.X, literal.z,
3979 ; EG-NEXT:     AND_INT * T28.X, T22.X, literal.w,
3980 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3981 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3982 ; EG-NEXT:     BFE_UINT T30.Y, T22.Y, literal.x, T0.W,
3983 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3984 ; EG-NEXT:    8(1.121039e-44), 64(8.968310e-44)
3985 ; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
3986 ; EG-NEXT:     LSHR T30.W, T22.Y, literal.y,
3987 ; EG-NEXT:     AND_INT * T30.X, T22.Y, literal.z,
3988 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
3989 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
3990 ; EG-NEXT:     BFE_UINT T21.Z, T22.Z, literal.x, T0.W,
3991 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3992 ; EG-NEXT:    16(2.242078e-44), 80(1.121039e-43)
3993 ; EG-NEXT:     LSHR T31.X, PV.W, literal.x,
3994 ; EG-NEXT:     BFE_UINT * T21.Y, T22.Z, literal.y, T0.W,
3995 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
3996 ; EG-NEXT:    ALU clause starting at 91:
3997 ; EG-NEXT:     BFE_UINT T34.Z, T22.W, literal.x, T0.W,
3998 ; EG-NEXT:     LSHR * T21.W, T22.Z, literal.y,
3999 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
4000 ; EG-NEXT:     AND_INT T21.X, T22.Z, literal.x,
4001 ; EG-NEXT:     BFE_UINT T34.Y, T22.W, literal.y, T0.W,
4002 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
4003 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
4004 ; EG-NEXT:    96(1.345247e-43), 0(0.000000e+00)
4005 ; EG-NEXT:     LSHR T35.X, PV.W, literal.x,
4006 ; EG-NEXT:     BFE_UINT T36.Z, T33.X, literal.y, T0.W, BS:VEC_021/SCL_122
4007 ; EG-NEXT:     LSHR T34.W, T22.W, literal.z,
4008 ; EG-NEXT:     AND_INT * T34.X, T22.W, literal.w,
4009 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4010 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
4011 ; EG-NEXT:     BFE_UINT T36.Y, T33.X, literal.x, T0.W,
4012 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
4013 ; EG-NEXT:    8(1.121039e-44), 112(1.569454e-43)
4014 ; EG-NEXT:     LSHR T37.X, PV.W, literal.x,
4015 ; EG-NEXT:     BFE_UINT T38.Z, T33.Y, literal.y, T0.W,
4016 ; EG-NEXT:     LSHR T36.W, T33.X, literal.z,
4017 ; EG-NEXT:     AND_INT * T36.X, T33.X, literal.w,
4018 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4019 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
4020 ; EG-NEXT:     BFE_UINT T38.Y, T33.Y, literal.x, T0.W,
4021 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
4022 ; EG-NEXT:    8(1.121039e-44), 128(1.793662e-43)
4023 ; EG-NEXT:     LSHR T33.X, PV.W, literal.x,
4024 ; EG-NEXT:     BFE_UINT T39.Z, T33.Z, literal.y, T0.W,
4025 ; EG-NEXT:     LSHR T38.W, T33.Y, literal.z,
4026 ; EG-NEXT:     AND_INT * T38.X, T33.Y, literal.w,
4027 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4028 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
4029 ; EG-NEXT:     BFE_UINT T39.Y, T33.Z, literal.x, T0.W,
4030 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
4031 ; EG-NEXT:    8(1.121039e-44), 144(2.017870e-43)
4032 ; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
4033 ; EG-NEXT:     BFE_UINT T41.Z, T33.W, literal.y, T0.W,
4034 ; EG-NEXT:     LSHR T39.W, T33.Z, literal.z,
4035 ; EG-NEXT:     AND_INT * T39.X, T33.Z, literal.w,
4036 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4037 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
4038 ; EG-NEXT:     BFE_UINT T41.Y, T33.W, literal.x, T0.W,
4039 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
4040 ; EG-NEXT:    8(1.121039e-44), 160(2.242078e-43)
4041 ; EG-NEXT:     LSHR T42.X, PV.W, literal.x,
4042 ; EG-NEXT:     BFE_UINT T43.Z, T32.X, literal.y, T0.W, BS:VEC_021/SCL_122
4043 ; EG-NEXT:     LSHR T41.W, T33.W, literal.z,
4044 ; EG-NEXT:     AND_INT * T41.X, T33.W, literal.w,
4045 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4046 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
4047 ; EG-NEXT:     BFE_UINT T43.Y, T32.X, literal.x, T0.W,
4048 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
4049 ; EG-NEXT:    8(1.121039e-44), 176(2.466285e-43)
4050 ; EG-NEXT:     LSHR T44.X, PV.W, literal.x,
4051 ; EG-NEXT:     BFE_UINT T45.Z, T32.Y, literal.y, T0.W,
4052 ; EG-NEXT:     LSHR T43.W, T32.X, literal.z,
4053 ; EG-NEXT:     AND_INT * T43.X, T32.X, literal.w,
4054 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4055 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
4056 ; EG-NEXT:     BFE_UINT T45.Y, T32.Y, literal.x, T0.W,
4057 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
4058 ; EG-NEXT:    8(1.121039e-44), 192(2.690493e-43)
4059 ; EG-NEXT:     LSHR T32.X, PV.W, literal.x,
4060 ; EG-NEXT:     BFE_UINT T46.Z, T32.Z, literal.y, T0.W,
4061 ; EG-NEXT:     LSHR T45.W, T32.Y, literal.z,
4062 ; EG-NEXT:     AND_INT * T45.X, T32.Y, literal.w,
4063 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4064 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
4065 ; EG-NEXT:     BFE_UINT T46.Y, T32.Z, literal.x, T0.W,
4066 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
4067 ; EG-NEXT:    8(1.121039e-44), 208(2.914701e-43)
4068 ; EG-NEXT:     LSHR T47.X, PV.W, literal.x,
4069 ; EG-NEXT:     BFE_UINT T48.Z, T32.W, literal.y, T0.W,
4070 ; EG-NEXT:     LSHR T46.W, T32.Z, literal.z,
4071 ; EG-NEXT:     AND_INT * T46.X, T32.Z, literal.w,
4072 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4073 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
4074 ; EG-NEXT:     BFE_UINT T48.Y, T32.W, literal.x, T0.W,
4075 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4076 ; EG-NEXT:    8(1.121039e-44), 224(3.138909e-43)
4077 ; EG-NEXT:     LSHR T49.X, PV.W, literal.x,
4078 ; EG-NEXT:     LSHR T48.W, T32.W, literal.y,
4079 ; EG-NEXT:     AND_INT * T48.X, T32.W, literal.z,
4080 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
4081 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
4082 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
4083 ; EG-NEXT:    240(3.363116e-43), 0(0.000000e+00)
4084 ; EG-NEXT:     LSHR * T50.X, PV.W, literal.x,
4085 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4087 ; GFX12-LABEL: constant_zextload_v64i8_to_v64i32:
4088 ; GFX12:       ; %bb.0:
4089 ; GFX12-NEXT:    s_load_b128 s[16:19], s[2:3], 0x24
4090 ; GFX12-NEXT:    s_wait_kmcnt 0x0
4091 ; GFX12-NEXT:    s_load_b512 s[0:15], s[18:19], 0x0
4092 ; GFX12-NEXT:    s_wait_kmcnt 0x0
4093 ; GFX12-NEXT:    v_lshrrev_b16 v0, 8, s15
4094 ; GFX12-NEXT:    v_lshrrev_b16 v9, 8, s2
4095 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s1
4096 ; GFX12-NEXT:    v_lshrrev_b16 v2, 8, s14
4097 ; GFX12-NEXT:    v_lshrrev_b16 v15, 8, s4
4098 ; GFX12-NEXT:    v_lshrrev_b16 v13, 8, s3
4099 ; GFX12-NEXT:    v_lshrrev_b16 v3, 8, s13
4100 ; GFX12-NEXT:    v_lshrrev_b16 v12, 8, s6
4101 ; GFX12-NEXT:    v_lshrrev_b16 v14, 8, s5
4102 ; GFX12-NEXT:    s_lshr_b32 s34, s15, 24
4103 ; GFX12-NEXT:    v_lshrrev_b16 v4, 8, s12
4104 ; GFX12-NEXT:    v_lshrrev_b16 v10, 8, s8
4105 ; GFX12-NEXT:    v_lshrrev_b16 v11, 8, s7
4106 ; GFX12-NEXT:    s_and_b32 s50, s15, 0xff
4107 ; GFX12-NEXT:    s_bfe_u32 s15, s15, 0x80010
4108 ; GFX12-NEXT:    s_lshr_b32 s33, s14, 24
4109 ; GFX12-NEXT:    s_and_b32 s49, s14, 0xff
4110 ; GFX12-NEXT:    s_bfe_u32 s14, s14, 0x80010
4111 ; GFX12-NEXT:    s_lshr_b32 s26, s8, 24
4112 ; GFX12-NEXT:    s_lshr_b32 s31, s13, 24
4113 ; GFX12-NEXT:    v_lshrrev_b16 v6, 8, s11
4114 ; GFX12-NEXT:    v_lshrrev_b16 v7, 8, s10
4115 ; GFX12-NEXT:    v_lshrrev_b16 v8, 8, s9
4116 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s0
4117 ; GFX12-NEXT:    v_dual_mov_b32 v60, 0 :: v_dual_and_b32 v5, 0xffff, v5
4118 ; GFX12-NEXT:    v_dual_mov_b32 v56, s50 :: v_dual_and_b32 v9, 0xffff, v9
4119 ; GFX12-NEXT:    v_mov_b32_e32 v58, s15
4120 ; GFX12-NEXT:    s_and_b32 s43, s8, 0xff
4121 ; GFX12-NEXT:    s_bfe_u32 s8, s8, 0x80010
4122 ; GFX12-NEXT:    s_and_b32 s48, s13, 0xff
4123 ; GFX12-NEXT:    s_bfe_u32 s13, s13, 0x80010
4124 ; GFX12-NEXT:    v_dual_mov_b32 v30, s43 :: v_dual_and_b32 v57, 0xffff, v0
4125 ; GFX12-NEXT:    v_dual_mov_b32 v59, s34 :: v_dual_mov_b32 v32, s8
4126 ; GFX12-NEXT:    s_lshr_b32 s27, s9, 24
4127 ; GFX12-NEXT:    s_lshr_b32 s30, s12, 24
4128 ; GFX12-NEXT:    v_dual_mov_b32 v52, s49 :: v_dual_and_b32 v13, 0xffff, v13
4129 ; GFX12-NEXT:    v_dual_mov_b32 v54, s14 :: v_dual_and_b32 v17, 0xffff, v15
4130 ; GFX12-NEXT:    s_and_b32 s42, s7, 0xff
4131 ; GFX12-NEXT:    s_and_b32 s44, s9, 0xff
4132 ; GFX12-NEXT:    s_bfe_u32 s9, s9, 0x80010
4133 ; GFX12-NEXT:    s_and_b32 s47, s12, 0xff
4134 ; GFX12-NEXT:    s_bfe_u32 s12, s12, 0x80010
4135 ; GFX12-NEXT:    v_dual_mov_b32 v36, s9 :: v_dual_and_b32 v53, 0xffff, v2
4136 ; GFX12-NEXT:    v_dual_mov_b32 v55, s33 :: v_dual_mov_b32 v26, s42
4137 ; GFX12-NEXT:    s_lshr_b32 s25, s7, 24
4138 ; GFX12-NEXT:    v_dual_mov_b32 v48, s48 :: v_dual_and_b32 v21, 0xffff, v14
4139 ; GFX12-NEXT:    v_dual_mov_b32 v50, s13 :: v_dual_and_b32 v23, 0xffff, v12
4140 ; GFX12-NEXT:    s_bfe_u32 s7, s7, 0x80010
4141 ; GFX12-NEXT:    v_dual_mov_b32 v34, s44 :: v_dual_and_b32 v49, 0xffff, v3
4142 ; GFX12-NEXT:    v_dual_mov_b32 v51, s31 :: v_dual_mov_b32 v28, s7
4143 ; GFX12-NEXT:    s_lshr_b32 s28, s10, 24
4144 ; GFX12-NEXT:    s_lshr_b32 s29, s11, 24
4145 ; GFX12-NEXT:    s_and_b32 s41, s6, 0xff
4146 ; GFX12-NEXT:    v_dual_mov_b32 v44, s47 :: v_dual_and_b32 v27, 0xffff, v11
4147 ; GFX12-NEXT:    v_dual_mov_b32 v46, s12 :: v_dual_and_b32 v31, 0xffff, v10
4148 ; GFX12-NEXT:    s_and_b32 s45, s10, 0xff
4149 ; GFX12-NEXT:    s_bfe_u32 s10, s10, 0x80010
4150 ; GFX12-NEXT:    s_and_b32 s46, s11, 0xff
4151 ; GFX12-NEXT:    v_dual_mov_b32 v40, s10 :: v_dual_and_b32 v45, 0xffff, v4
4152 ; GFX12-NEXT:    v_dual_mov_b32 v47, s30 :: v_dual_mov_b32 v22, s41
4153 ; GFX12-NEXT:    s_bfe_u32 s11, s11, 0x80010
4154 ; GFX12-NEXT:    s_lshr_b32 s24, s6, 24
4155 ; GFX12-NEXT:    v_and_b32_e32 v1, 0xffff, v1
4156 ; GFX12-NEXT:    s_bfe_u32 s6, s6, 0x80010
4157 ; GFX12-NEXT:    v_dual_mov_b32 v42, s46 :: v_dual_and_b32 v35, 0xffff, v8
4158 ; GFX12-NEXT:    v_and_b32_e32 v39, 0xffff, v7
4159 ; GFX12-NEXT:    v_dual_mov_b32 v38, s45 :: v_dual_and_b32 v43, 0xffff, v6
4160 ; GFX12-NEXT:    s_clause 0x3
4161 ; GFX12-NEXT:    global_store_b128 v60, v[56:59], s[16:17] offset:240
4162 ; GFX12-NEXT:    global_store_b128 v60, v[52:55], s[16:17] offset:224
4163 ; GFX12-NEXT:    global_store_b128 v60, v[48:51], s[16:17] offset:208
4164 ; GFX12-NEXT:    global_store_b128 v60, v[44:47], s[16:17] offset:192
4165 ; GFX12-NEXT:    v_dual_mov_b32 v44, s11 :: v_dual_mov_b32 v45, s29
4166 ; GFX12-NEXT:    v_mov_b32_e32 v24, s6
4167 ; GFX12-NEXT:    s_and_b32 s40, s5, 0xff
4168 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
4169 ; GFX12-NEXT:    v_dual_mov_b32 v41, s28 :: v_dual_mov_b32 v20, s40
4170 ; GFX12-NEXT:    s_lshr_b32 s23, s5, 24
4171 ; GFX12-NEXT:    s_bfe_u32 s5, s5, 0x80010
4172 ; GFX12-NEXT:    v_mov_b32_e32 v37, s27
4173 ; GFX12-NEXT:    s_lshr_b32 s22, s4, 24
4174 ; GFX12-NEXT:    s_and_b32 s38, s3, 0xff
4175 ; GFX12-NEXT:    s_and_b32 s39, s4, 0xff
4176 ; GFX12-NEXT:    s_bfe_u32 s4, s4, 0x80010
4177 ; GFX12-NEXT:    v_dual_mov_b32 v33, s26 :: v_dual_mov_b32 v16, s39
4178 ; GFX12-NEXT:    v_dual_mov_b32 v29, s25 :: v_dual_mov_b32 v18, s4
4179 ; GFX12-NEXT:    s_lshr_b32 s21, s3, 24
4180 ; GFX12-NEXT:    s_bfe_u32 s3, s3, 0x80010
4181 ; GFX12-NEXT:    v_dual_mov_b32 v25, s24 :: v_dual_mov_b32 v12, s38
4182 ; GFX12-NEXT:    s_clause 0x5
4183 ; GFX12-NEXT:    global_store_b128 v60, v[42:45], s[16:17] offset:176
4184 ; GFX12-NEXT:    global_store_b128 v60, v[38:41], s[16:17] offset:160
4185 ; GFX12-NEXT:    global_store_b128 v60, v[34:37], s[16:17] offset:144
4186 ; GFX12-NEXT:    global_store_b128 v60, v[30:33], s[16:17] offset:128
4187 ; GFX12-NEXT:    global_store_b128 v60, v[26:29], s[16:17] offset:112
4188 ; GFX12-NEXT:    global_store_b128 v60, v[22:25], s[16:17] offset:96
4189 ; GFX12-NEXT:    v_dual_mov_b32 v22, s5 :: v_dual_mov_b32 v23, s23
4190 ; GFX12-NEXT:    v_mov_b32_e32 v14, s3
4191 ; GFX12-NEXT:    s_lshr_b32 s20, s2, 24
4192 ; GFX12-NEXT:    s_and_b32 s37, s2, 0xff
4193 ; GFX12-NEXT:    s_bfe_u32 s2, s2, 0x80010
4194 ; GFX12-NEXT:    v_dual_mov_b32 v19, s22 :: v_dual_mov_b32 v8, s37
4195 ; GFX12-NEXT:    s_lshr_b32 s19, s1, 24
4196 ; GFX12-NEXT:    s_and_b32 s36, s1, 0xff
4197 ; GFX12-NEXT:    s_bfe_u32 s1, s1, 0x80010
4198 ; GFX12-NEXT:    v_dual_mov_b32 v15, s21 :: v_dual_mov_b32 v10, s2
4199 ; GFX12-NEXT:    s_lshr_b32 s18, s0, 24
4200 ; GFX12-NEXT:    s_and_b32 s35, s0, 0xff
4201 ; GFX12-NEXT:    s_bfe_u32 s0, s0, 0x80010
4202 ; GFX12-NEXT:    v_dual_mov_b32 v11, s20 :: v_dual_mov_b32 v4, s36
4203 ; GFX12-NEXT:    v_dual_mov_b32 v6, s1 :: v_dual_mov_b32 v7, s19
4204 ; GFX12-NEXT:    v_dual_mov_b32 v0, s35 :: v_dual_mov_b32 v3, s18
4205 ; GFX12-NEXT:    v_mov_b32_e32 v2, s0
4206 ; GFX12-NEXT:    s_clause 0x5
4207 ; GFX12-NEXT:    global_store_b128 v60, v[20:23], s[16:17] offset:80
4208 ; GFX12-NEXT:    global_store_b128 v60, v[16:19], s[16:17] offset:64
4209 ; GFX12-NEXT:    global_store_b128 v60, v[12:15], s[16:17] offset:48
4210 ; GFX12-NEXT:    global_store_b128 v60, v[8:11], s[16:17] offset:32
4211 ; GFX12-NEXT:    global_store_b128 v60, v[4:7], s[16:17] offset:16
4212 ; GFX12-NEXT:    global_store_b128 v60, v[0:3], s[16:17]
4213 ; GFX12-NEXT:    s_nop 0
4214 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
4215 ; GFX12-NEXT:    s_endpgm
4216   %load = load <64 x i8>, ptr addrspace(4) %in
4217   %ext = zext <64 x i8> %load to <64 x i32>
4218   store <64 x i32> %ext, ptr addrspace(1) %out
4219   ret void
4222 define amdgpu_kernel void @constant_sextload_v64i8_to_v64i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4223 ; GFX6-NOHSA-LABEL: constant_sextload_v64i8_to_v64i32:
4224 ; GFX6-NOHSA:       ; %bb.0:
4225 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[16:19], s[2:3], 0x9
4226 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4227 ; GFX6-NOHSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
4228 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4229 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s18, s0, 24
4230 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s19, s0, 0x80010
4231 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s20, s0, 0x80008
4232 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s21, s0
4233 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s22, s1, 24
4234 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s23, s1, 0x80010
4235 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s24, s1, 0x80008
4236 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s25, s1
4237 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s26, s2, 24
4238 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s27, s2, 0x80010
4239 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s28, s2, 0x80008
4240 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s29, s2
4241 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s30, s3, 24
4242 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s31, s3, 0x80010
4243 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s33, s3, 0x80008
4244 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s34, s3
4245 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s35, s4, 24
4246 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s36, s4, 0x80010
4247 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s37, s4, 0x80008
4248 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
4249 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s38, s5, 24
4250 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s39, s5, 0x80010
4251 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s40, s5, 0x80008
4252 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
4253 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s41, s6, 24
4254 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s42, s6, 0x80010
4255 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s43, s6, 0x80008
4256 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
4257 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s44, s7, 24
4258 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s45, s7, 0x80010
4259 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s46, s7, 0x80008
4260 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
4261 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s47, s8, 24
4262 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s48, s8, 0x80010
4263 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s49, s8, 0x80008
4264 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s8, s8
4265 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s50, s9, 24
4266 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s51, s9, 0x80010
4267 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s52, s9, 0x80008
4268 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s9, s9
4269 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s53, s10, 24
4270 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s54, s10, 0x80010
4271 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s55, s10, 0x80008
4272 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s10, s10
4273 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s56, s11, 24
4274 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s57, s11, 0x80010
4275 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s58, s11, 0x80008
4276 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s11, s11
4277 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s59, s12, 0x80010
4278 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s60, s12, 0x80008
4279 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s61, s12
4280 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s62, s13, 24
4281 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s63, s13, 0x80010
4282 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s64, s13, 0x80008
4283 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s65, s14, 24
4284 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s66, s14, 0x80010
4285 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s67, s14, 0x80008
4286 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s14, s14
4287 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s68, s15, 24
4288 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s69, s15, 0x80010
4289 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s70, s15, 0x80008
4290 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s15, s15
4291 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s13, s13
4292 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s12, s12, 24
4293 ; GFX6-NOHSA-NEXT:    s_mov_b32 s0, s16
4294 ; GFX6-NOHSA-NEXT:    s_mov_b32 s1, s17
4295 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
4296 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
4297 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s15
4298 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s70
4299 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s69
4300 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s68
4301 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s14
4302 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s67
4303 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s66
4304 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s65
4305 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s13
4306 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s64
4307 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s63
4308 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s62
4309 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s61
4310 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s60
4311 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s59
4312 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
4313 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:224
4314 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208
4315 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s12
4316 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192
4317 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(3)
4318 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
4319 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s58
4320 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s57
4321 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s56
4322 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
4323 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4324 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
4325 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s55
4326 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s54
4327 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s53
4328 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160
4329 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4330 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s9
4331 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s52
4332 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s51
4333 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s50
4334 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
4335 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4336 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
4337 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s49
4338 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s48
4339 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s47
4340 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
4341 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4342 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
4343 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s46
4344 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s45
4345 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s44
4346 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
4347 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4348 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
4349 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s43
4350 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s42
4351 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s41
4352 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
4353 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4354 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
4355 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s40
4356 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s39
4357 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s38
4358 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
4359 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4360 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
4361 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s37
4362 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s36
4363 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s35
4364 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
4365 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4366 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s34
4367 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s33
4368 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s31
4369 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s30
4370 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
4371 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4372 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s29
4373 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s28
4374 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s27
4375 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s26
4376 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
4377 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4378 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s25
4379 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s24
4380 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s23
4381 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s22
4382 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
4383 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4384 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s21
4385 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s20
4386 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
4387 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
4388 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
4389 ; GFX6-NOHSA-NEXT:    s_endpgm
4391 ; GFX7-HSA-LABEL: constant_sextload_v64i8_to_v64i32:
4392 ; GFX7-HSA:       ; %bb.0:
4393 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[16:19], s[6:7], 0x0
4394 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4395 ; GFX7-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
4396 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4397 ; GFX7-HSA-NEXT:    s_ashr_i32 s18, s0, 24
4398 ; GFX7-HSA-NEXT:    s_bfe_i32 s19, s0, 0x80010
4399 ; GFX7-HSA-NEXT:    s_bfe_i32 s20, s0, 0x80008
4400 ; GFX7-HSA-NEXT:    s_ashr_i32 s21, s1, 24
4401 ; GFX7-HSA-NEXT:    s_bfe_i32 s22, s1, 0x80010
4402 ; GFX7-HSA-NEXT:    s_bfe_i32 s23, s1, 0x80008
4403 ; GFX7-HSA-NEXT:    s_ashr_i32 s24, s2, 24
4404 ; GFX7-HSA-NEXT:    s_bfe_i32 s25, s2, 0x80010
4405 ; GFX7-HSA-NEXT:    s_bfe_i32 s26, s2, 0x80008
4406 ; GFX7-HSA-NEXT:    s_ashr_i32 s27, s3, 24
4407 ; GFX7-HSA-NEXT:    s_bfe_i32 s28, s3, 0x80010
4408 ; GFX7-HSA-NEXT:    s_bfe_i32 s29, s3, 0x80008
4409 ; GFX7-HSA-NEXT:    s_ashr_i32 s30, s4, 24
4410 ; GFX7-HSA-NEXT:    s_bfe_i32 s31, s4, 0x80010
4411 ; GFX7-HSA-NEXT:    s_bfe_i32 s33, s4, 0x80008
4412 ; GFX7-HSA-NEXT:    s_ashr_i32 s34, s5, 24
4413 ; GFX7-HSA-NEXT:    s_bfe_i32 s35, s5, 0x80010
4414 ; GFX7-HSA-NEXT:    s_bfe_i32 s36, s5, 0x80008
4415 ; GFX7-HSA-NEXT:    s_ashr_i32 s37, s6, 24
4416 ; GFX7-HSA-NEXT:    s_bfe_i32 s38, s6, 0x80010
4417 ; GFX7-HSA-NEXT:    s_bfe_i32 s39, s6, 0x80008
4418 ; GFX7-HSA-NEXT:    s_ashr_i32 s40, s7, 24
4419 ; GFX7-HSA-NEXT:    s_bfe_i32 s41, s7, 0x80010
4420 ; GFX7-HSA-NEXT:    s_bfe_i32 s42, s7, 0x80008
4421 ; GFX7-HSA-NEXT:    s_ashr_i32 s43, s8, 24
4422 ; GFX7-HSA-NEXT:    s_bfe_i32 s44, s8, 0x80010
4423 ; GFX7-HSA-NEXT:    s_bfe_i32 s45, s8, 0x80008
4424 ; GFX7-HSA-NEXT:    s_ashr_i32 s47, s9, 24
4425 ; GFX7-HSA-NEXT:    s_bfe_i32 s48, s9, 0x80010
4426 ; GFX7-HSA-NEXT:    s_bfe_i32 s49, s9, 0x80008
4427 ; GFX7-HSA-NEXT:    s_ashr_i32 s51, s10, 24
4428 ; GFX7-HSA-NEXT:    s_bfe_i32 s52, s10, 0x80010
4429 ; GFX7-HSA-NEXT:    s_bfe_i32 s53, s10, 0x80008
4430 ; GFX7-HSA-NEXT:    s_ashr_i32 s54, s11, 24
4431 ; GFX7-HSA-NEXT:    s_bfe_i32 s55, s11, 0x80010
4432 ; GFX7-HSA-NEXT:    s_bfe_i32 s56, s11, 0x80008
4433 ; GFX7-HSA-NEXT:    s_ashr_i32 s57, s12, 24
4434 ; GFX7-HSA-NEXT:    s_bfe_i32 s58, s12, 0x80010
4435 ; GFX7-HSA-NEXT:    s_bfe_i32 s59, s12, 0x80008
4436 ; GFX7-HSA-NEXT:    s_ashr_i32 s60, s13, 24
4437 ; GFX7-HSA-NEXT:    s_bfe_i32 s61, s13, 0x80010
4438 ; GFX7-HSA-NEXT:    s_bfe_i32 s62, s13, 0x80008
4439 ; GFX7-HSA-NEXT:    s_ashr_i32 s63, s14, 24
4440 ; GFX7-HSA-NEXT:    s_bfe_i32 s64, s14, 0x80010
4441 ; GFX7-HSA-NEXT:    s_bfe_i32 s65, s14, 0x80008
4442 ; GFX7-HSA-NEXT:    s_ashr_i32 s66, s15, 24
4443 ; GFX7-HSA-NEXT:    s_bfe_i32 s67, s15, 0x80010
4444 ; GFX7-HSA-NEXT:    s_bfe_i32 s68, s15, 0x80008
4445 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s46, s8
4446 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xf0
4447 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s50, s9
4448 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
4449 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s9
4450 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s8
4451 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xe0
4452 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
4453 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v25, s9
4454 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v24, s8
4455 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xd0
4456 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
4457 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v27, s9
4458 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v26, s8
4459 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xc0
4460 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
4461 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v29, s9
4462 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v28, s8
4463 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xb0
4464 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
4465 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v31, s9
4466 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v30, s8
4467 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xa0
4468 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
4469 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v33, s9
4470 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s14, s14
4471 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v32, s8
4472 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0x90
4473 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s14
4474 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s65
4475 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s64
4476 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s63
4477 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
4478 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
4479 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v25, s9
4480 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v24, s8
4481 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0x80
4482 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
4483 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s11, s11
4484 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s12, s12
4485 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s13, s13
4486 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s15, s15
4487 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v35, s9
4488 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s10, s10
4489 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s15
4490 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s68
4491 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s67
4492 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s66
4493 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s13
4494 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s62
4495 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v10, s61
4496 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v11, s60
4497 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v12, s12
4498 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v13, s59
4499 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v14, s58
4500 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v15, s57
4501 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v16, s11
4502 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v17, s56
4503 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v18, s55
4504 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v19, s54
4505 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v34, s8
4506 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s46
4507 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s45
4508 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s44
4509 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s43
4510 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0x70
4511 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s7
4512 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v20, s10
4513 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v21, s53
4514 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
4515 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s52
4516 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s50
4517 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s51
4518 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s49
4519 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
4520 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s48
4521 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
4522 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s47
4523 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
4524 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
4525 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[0:3]
4526 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[34:35], v[4:7]
4527 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
4528 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s8
4529 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s6, s6
4530 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
4531 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s42
4532 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s41
4533 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s40
4534 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s9
4535 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4536 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s5, s5
4537 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
4538 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x60
4539 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
4540 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
4541 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s39
4542 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s38
4543 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s37
4544 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
4545 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x50
4546 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4547 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
4548 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
4549 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s4, s4
4550 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
4551 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s36
4552 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s35
4553 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s34
4554 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
4555 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4556 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s3, s3
4557 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
4558 ; GFX7-HSA-NEXT:    s_add_u32 s4, s16, 64
4559 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s17, 0
4560 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
4561 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s33
4562 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s31
4563 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s30
4564 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
4565 ; GFX7-HSA-NEXT:    s_add_u32 s4, s16, 48
4566 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4567 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s17, 0
4568 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
4569 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s2, s2
4570 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
4571 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s29
4572 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s28
4573 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s27
4574 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
4575 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4576 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s1
4577 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
4578 ; GFX7-HSA-NEXT:    s_add_u32 s2, s16, 32
4579 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s17, 0
4580 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
4581 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
4582 ; GFX7-HSA-NEXT:    s_add_u32 s2, s16, 16
4583 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s26
4584 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s25
4585 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s24
4586 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s17, 0
4587 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4588 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
4589 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s1
4590 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s23
4591 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s22
4592 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s21
4593 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
4594 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s0, s0
4595 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4596 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s16
4597 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
4598 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s20
4599 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s19
4600 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s18
4601 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s17
4602 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4603 ; GFX7-HSA-NEXT:    s_endpgm
4605 ; GFX8-NOHSA-LABEL: constant_sextload_v64i8_to_v64i32:
4606 ; GFX8-NOHSA:       ; %bb.0:
4607 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[16:19], s[2:3], 0x24
4608 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4609 ; GFX8-NOHSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
4610 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4611 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v18, 8, s14
4612 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s18, s0, 24
4613 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s19, s0, 0x80010
4614 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s20, s1, 24
4615 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s21, s1, 0x80010
4616 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s22, s2, 24
4617 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s23, s2, 0x80010
4618 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s24, s3, 24
4619 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s25, s3, 0x80010
4620 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s26, s4, 24
4621 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s27, s4, 0x80010
4622 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s28, s5, 24
4623 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s29, s5, 0x80010
4624 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s30, s6, 24
4625 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s31, s6, 0x80010
4626 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s33, s7, 24
4627 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s34, s7, 0x80010
4628 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s35, s8, 24
4629 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s36, s8, 0x80010
4630 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s37, s9, 24
4631 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s38, s9, 0x80010
4632 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s39, s10, 24
4633 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s40, s10, 0x80010
4634 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s41, s11, 24
4635 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s42, s11, 0x80010
4636 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s43, s12, 24
4637 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s44, s12, 0x80010
4638 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s45, s13, 24
4639 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s46, s13, 0x80010
4640 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s47, s14, 24
4641 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s48, s14, 0x80010
4642 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s49, s14
4643 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s14, s15, 24
4644 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s50, s15, 0x80010
4645 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s15
4646 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s15, s15
4647 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s14
4648 ; GFX8-NOHSA-NEXT:    s_add_u32 s14, s16, 0xf0
4649 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s15
4650 ; GFX8-NOHSA-NEXT:    s_addc_u32 s15, s17, 0
4651 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s15
4652 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s14
4653 ; GFX8-NOHSA-NEXT:    s_add_u32 s14, s16, 0xe0
4654 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v13, v5, 0, 8
4655 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s50
4656 ; GFX8-NOHSA-NEXT:    s_addc_u32 s15, s17, 0
4657 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
4658 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s15
4659 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v20, 8, s12
4660 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v13, v18, 0, 8
4661 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s49
4662 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s48
4663 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s47
4664 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s14
4665 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s14, s12
4666 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s12, s13
4667 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
4668 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v19, 8, s13
4669 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s12
4670 ; GFX8-NOHSA-NEXT:    s_add_u32 s12, s16, 0xd0
4671 ; GFX8-NOHSA-NEXT:    s_addc_u32 s13, s17, 0
4672 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s13
4673 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s12
4674 ; GFX8-NOHSA-NEXT:    s_add_u32 s12, s16, 0xc0
4675 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v13, v19, 0, 8
4676 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s46
4677 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s45
4678 ; GFX8-NOHSA-NEXT:    s_addc_u32 s13, s17, 0
4679 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
4680 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s13
4681 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s12
4682 ; GFX8-NOHSA-NEXT:    s_add_u32 s12, s16, 0xb0
4683 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v13, v20, 0, 8
4684 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s14
4685 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s44
4686 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s43
4687 ; GFX8-NOHSA-NEXT:    s_addc_u32 s13, s17, 0
4688 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s11
4689 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s11, s11
4690 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
4691 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s13
4692 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s8
4693 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s4
4694 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v11, 0, 8
4695 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s11
4696 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s42
4697 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s41
4698 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s12
4699 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s11, s4
4700 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s4, s8
4701 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s8, s10
4702 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[15:16], v[11:14]
4703 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v8, 8, s9
4704 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s8
4705 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s16, 0xa0
4706 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s12, s9
4707 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s17, 0
4708 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s10
4709 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s9
4710 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v9, 0, 8
4711 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s40
4712 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s39
4713 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s8
4714 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s16, 0x90
4715 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[15:16], v[11:14]
4716 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s17, 0
4717 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v8, 0, 8
4718 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s8
4719 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s12
4720 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s38
4721 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s37
4722 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s9
4723 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s16, 0x80
4724 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[11:14]
4725 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s17, 0
4726 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v7, 0, 8
4727 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s8
4728 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s4
4729 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s36
4730 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s35
4731 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s9
4732 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s4, s7
4733 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[7:8], v[11:14]
4734 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s5
4735 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s4
4736 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 0x70
4737 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s8, s5
4738 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
4739 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s5
4740 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s7
4741 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
4742 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 0x60
4743 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v4, 0, 8
4744 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s34
4745 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s33
4746 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
4747 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[11:14]
4748 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s5
4749 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s6
4750 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
4751 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
4752 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 0x50
4753 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v2, 0, 8
4754 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s6
4755 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s31
4756 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s30
4757 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
4758 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[11:14]
4759 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s5
4760 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
4761 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 64
4762 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v0, 0, 8
4763 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s8
4764 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s29
4765 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s28
4766 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
4767 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[11:14]
4768 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v21, 8, s2
4769 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s5
4770 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s4
4771 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 48
4772 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
4773 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v7, v6, 0, 8
4774 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s11
4775 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s27
4776 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s26
4777 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
4778 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v10, 8, s3
4779 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s3, s3
4780 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[11:12], v[6:9]
4781 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
4782 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s5
4783 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s16, 32
4784 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v10, v10, 0, 8
4785 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
4786 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s25
4787 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s24
4788 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s4
4789 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s17, 0
4790 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[9:12]
4791 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v5, v21, 0, 8
4792 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
4793 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s2
4794 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s16, 16
4795 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s23
4796 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s22
4797 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s17, 0
4798 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s1
4799 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s1, s1
4800 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
4801 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v3, v3, 0, 8
4802 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s3
4803 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s1
4804 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s21
4805 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s20
4806 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
4807 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s0
4808 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s0, s0
4809 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
4810 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v1, 0, 8
4811 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s16
4812 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
4813 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
4814 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
4815 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s17
4816 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4817 ; GFX8-NOHSA-NEXT:    s_endpgm
4819 ; EG-LABEL: constant_sextload_v64i8_to_v64i32:
4820 ; EG:       ; %bb.0:
4821 ; EG-NEXT:    ALU 0, @32, KC0[CB0:0-32], KC1[]
4822 ; EG-NEXT:    TEX 1 @24
4823 ; EG-NEXT:    ALU 40, @33, KC0[CB0:0-32], KC1[]
4824 ; EG-NEXT:    TEX 1 @28
4825 ; EG-NEXT:    ALU 76, @74, KC0[CB0:0-32], KC1[]
4826 ; EG-NEXT:    ALU 72, @151, KC0[CB0:0-32], KC1[]
4827 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T50.X, 0
4828 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T49.X, 0
4829 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T19.X, 0
4830 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T35.X, 0
4831 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T34.X, 0
4832 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T33.X, 0
4833 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T32.X, 0
4834 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T30.X, 0
4835 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T29.X, 0
4836 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T28.X, 0
4837 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T27.X, 0
4838 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T26.X, 0
4839 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T25.X, 0
4840 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T24.X, 0
4841 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T23.X, 0
4842 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T22.X, 1
4843 ; EG-NEXT:    CF_END
4844 ; EG-NEXT:    PAD
4845 ; EG-NEXT:    Fetch clause starting at 24:
4846 ; EG-NEXT:     VTX_READ_128 T20.XYZW, T21.X, 32, #1
4847 ; EG-NEXT:     VTX_READ_128 T19.XYZW, T21.X, 48, #1
4848 ; EG-NEXT:    Fetch clause starting at 28:
4849 ; EG-NEXT:     VTX_READ_128 T31.XYZW, T21.X, 0, #1
4850 ; EG-NEXT:     VTX_READ_128 T21.XYZW, T21.X, 16, #1
4851 ; EG-NEXT:    ALU clause starting at 32:
4852 ; EG-NEXT:     MOV * T21.X, KC0[2].Z,
4853 ; EG-NEXT:    ALU clause starting at 33:
4854 ; EG-NEXT:     LSHR T22.X, KC0[2].Y, literal.x,
4855 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4856 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4857 ; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
4858 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4859 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
4860 ; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
4861 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4862 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
4863 ; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
4864 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4865 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
4866 ; EG-NEXT:     LSHR T26.X, PV.W, literal.x,
4867 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4868 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
4869 ; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
4870 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4871 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
4872 ; EG-NEXT:     LSHR T28.X, PV.W, literal.x,
4873 ; EG-NEXT:     LSHR T0.Y, T19.W, literal.y,
4874 ; EG-NEXT:     LSHR T0.Z, T19.Z, literal.z,
4875 ; EG-NEXT:     LSHR * T0.W, T19.W, literal.w,
4876 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4877 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
4878 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.x,
4879 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
4880 ; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
4881 ; EG-NEXT:     LSHR T1.Y, T19.Z, literal.y,
4882 ; EG-NEXT:     LSHR T1.Z, T19.Y, literal.z,
4883 ; EG-NEXT:     LSHR * T1.W, T19.Z, literal.w,
4884 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4885 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
4886 ; EG-NEXT:     ADD_INT * T2.W, KC0[2].Y, literal.x,
4887 ; EG-NEXT:    128(1.793662e-43), 0(0.000000e+00)
4888 ; EG-NEXT:     LSHR T30.X, PV.W, literal.x,
4889 ; EG-NEXT:     LSHR T2.Y, T19.Y, literal.y,
4890 ; EG-NEXT:     LSHR T2.Z, T19.Y, literal.z,
4891 ; EG-NEXT:     LSHR T2.W, T19.X, literal.y,
4892 ; EG-NEXT:     LSHR * T3.W, T19.X, literal.z,
4893 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4894 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
4895 ; EG-NEXT:    ALU clause starting at 74:
4896 ; EG-NEXT:     LSHR T3.Y, T20.W, literal.x,
4897 ; EG-NEXT:     LSHR T3.Z, T20.W, literal.y,
4898 ; EG-NEXT:     LSHR T4.W, T20.Z, literal.x,
4899 ; EG-NEXT:     ADD_INT * T5.W, KC0[2].Y, literal.z,
4900 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
4901 ; EG-NEXT:    144(2.017870e-43), 0(0.000000e+00)
4902 ; EG-NEXT:     LSHR T32.X, PS, literal.x,
4903 ; EG-NEXT:     LSHR T4.Y, T20.Z, literal.y,
4904 ; EG-NEXT:     LSHR T4.Z, T20.Y, literal.z,
4905 ; EG-NEXT:     LSHR T5.W, T20.Y, literal.y,
4906 ; EG-NEXT:     ADD_INT * T6.W, KC0[2].Y, literal.w,
4907 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
4908 ; EG-NEXT:    16(2.242078e-44), 160(2.242078e-43)
4909 ; EG-NEXT:     LSHR T33.X, PS, literal.x,
4910 ; EG-NEXT:     LSHR T5.Y, T20.X, literal.y,
4911 ; EG-NEXT:     LSHR T5.Z, T20.X, literal.z,
4912 ; EG-NEXT:     LSHR T6.W, T21.W, literal.y,
4913 ; EG-NEXT:     ADD_INT * T7.W, KC0[2].Y, literal.w,
4914 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4915 ; EG-NEXT:    24(3.363116e-44), 176(2.466285e-43)
4916 ; EG-NEXT:     LSHR T34.X, PS, literal.x,
4917 ; EG-NEXT:     LSHR T6.Y, T21.W, literal.y,
4918 ; EG-NEXT:     LSHR T6.Z, T21.Z, literal.z,
4919 ; EG-NEXT:     LSHR T7.W, T21.Z, literal.y,
4920 ; EG-NEXT:     ADD_INT * T8.W, KC0[2].Y, literal.w,
4921 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
4922 ; EG-NEXT:    16(2.242078e-44), 192(2.690493e-43)
4923 ; EG-NEXT:     LSHR T35.X, PS, literal.x,
4924 ; EG-NEXT:     LSHR T7.Y, T21.Y, literal.y,
4925 ; EG-NEXT:     LSHR T7.Z, T21.Y, literal.z,
4926 ; EG-NEXT:     LSHR T8.W, T21.X, literal.y,
4927 ; EG-NEXT:     LSHR * T9.W, T21.X, literal.z,
4928 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4929 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
4930 ; EG-NEXT:     BFE_INT T36.X, T31.X, 0.0, literal.x,
4931 ; EG-NEXT:     LSHR T8.Y, T31.W, literal.y,
4932 ; EG-NEXT:     LSHR T8.Z, T31.W, literal.z,
4933 ; EG-NEXT:     LSHR T10.W, T31.Z, literal.y,
4934 ; EG-NEXT:     LSHR * T11.W, T31.X, literal.z,
4935 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
4936 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
4937 ; EG-NEXT:     BFE_INT T37.X, T31.Y, 0.0, literal.x,
4938 ; EG-NEXT:     LSHR T9.Y, T31.Z, literal.y,
4939 ; EG-NEXT:     LSHR T9.Z, T31.Y, literal.y,
4940 ; EG-NEXT:     BFE_INT T36.W, PS, 0.0, literal.x,
4941 ; EG-NEXT:     LSHR * T11.W, T31.X, literal.z,
4942 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
4943 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4944 ; EG-NEXT:     BFE_INT T38.X, T31.Z, 0.0, literal.x,
4945 ; EG-NEXT:     LSHR T10.Y, T31.Y, literal.y,
4946 ; EG-NEXT:     BFE_INT T36.Z, PS, 0.0, literal.x,
4947 ; EG-NEXT:     BFE_INT T37.W, PV.Z, 0.0, literal.x,
4948 ; EG-NEXT:     LSHR * T11.W, T31.X, literal.x,
4949 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
4950 ; EG-NEXT:     BFE_INT T39.X, T31.W, 0.0, literal.x,
4951 ; EG-NEXT:     BFE_INT T36.Y, PS, 0.0, literal.x,
4952 ; EG-NEXT:     BFE_INT T37.Z, PV.Y, 0.0, literal.x,
4953 ; EG-NEXT:     BFE_INT T38.W, T9.Y, 0.0, literal.x,
4954 ; EG-NEXT:     LSHR * T11.W, T31.Y, literal.x,
4955 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4956 ; EG-NEXT:     BFE_INT T40.X, T21.X, 0.0, literal.x,
4957 ; EG-NEXT:     BFE_INT T37.Y, PS, 0.0, literal.x,
4958 ; EG-NEXT:     BFE_INT T38.Z, T10.W, 0.0, literal.x,
4959 ; EG-NEXT:     BFE_INT T39.W, T8.Z, 0.0, literal.x,
4960 ; EG-NEXT:     LSHR * T10.W, T31.Z, literal.x,
4961 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4962 ; EG-NEXT:     BFE_INT T31.X, T21.Y, 0.0, literal.x,
4963 ; EG-NEXT:     BFE_INT T38.Y, PS, 0.0, literal.x,
4964 ; EG-NEXT:     BFE_INT T39.Z, T8.Y, 0.0, literal.x, BS:VEC_120/SCL_212
4965 ; EG-NEXT:     BFE_INT T40.W, T9.W, 0.0, literal.x,
4966 ; EG-NEXT:     LSHR * T9.W, T31.W, literal.x,
4967 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4968 ; EG-NEXT:     BFE_INT T41.X, T21.Z, 0.0, literal.x,
4969 ; EG-NEXT:     BFE_INT T39.Y, PS, 0.0, literal.x,
4970 ; EG-NEXT:     BFE_INT T40.Z, T8.W, 0.0, literal.x,
4971 ; EG-NEXT:     BFE_INT * T31.W, T7.Z, 0.0, literal.x, BS:VEC_120/SCL_212
4972 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4973 ; EG-NEXT:    ALU clause starting at 151:
4974 ; EG-NEXT:     LSHR * T8.W, T21.X, literal.x,
4975 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4976 ; EG-NEXT:     BFE_INT T42.X, T21.W, 0.0, literal.x,
4977 ; EG-NEXT:     BFE_INT T40.Y, PV.W, 0.0, literal.x,
4978 ; EG-NEXT:     BFE_INT T31.Z, T7.Y, 0.0, literal.x,
4979 ; EG-NEXT:     BFE_INT T41.W, T7.W, 0.0, literal.x, BS:VEC_120/SCL_212
4980 ; EG-NEXT:     LSHR * T7.W, T21.Y, literal.x,
4981 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4982 ; EG-NEXT:     BFE_INT T43.X, T20.X, 0.0, literal.x,
4983 ; EG-NEXT:     BFE_INT T31.Y, PS, 0.0, literal.x,
4984 ; EG-NEXT:     BFE_INT T41.Z, T6.Z, 0.0, literal.x,
4985 ; EG-NEXT:     BFE_INT T42.W, T6.Y, 0.0, literal.x,
4986 ; EG-NEXT:     LSHR * T7.W, T21.Z, literal.x,
4987 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4988 ; EG-NEXT:     BFE_INT T21.X, T20.Y, 0.0, literal.x,
4989 ; EG-NEXT:     BFE_INT T41.Y, PS, 0.0, literal.x,
4990 ; EG-NEXT:     BFE_INT T42.Z, T6.W, 0.0, literal.x,
4991 ; EG-NEXT:     BFE_INT T43.W, T5.Z, 0.0, literal.x,
4992 ; EG-NEXT:     LSHR * T6.W, T21.W, literal.x,
4993 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4994 ; EG-NEXT:     BFE_INT T44.X, T20.Z, 0.0, literal.x,
4995 ; EG-NEXT:     BFE_INT T42.Y, PS, 0.0, literal.x,
4996 ; EG-NEXT:     BFE_INT T43.Z, T5.Y, 0.0, literal.x,
4997 ; EG-NEXT:     BFE_INT T21.W, T5.W, 0.0, literal.x,
4998 ; EG-NEXT:     LSHR * T5.W, T20.X, literal.x,
4999 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5000 ; EG-NEXT:     BFE_INT T45.X, T20.W, 0.0, literal.x,
5001 ; EG-NEXT:     BFE_INT T43.Y, PS, 0.0, literal.x,
5002 ; EG-NEXT:     BFE_INT T21.Z, T4.Z, 0.0, literal.x,
5003 ; EG-NEXT:     BFE_INT T44.W, T4.Y, 0.0, literal.x,
5004 ; EG-NEXT:     LSHR * T5.W, T20.Y, literal.x,
5005 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5006 ; EG-NEXT:     BFE_INT T46.X, T19.X, 0.0, literal.x,
5007 ; EG-NEXT:     BFE_INT T21.Y, PS, 0.0, literal.x,
5008 ; EG-NEXT:     BFE_INT T44.Z, T4.W, 0.0, literal.x,
5009 ; EG-NEXT:     BFE_INT T45.W, T3.Z, 0.0, literal.x,
5010 ; EG-NEXT:     LSHR * T4.W, T20.Z, literal.x,
5011 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5012 ; EG-NEXT:     BFE_INT T20.X, T19.Y, 0.0, literal.x,
5013 ; EG-NEXT:     BFE_INT T44.Y, PS, 0.0, literal.x,
5014 ; EG-NEXT:     BFE_INT T45.Z, T3.Y, 0.0, literal.x, BS:VEC_120/SCL_212
5015 ; EG-NEXT:     BFE_INT T46.W, T3.W, 0.0, literal.x,
5016 ; EG-NEXT:     LSHR * T3.W, T20.W, literal.x,
5017 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5018 ; EG-NEXT:     BFE_INT T47.X, T19.Z, 0.0, literal.x,
5019 ; EG-NEXT:     BFE_INT T45.Y, PS, 0.0, literal.x,
5020 ; EG-NEXT:     BFE_INT T46.Z, T2.W, 0.0, literal.x,
5021 ; EG-NEXT:     BFE_INT T20.W, T2.Z, 0.0, literal.x, BS:VEC_120/SCL_212
5022 ; EG-NEXT:     LSHR * T2.W, T19.X, literal.x,
5023 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5024 ; EG-NEXT:     BFE_INT T48.X, T19.W, 0.0, literal.x,
5025 ; EG-NEXT:     BFE_INT T46.Y, PS, 0.0, literal.x,
5026 ; EG-NEXT:     BFE_INT T20.Z, T2.Y, 0.0, literal.x,
5027 ; EG-NEXT:     BFE_INT T47.W, T1.W, 0.0, literal.x, BS:VEC_120/SCL_212
5028 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
5029 ; EG-NEXT:    8(1.121039e-44), 208(2.914701e-43)
5030 ; EG-NEXT:     LSHR T19.X, PS, literal.x,
5031 ; EG-NEXT:     BFE_INT T20.Y, T1.Z, 0.0, literal.y,
5032 ; EG-NEXT:     BFE_INT T47.Z, T1.Y, 0.0, literal.y,
5033 ; EG-NEXT:     BFE_INT T48.W, T0.W, 0.0, literal.y,
5034 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
5035 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
5036 ; EG-NEXT:    224(3.138909e-43), 0(0.000000e+00)
5037 ; EG-NEXT:     LSHR T49.X, PS, literal.x,
5038 ; EG-NEXT:     BFE_INT T47.Y, T0.Z, 0.0, literal.y,
5039 ; EG-NEXT:     BFE_INT T48.Z, T0.Y, 0.0, literal.y,
5040 ; EG-NEXT:     LSHR T0.W, T19.W, literal.y,
5041 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5042 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
5043 ; EG-NEXT:    240(3.363116e-43), 0(0.000000e+00)
5044 ; EG-NEXT:     LSHR T50.X, PS, literal.x,
5045 ; EG-NEXT:     BFE_INT * T48.Y, PV.W, 0.0, literal.y,
5046 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
5048 ; GFX12-LABEL: constant_sextload_v64i8_to_v64i32:
5049 ; GFX12:       ; %bb.0:
5050 ; GFX12-NEXT:    s_load_b128 s[16:19], s[2:3], 0x24
5051 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5052 ; GFX12-NEXT:    s_load_b512 s[0:15], s[18:19], 0x0
5053 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5054 ; GFX12-NEXT:    v_lshrrev_b16 v0, 8, s15
5055 ; GFX12-NEXT:    v_lshrrev_b16 v2, 8, s14
5056 ; GFX12-NEXT:    v_lshrrev_b16 v3, 8, s13
5057 ; GFX12-NEXT:    v_lshrrev_b16 v4, 8, s12
5058 ; GFX12-NEXT:    s_ashr_i32 s49, s15, 24
5059 ; GFX12-NEXT:    s_bfe_i32 s50, s15, 0x80010
5060 ; GFX12-NEXT:    s_sext_i32_i8 s15, s15
5061 ; GFX12-NEXT:    s_ashr_i32 s47, s14, 24
5062 ; GFX12-NEXT:    s_bfe_i32 s48, s14, 0x80010
5063 ; GFX12-NEXT:    s_sext_i32_i8 s14, s14
5064 ; GFX12-NEXT:    v_dual_mov_b32 v59, 0 :: v_dual_mov_b32 v52, s15
5065 ; GFX12-NEXT:    v_lshrrev_b16 v6, 8, s11
5066 ; GFX12-NEXT:    s_ashr_i32 s45, s13, 24
5067 ; GFX12-NEXT:    s_bfe_i32 s46, s13, 0x80010
5068 ; GFX12-NEXT:    s_sext_i32_i8 s13, s13
5069 ; GFX12-NEXT:    v_bfe_i32 v53, v0, 0, 8
5070 ; GFX12-NEXT:    v_dual_mov_b32 v54, s50 :: v_dual_mov_b32 v55, s49
5071 ; GFX12-NEXT:    v_lshrrev_b16 v7, 8, s10
5072 ; GFX12-NEXT:    s_ashr_i32 s43, s12, 24
5073 ; GFX12-NEXT:    s_bfe_i32 s44, s12, 0x80010
5074 ; GFX12-NEXT:    s_sext_i32_i8 s12, s12
5075 ; GFX12-NEXT:    v_bfe_i32 v49, v2, 0, 8
5076 ; GFX12-NEXT:    v_dual_mov_b32 v48, s14 :: v_dual_mov_b32 v51, s47
5077 ; GFX12-NEXT:    v_dual_mov_b32 v50, s48 :: v_dual_mov_b32 v47, s45
5078 ; GFX12-NEXT:    v_lshrrev_b16 v8, 8, s9
5079 ; GFX12-NEXT:    s_ashr_i32 s41, s11, 24
5080 ; GFX12-NEXT:    s_bfe_i32 s42, s11, 0x80010
5081 ; GFX12-NEXT:    s_sext_i32_i8 s11, s11
5082 ; GFX12-NEXT:    v_bfe_i32 v45, v3, 0, 8
5083 ; GFX12-NEXT:    v_dual_mov_b32 v44, s13 :: v_dual_mov_b32 v43, s43
5084 ; GFX12-NEXT:    v_mov_b32_e32 v46, s46
5085 ; GFX12-NEXT:    v_lshrrev_b16 v10, 8, s8
5086 ; GFX12-NEXT:    s_ashr_i32 s39, s10, 24
5087 ; GFX12-NEXT:    v_bfe_i32 v41, v4, 0, 8
5088 ; GFX12-NEXT:    v_dual_mov_b32 v40, s12 :: v_dual_mov_b32 v57, s42
5089 ; GFX12-NEXT:    v_mov_b32_e32 v42, s44
5090 ; GFX12-NEXT:    v_lshrrev_b16 v11, 8, s7
5091 ; GFX12-NEXT:    v_lshrrev_b16 v12, 8, s6
5092 ; GFX12-NEXT:    s_bfe_i32 s40, s10, 0x80010
5093 ; GFX12-NEXT:    s_sext_i32_i8 s10, s10
5094 ; GFX12-NEXT:    v_lshrrev_b16 v14, 8, s5
5095 ; GFX12-NEXT:    v_lshrrev_b16 v15, 8, s4
5096 ; GFX12-NEXT:    s_ashr_i32 s37, s9, 24
5097 ; GFX12-NEXT:    s_bfe_i32 s38, s9, 0x80010
5098 ; GFX12-NEXT:    s_sext_i32_i8 s9, s9
5099 ; GFX12-NEXT:    v_bfe_i32 v56, v6, 0, 8
5100 ; GFX12-NEXT:    s_clause 0x3
5101 ; GFX12-NEXT:    global_store_b128 v59, v[52:55], s[16:17] offset:240
5102 ; GFX12-NEXT:    global_store_b128 v59, v[48:51], s[16:17] offset:224
5103 ; GFX12-NEXT:    global_store_b128 v59, v[44:47], s[16:17] offset:208
5104 ; GFX12-NEXT:    global_store_b128 v59, v[40:43], s[16:17] offset:192
5105 ; GFX12-NEXT:    v_mov_b32_e32 v41, s39
5106 ; GFX12-NEXT:    v_dual_mov_b32 v55, s11 :: v_dual_mov_b32 v58, s41
5107 ; GFX12-NEXT:    v_mov_b32_e32 v37, s37
5108 ; GFX12-NEXT:    s_ashr_i32 s33, s7, 24
5109 ; GFX12-NEXT:    s_ashr_i32 s35, s8, 24
5110 ; GFX12-NEXT:    s_bfe_i32 s36, s8, 0x80010
5111 ; GFX12-NEXT:    s_sext_i32_i8 s8, s8
5112 ; GFX12-NEXT:    v_bfe_i32 v39, v7, 0, 8
5113 ; GFX12-NEXT:    v_dual_mov_b32 v38, s10 :: v_dual_mov_b32 v33, s35
5114 ; GFX12-NEXT:    v_dual_mov_b32 v40, s40 :: v_dual_mov_b32 v29, s33
5115 ; GFX12-NEXT:    v_lshrrev_b16 v13, 8, s3
5116 ; GFX12-NEXT:    s_ashr_i32 s28, s5, 24
5117 ; GFX12-NEXT:    s_ashr_i32 s30, s6, 24
5118 ; GFX12-NEXT:    s_bfe_i32 s31, s6, 0x80010
5119 ; GFX12-NEXT:    s_sext_i32_i8 s6, s6
5120 ; GFX12-NEXT:    s_bfe_i32 s34, s7, 0x80010
5121 ; GFX12-NEXT:    s_sext_i32_i8 s7, s7
5122 ; GFX12-NEXT:    v_bfe_i32 v35, v8, 0, 8
5123 ; GFX12-NEXT:    v_dual_mov_b32 v34, s9 :: v_dual_mov_b32 v25, s30
5124 ; GFX12-NEXT:    v_mov_b32_e32 v36, s38
5125 ; GFX12-NEXT:    v_lshrrev_b16 v9, 8, s2
5126 ; GFX12-NEXT:    s_ashr_i32 s18, s0, 24
5127 ; GFX12-NEXT:    s_ashr_i32 s20, s1, 24
5128 ; GFX12-NEXT:    s_ashr_i32 s22, s2, 24
5129 ; GFX12-NEXT:    s_ashr_i32 s24, s3, 24
5130 ; GFX12-NEXT:    s_ashr_i32 s26, s4, 24
5131 ; GFX12-NEXT:    s_bfe_i32 s29, s5, 0x80010
5132 ; GFX12-NEXT:    s_sext_i32_i8 s5, s5
5133 ; GFX12-NEXT:    v_bfe_i32 v31, v10, 0, 8
5134 ; GFX12-NEXT:    v_dual_mov_b32 v30, s8 :: v_dual_mov_b32 v19, s26
5135 ; GFX12-NEXT:    v_mov_b32_e32 v32, s36
5136 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s1
5137 ; GFX12-NEXT:    s_bfe_i32 s27, s4, 0x80010
5138 ; GFX12-NEXT:    s_sext_i32_i8 s4, s4
5139 ; GFX12-NEXT:    v_bfe_i32 v23, v12, 0, 8
5140 ; GFX12-NEXT:    v_bfe_i32 v27, v11, 0, 8
5141 ; GFX12-NEXT:    v_dual_mov_b32 v26, s7 :: v_dual_mov_b32 v11, s22
5142 ; GFX12-NEXT:    v_dual_mov_b32 v28, s34 :: v_dual_mov_b32 v7, s20
5143 ; GFX12-NEXT:    v_dual_mov_b32 v22, s6 :: v_dual_mov_b32 v3, s18
5144 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s0
5145 ; GFX12-NEXT:    s_bfe_i32 s25, s3, 0x80010
5146 ; GFX12-NEXT:    s_sext_i32_i8 s3, s3
5147 ; GFX12-NEXT:    v_bfe_i32 v17, v15, 0, 8
5148 ; GFX12-NEXT:    v_bfe_i32 v21, v14, 0, 8
5149 ; GFX12-NEXT:    v_mov_b32_e32 v24, s31
5150 ; GFX12-NEXT:    v_dual_mov_b32 v20, s5 :: v_dual_mov_b32 v15, s24
5151 ; GFX12-NEXT:    s_clause 0x5
5152 ; GFX12-NEXT:    global_store_b128 v59, v[55:58], s[16:17] offset:176
5153 ; GFX12-NEXT:    global_store_b128 v59, v[38:41], s[16:17] offset:160
5154 ; GFX12-NEXT:    global_store_b128 v59, v[34:37], s[16:17] offset:144
5155 ; GFX12-NEXT:    global_store_b128 v59, v[30:33], s[16:17] offset:128
5156 ; GFX12-NEXT:    global_store_b128 v59, v[26:29], s[16:17] offset:112
5157 ; GFX12-NEXT:    global_store_b128 v59, v[22:25], s[16:17] offset:96
5158 ; GFX12-NEXT:    v_dual_mov_b32 v22, s29 :: v_dual_mov_b32 v23, s28
5159 ; GFX12-NEXT:    s_bfe_i32 s23, s2, 0x80010
5160 ; GFX12-NEXT:    s_sext_i32_i8 s2, s2
5161 ; GFX12-NEXT:    v_mov_b32_e32 v16, s4
5162 ; GFX12-NEXT:    v_mov_b32_e32 v18, s27
5163 ; GFX12-NEXT:    s_bfe_i32 s21, s1, 0x80010
5164 ; GFX12-NEXT:    s_sext_i32_i8 s1, s1
5165 ; GFX12-NEXT:    v_bfe_i32 v13, v13, 0, 8
5166 ; GFX12-NEXT:    v_mov_b32_e32 v12, s3
5167 ; GFX12-NEXT:    v_mov_b32_e32 v14, s25
5168 ; GFX12-NEXT:    s_bfe_i32 s19, s0, 0x80010
5169 ; GFX12-NEXT:    s_sext_i32_i8 s0, s0
5170 ; GFX12-NEXT:    v_bfe_i32 v9, v9, 0, 8
5171 ; GFX12-NEXT:    v_mov_b32_e32 v8, s2
5172 ; GFX12-NEXT:    v_mov_b32_e32 v10, s23
5173 ; GFX12-NEXT:    v_bfe_i32 v5, v5, 0, 8
5174 ; GFX12-NEXT:    v_mov_b32_e32 v4, s1
5175 ; GFX12-NEXT:    v_mov_b32_e32 v6, s21
5176 ; GFX12-NEXT:    v_bfe_i32 v1, v1, 0, 8
5177 ; GFX12-NEXT:    v_mov_b32_e32 v0, s0
5178 ; GFX12-NEXT:    v_mov_b32_e32 v2, s19
5179 ; GFX12-NEXT:    s_clause 0x5
5180 ; GFX12-NEXT:    global_store_b128 v59, v[20:23], s[16:17] offset:80
5181 ; GFX12-NEXT:    global_store_b128 v59, v[16:19], s[16:17] offset:64
5182 ; GFX12-NEXT:    global_store_b128 v59, v[12:15], s[16:17] offset:48
5183 ; GFX12-NEXT:    global_store_b128 v59, v[8:11], s[16:17] offset:32
5184 ; GFX12-NEXT:    global_store_b128 v59, v[4:7], s[16:17] offset:16
5185 ; GFX12-NEXT:    global_store_b128 v59, v[0:3], s[16:17]
5186 ; GFX12-NEXT:    s_nop 0
5187 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5188 ; GFX12-NEXT:    s_endpgm
5189   %load = load <64 x i8>, ptr addrspace(4) %in
5190   %ext = sext <64 x i8> %load to <64 x i32>
5191   store <64 x i32> %ext, ptr addrspace(1) %out
5192   ret void
5195 define amdgpu_kernel void @constant_zextload_i8_to_i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5196 ; GFX6-NOHSA-LABEL: constant_zextload_i8_to_i64:
5197 ; GFX6-NOHSA:       ; %bb.0:
5198 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
5199 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
5200 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
5201 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
5202 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
5203 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5204 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
5205 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
5206 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
5207 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
5208 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
5209 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5210 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5211 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5212 ; GFX6-NOHSA-NEXT:    s_endpgm
5214 ; GFX7-HSA-LABEL: constant_zextload_i8_to_i64:
5215 ; GFX7-HSA:       ; %bb.0:
5216 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
5217 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5218 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
5219 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
5220 ; GFX7-HSA-NEXT:    flat_load_ubyte v0, v[0:1]
5221 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
5222 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
5223 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
5224 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
5225 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
5226 ; GFX7-HSA-NEXT:    s_endpgm
5228 ; GFX8-NOHSA-LABEL: constant_zextload_i8_to_i64:
5229 ; GFX8-NOHSA:       ; %bb.0:
5230 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
5231 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, 0
5232 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5233 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5234 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
5235 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
5236 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
5237 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
5238 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5239 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v2, 0xffff, v2
5240 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
5241 ; GFX8-NOHSA-NEXT:    s_endpgm
5243 ; EG-LABEL: constant_zextload_i8_to_i64:
5244 ; EG:       ; %bb.0:
5245 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5246 ; EG-NEXT:    TEX 0 @6
5247 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
5248 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
5249 ; EG-NEXT:    CF_END
5250 ; EG-NEXT:    PAD
5251 ; EG-NEXT:    Fetch clause starting at 6:
5252 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
5253 ; EG-NEXT:    ALU clause starting at 8:
5254 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
5255 ; EG-NEXT:    ALU clause starting at 9:
5256 ; EG-NEXT:     MOV * T0.Y, 0.0,
5257 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
5258 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5260 ; GFX12-LABEL: constant_zextload_i8_to_i64:
5261 ; GFX12:       ; %bb.0:
5262 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
5263 ; GFX12-NEXT:    v_mov_b32_e32 v1, 0
5264 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5265 ; GFX12-NEXT:    global_load_u8 v0, v1, s[2:3]
5266 ; GFX12-NEXT:    s_wait_loadcnt 0x0
5267 ; GFX12-NEXT:    v_and_b32_e32 v0, 0xffff, v0
5268 ; GFX12-NEXT:    global_store_b64 v1, v[0:1], s[0:1]
5269 ; GFX12-NEXT:    s_nop 0
5270 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5271 ; GFX12-NEXT:    s_endpgm
5272   %a = load i8, ptr addrspace(4) %in
5273   %ext = zext i8 %a to i64
5274   store i64 %ext, ptr addrspace(1) %out
5275   ret void
5278 ; TODO: Why not 7 ?
5279 define amdgpu_kernel void @constant_sextload_i8_to_i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5280 ; GFX6-NOHSA-LABEL: constant_sextload_i8_to_i64:
5281 ; GFX6-NOHSA:       ; %bb.0:
5282 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
5283 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
5284 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
5285 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
5286 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
5287 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5288 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
5289 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
5290 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
5291 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
5292 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
5293 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5294 ; GFX6-NOHSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5295 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5296 ; GFX6-NOHSA-NEXT:    s_endpgm
5298 ; GFX7-HSA-LABEL: constant_sextload_i8_to_i64:
5299 ; GFX7-HSA:       ; %bb.0:
5300 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
5301 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5302 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
5303 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
5304 ; GFX7-HSA-NEXT:    flat_load_sbyte v0, v[0:1]
5305 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
5306 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
5307 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
5308 ; GFX7-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5309 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
5310 ; GFX7-HSA-NEXT:    s_endpgm
5312 ; GFX8-NOHSA-LABEL: constant_sextload_i8_to_i64:
5313 ; GFX8-NOHSA:       ; %bb.0:
5314 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
5315 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5316 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5317 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
5318 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
5319 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
5320 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
5321 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5322 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 16
5323 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5324 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
5325 ; GFX8-NOHSA-NEXT:    s_endpgm
5327 ; EG-LABEL: constant_sextload_i8_to_i64:
5328 ; EG:       ; %bb.0:
5329 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5330 ; EG-NEXT:    TEX 0 @6
5331 ; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
5332 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
5333 ; EG-NEXT:    CF_END
5334 ; EG-NEXT:    PAD
5335 ; EG-NEXT:    Fetch clause starting at 6:
5336 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
5337 ; EG-NEXT:    ALU clause starting at 8:
5338 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
5339 ; EG-NEXT:    ALU clause starting at 9:
5340 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
5341 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
5342 ; EG-NEXT:    8(1.121039e-44), 2(2.802597e-45)
5343 ; EG-NEXT:     ASHR * T0.Y, PV.X, literal.x,
5344 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5346 ; GFX12-LABEL: constant_sextload_i8_to_i64:
5347 ; GFX12:       ; %bb.0:
5348 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
5349 ; GFX12-NEXT:    v_mov_b32_e32 v2, 0
5350 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5351 ; GFX12-NEXT:    global_load_i8 v0, v2, s[2:3]
5352 ; GFX12-NEXT:    s_wait_loadcnt 0x0
5353 ; GFX12-NEXT:    v_bfe_i32 v0, v0, 0, 16
5354 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
5355 ; GFX12-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5356 ; GFX12-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
5357 ; GFX12-NEXT:    s_nop 0
5358 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5359 ; GFX12-NEXT:    s_endpgm
5360   %a = load i8, ptr addrspace(4) %in
5361   %ext = sext i8 %a to i64
5362   store i64 %ext, ptr addrspace(1) %out
5363   ret void
5366 define amdgpu_kernel void @constant_zextload_v1i8_to_v1i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5367 ; GFX6-NOHSA-LABEL: constant_zextload_v1i8_to_v1i64:
5368 ; GFX6-NOHSA:       ; %bb.0:
5369 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
5370 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
5371 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
5372 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
5373 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
5374 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5375 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
5376 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
5377 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
5378 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
5379 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
5380 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5381 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5382 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5383 ; GFX6-NOHSA-NEXT:    s_endpgm
5385 ; GFX7-HSA-LABEL: constant_zextload_v1i8_to_v1i64:
5386 ; GFX7-HSA:       ; %bb.0:
5387 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
5388 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5389 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
5390 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
5391 ; GFX7-HSA-NEXT:    flat_load_ubyte v0, v[0:1]
5392 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
5393 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
5394 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
5395 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
5396 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
5397 ; GFX7-HSA-NEXT:    s_endpgm
5399 ; GFX8-NOHSA-LABEL: constant_zextload_v1i8_to_v1i64:
5400 ; GFX8-NOHSA:       ; %bb.0:
5401 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
5402 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5403 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5404 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
5405 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v0, v[0:1]
5406 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s0
5407 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s1
5408 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5409 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5410 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
5411 ; GFX8-NOHSA-NEXT:    s_endpgm
5413 ; EG-LABEL: constant_zextload_v1i8_to_v1i64:
5414 ; EG:       ; %bb.0:
5415 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5416 ; EG-NEXT:    TEX 0 @6
5417 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
5418 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
5419 ; EG-NEXT:    CF_END
5420 ; EG-NEXT:    PAD
5421 ; EG-NEXT:    Fetch clause starting at 6:
5422 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
5423 ; EG-NEXT:    ALU clause starting at 8:
5424 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
5425 ; EG-NEXT:    ALU clause starting at 9:
5426 ; EG-NEXT:     MOV * T0.Y, 0.0,
5427 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
5428 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5430 ; GFX12-LABEL: constant_zextload_v1i8_to_v1i64:
5431 ; GFX12:       ; %bb.0:
5432 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
5433 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5434 ; GFX12-NEXT:    s_load_u8 s2, s[2:3], 0x0
5435 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5436 ; GFX12-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s2
5437 ; GFX12-NEXT:    global_store_b64 v1, v[0:1], s[0:1]
5438 ; GFX12-NEXT:    s_nop 0
5439 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5440 ; GFX12-NEXT:    s_endpgm
5441   %load = load <1 x i8>, ptr addrspace(4) %in
5442   %ext = zext <1 x i8> %load to <1 x i64>
5443   store <1 x i64> %ext, ptr addrspace(1) %out
5444   ret void
5447 ; TODO: Why not 7 ?
5448 define amdgpu_kernel void @constant_sextload_v1i8_to_v1i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5449 ; GFX6-NOHSA-LABEL: constant_sextload_v1i8_to_v1i64:
5450 ; GFX6-NOHSA:       ; %bb.0:
5451 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
5452 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
5453 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
5454 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
5455 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
5456 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5457 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
5458 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
5459 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
5460 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
5461 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
5462 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5463 ; GFX6-NOHSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5464 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5465 ; GFX6-NOHSA-NEXT:    s_endpgm
5467 ; GFX7-HSA-LABEL: constant_sextload_v1i8_to_v1i64:
5468 ; GFX7-HSA:       ; %bb.0:
5469 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
5470 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5471 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
5472 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
5473 ; GFX7-HSA-NEXT:    flat_load_sbyte v0, v[0:1]
5474 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
5475 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
5476 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
5477 ; GFX7-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5478 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
5479 ; GFX7-HSA-NEXT:    s_endpgm
5481 ; GFX8-NOHSA-LABEL: constant_sextload_v1i8_to_v1i64:
5482 ; GFX8-NOHSA:       ; %bb.0:
5483 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
5484 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5485 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5486 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
5487 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
5488 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
5489 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
5490 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5491 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 16
5492 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5493 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
5494 ; GFX8-NOHSA-NEXT:    s_endpgm
5496 ; EG-LABEL: constant_sextload_v1i8_to_v1i64:
5497 ; EG:       ; %bb.0:
5498 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5499 ; EG-NEXT:    TEX 0 @6
5500 ; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
5501 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
5502 ; EG-NEXT:    CF_END
5503 ; EG-NEXT:    PAD
5504 ; EG-NEXT:    Fetch clause starting at 6:
5505 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
5506 ; EG-NEXT:    ALU clause starting at 8:
5507 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
5508 ; EG-NEXT:    ALU clause starting at 9:
5509 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
5510 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
5511 ; EG-NEXT:    8(1.121039e-44), 2(2.802597e-45)
5512 ; EG-NEXT:     ASHR * T0.Y, PV.X, literal.x,
5513 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5515 ; GFX12-LABEL: constant_sextload_v1i8_to_v1i64:
5516 ; GFX12:       ; %bb.0:
5517 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
5518 ; GFX12-NEXT:    v_mov_b32_e32 v2, 0
5519 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5520 ; GFX12-NEXT:    global_load_i8 v0, v2, s[2:3]
5521 ; GFX12-NEXT:    s_wait_loadcnt 0x0
5522 ; GFX12-NEXT:    v_bfe_i32 v0, v0, 0, 16
5523 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
5524 ; GFX12-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5525 ; GFX12-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
5526 ; GFX12-NEXT:    s_nop 0
5527 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5528 ; GFX12-NEXT:    s_endpgm
5529   %load = load <1 x i8>, ptr addrspace(4) %in
5530   %ext = sext <1 x i8> %load to <1 x i64>
5531   store <1 x i64> %ext, ptr addrspace(1) %out
5532   ret void
5535 define amdgpu_kernel void @constant_zextload_v2i8_to_v2i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5536 ; GFX6-NOHSA-LABEL: constant_zextload_v2i8_to_v2i64:
5537 ; GFX6-NOHSA:       ; %bb.0:
5538 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
5539 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
5540 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
5541 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
5542 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
5543 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5544 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
5545 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
5546 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
5547 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5548 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
5549 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
5550 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5551 ; GFX6-NOHSA-NEXT:    v_lshrrev_b32_e32 v2, 8, v0
5552 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v0, 0xff, v0
5553 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
5554 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
5555 ; GFX6-NOHSA-NEXT:    s_endpgm
5557 ; GFX7-HSA-LABEL: constant_zextload_v2i8_to_v2i64:
5558 ; GFX7-HSA:       ; %bb.0:
5559 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
5560 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5561 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
5562 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
5563 ; GFX7-HSA-NEXT:    flat_load_ushort v0, v[0:1]
5564 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
5565 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
5566 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
5567 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, v1
5568 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
5569 ; GFX7-HSA-NEXT:    v_lshrrev_b32_e32 v2, 8, v0
5570 ; GFX7-HSA-NEXT:    v_and_b32_e32 v0, 0xff, v0
5571 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5572 ; GFX7-HSA-NEXT:    s_endpgm
5574 ; GFX8-NOHSA-LABEL: constant_zextload_v2i8_to_v2i64:
5575 ; GFX8-NOHSA:       ; %bb.0:
5576 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
5577 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5578 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5579 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
5580 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
5581 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5582 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
5583 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
5584 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
5585 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5586 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v0, 0xff, v2
5587 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e32 v2, 8, v2
5588 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5589 ; GFX8-NOHSA-NEXT:    s_endpgm
5591 ; EG-LABEL: constant_zextload_v2i8_to_v2i64:
5592 ; EG:       ; %bb.0:
5593 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
5594 ; EG-NEXT:    TEX 0 @6
5595 ; EG-NEXT:    ALU 14, @10, KC0[CB0:0-32], KC1[]
5596 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
5597 ; EG-NEXT:    CF_END
5598 ; EG-NEXT:    PAD
5599 ; EG-NEXT:    Fetch clause starting at 6:
5600 ; EG-NEXT:     VTX_READ_16 T4.X, T4.X, 0, #1
5601 ; EG-NEXT:    ALU clause starting at 8:
5602 ; EG-NEXT:     MOV * T0.Y, T2.X,
5603 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
5604 ; EG-NEXT:    ALU clause starting at 10:
5605 ; EG-NEXT:     AND_INT T0.W, T4.X, literal.x,
5606 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
5607 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
5608 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
5609 ; EG-NEXT:     MOV * T2.X, PV.W,
5610 ; EG-NEXT:     MOV T0.Y, PV.X,
5611 ; EG-NEXT:     MOV * T1.W, literal.x,
5612 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5613 ; EG-NEXT:     BFE_UINT * T4.Z, PV.Y, literal.x, PV.W,
5614 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5615 ; EG-NEXT:     AND_INT T4.X, T0.W, literal.x,
5616 ; EG-NEXT:     MOV T4.Y, 0.0,
5617 ; EG-NEXT:     MOV T4.W, 0.0,
5618 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
5619 ; EG-NEXT:    255(3.573311e-43), 2(2.802597e-45)
5621 ; GFX12-LABEL: constant_zextload_v2i8_to_v2i64:
5622 ; GFX12:       ; %bb.0:
5623 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
5624 ; GFX12-NEXT:    v_mov_b32_e32 v1, 0
5625 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5626 ; GFX12-NEXT:    global_load_u16 v0, v1, s[2:3]
5627 ; GFX12-NEXT:    s_wait_loadcnt 0x0
5628 ; GFX12-NEXT:    v_lshrrev_b16 v2, 8, v0
5629 ; GFX12-NEXT:    v_dual_mov_b32 v3, v1 :: v_dual_and_b32 v0, 0xff, v0
5630 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
5631 ; GFX12-NEXT:    v_and_b32_e32 v2, 0xffff, v2
5632 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1]
5633 ; GFX12-NEXT:    s_nop 0
5634 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5635 ; GFX12-NEXT:    s_endpgm
5636   %load = load <2 x i8>, ptr addrspace(4) %in
5637   %ext = zext <2 x i8> %load to <2 x i64>
5638   store <2 x i64> %ext, ptr addrspace(1) %out
5639   ret void
5642 define amdgpu_kernel void @constant_sextload_v2i8_to_v2i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5643 ; GFX6-NOHSA-LABEL: constant_sextload_v2i8_to_v2i64:
5644 ; GFX6-NOHSA:       ; %bb.0:
5645 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
5646 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
5647 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
5648 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
5649 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
5650 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5651 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
5652 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
5653 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
5654 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
5655 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
5656 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5657 ; GFX6-NOHSA-NEXT:    v_lshrrev_b32_e32 v2, 8, v0
5658 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v0, v0, 0, 8
5659 ; GFX6-NOHSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5660 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
5661 ; GFX6-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5662 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
5663 ; GFX6-NOHSA-NEXT:    s_endpgm
5665 ; GFX7-HSA-LABEL: constant_sextload_v2i8_to_v2i64:
5666 ; GFX7-HSA:       ; %bb.0:
5667 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
5668 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5669 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
5670 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
5671 ; GFX7-HSA-NEXT:    flat_load_ushort v0, v[0:1]
5672 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
5673 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
5674 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
5675 ; GFX7-HSA-NEXT:    v_lshrrev_b32_e32 v2, 8, v0
5676 ; GFX7-HSA-NEXT:    v_bfe_i32 v0, v0, 0, 8
5677 ; GFX7-HSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
5678 ; GFX7-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5679 ; GFX7-HSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5680 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5681 ; GFX7-HSA-NEXT:    s_endpgm
5683 ; GFX8-NOHSA-LABEL: constant_sextload_v2i8_to_v2i64:
5684 ; GFX8-NOHSA:       ; %bb.0:
5685 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
5686 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5687 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5688 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
5689 ; GFX8-NOHSA-NEXT:    flat_load_ushort v0, v[0:1]
5690 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
5691 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
5692 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
5693 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e32 v2, 8, v0
5694 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v0, v0, 0, 8
5695 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
5696 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5697 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5698 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5699 ; GFX8-NOHSA-NEXT:    s_endpgm
5701 ; EG-LABEL: constant_sextload_v2i8_to_v2i64:
5702 ; EG:       ; %bb.0:
5703 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
5704 ; EG-NEXT:    TEX 0 @6
5705 ; EG-NEXT:    ALU 15, @10, KC0[CB0:0-32], KC1[]
5706 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
5707 ; EG-NEXT:    CF_END
5708 ; EG-NEXT:    PAD
5709 ; EG-NEXT:    Fetch clause starting at 6:
5710 ; EG-NEXT:     VTX_READ_16 T4.X, T4.X, 0, #1
5711 ; EG-NEXT:    ALU clause starting at 8:
5712 ; EG-NEXT:     MOV * T0.Y, T2.X,
5713 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
5714 ; EG-NEXT:    ALU clause starting at 10:
5715 ; EG-NEXT:     AND_INT T0.W, T4.X, literal.x,
5716 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
5717 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
5718 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
5719 ; EG-NEXT:     MOV * T2.X, PV.W,
5720 ; EG-NEXT:     MOV * T0.Y, PV.X,
5721 ; EG-NEXT:     BFE_INT * T4.X, T0.W, 0.0, literal.x,
5722 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5723 ; EG-NEXT:     ASHR T4.Y, PV.X, literal.x,
5724 ; EG-NEXT:     LSHR * T0.W, T0.Y, literal.y,
5725 ; EG-NEXT:    31(4.344025e-44), 8(1.121039e-44)
5726 ; EG-NEXT:     BFE_INT * T4.Z, PV.W, 0.0, literal.x,
5727 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5728 ; EG-NEXT:     LSHR T5.X, KC0[2].Y, literal.x,
5729 ; EG-NEXT:     ASHR * T4.W, PV.Z, literal.y,
5730 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5732 ; GFX12-LABEL: constant_sextload_v2i8_to_v2i64:
5733 ; GFX12:       ; %bb.0:
5734 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
5735 ; GFX12-NEXT:    v_mov_b32_e32 v4, 0
5736 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5737 ; GFX12-NEXT:    global_load_u16 v0, v4, s[2:3]
5738 ; GFX12-NEXT:    s_wait_loadcnt 0x0
5739 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, v0
5740 ; GFX12-NEXT:    v_bfe_i32 v0, v0, 0, 8
5741 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
5742 ; GFX12-NEXT:    v_bfe_i32 v2, v1, 0, 8
5743 ; GFX12-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5744 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
5745 ; GFX12-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5746 ; GFX12-NEXT:    global_store_b128 v4, v[0:3], s[0:1]
5747 ; GFX12-NEXT:    s_nop 0
5748 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5749 ; GFX12-NEXT:    s_endpgm
5750   %load = load <2 x i8>, ptr addrspace(4) %in
5751   %ext = sext <2 x i8> %load to <2 x i64>
5752   store <2 x i64> %ext, ptr addrspace(1) %out
5753   ret void
5756 define amdgpu_kernel void @constant_zextload_v4i8_to_v4i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5757 ; GFX6-NOHSA-LABEL: constant_zextload_v4i8_to_v4i64:
5758 ; GFX6-NOHSA:       ; %bb.0:
5759 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
5760 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5761 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
5762 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
5763 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5764 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
5765 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
5766 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5767 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s4, 0x80008
5768 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s4, 24
5769 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s4, 0x80010
5770 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
5771 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
5772 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
5773 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5774 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5775 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
5776 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
5777 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5778 ; GFX6-NOHSA-NEXT:    s_endpgm
5780 ; GFX7-HSA-LABEL: constant_zextload_v4i8_to_v4i64:
5781 ; GFX7-HSA:       ; %bb.0:
5782 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
5783 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
5784 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, v1
5785 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5786 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
5787 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5788 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s2, 0x80008
5789 ; GFX7-HSA-NEXT:    s_lshr_b32 s3, s2, 24
5790 ; GFX7-HSA-NEXT:    s_and_b32 s5, s2, 0xff
5791 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
5792 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
5793 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
5794 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
5795 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5796 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5797 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5798 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5799 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
5800 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
5801 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
5802 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
5803 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5804 ; GFX7-HSA-NEXT:    s_endpgm
5806 ; GFX8-NOHSA-LABEL: constant_zextload_v4i8_to_v4i64:
5807 ; GFX8-NOHSA:       ; %bb.0:
5808 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
5809 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5810 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
5811 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5812 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
5813 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5814 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s3, s2, 24
5815 ; GFX8-NOHSA-NEXT:    s_and_b32 s4, s2, 0xff
5816 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s2
5817 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
5818 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5819 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
5820 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s3
5821 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5822 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
5823 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
5824 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5825 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
5826 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
5827 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v6
5828 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
5829 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5830 ; GFX8-NOHSA-NEXT:    s_endpgm
5832 ; EG-LABEL: constant_zextload_v4i8_to_v4i64:
5833 ; EG:       ; %bb.0:
5834 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5835 ; EG-NEXT:    TEX 0 @6
5836 ; EG-NEXT:    ALU 17, @9, KC0[CB0:0-32], KC1[]
5837 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T7.X, 0
5838 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T6.X, 1
5839 ; EG-NEXT:    CF_END
5840 ; EG-NEXT:    Fetch clause starting at 6:
5841 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
5842 ; EG-NEXT:    ALU clause starting at 8:
5843 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
5844 ; EG-NEXT:    ALU clause starting at 9:
5845 ; EG-NEXT:     MOV * T0.W, literal.x,
5846 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5847 ; EG-NEXT:     BFE_UINT T5.X, T4.X, literal.x, PV.W,
5848 ; EG-NEXT:     LSHR * T5.Z, T4.X, literal.y,
5849 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
5850 ; EG-NEXT:     MOV T5.Y, 0.0,
5851 ; EG-NEXT:     BFE_UINT * T4.Z, T4.X, literal.x, T0.W,
5852 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5853 ; EG-NEXT:     AND_INT T4.X, T4.X, literal.x,
5854 ; EG-NEXT:     MOV T4.Y, 0.0,
5855 ; EG-NEXT:     MOV T5.W, 0.0,
5856 ; EG-NEXT:     MOV * T4.W, 0.0,
5857 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
5858 ; EG-NEXT:     LSHR T6.X, KC0[2].Y, literal.x,
5859 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5860 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5861 ; EG-NEXT:     LSHR * T7.X, PV.W, literal.x,
5862 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5864 ; GFX12-LABEL: constant_zextload_v4i8_to_v4i64:
5865 ; GFX12:       ; %bb.0:
5866 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
5867 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5868 ; GFX12-NEXT:    s_load_b32 s2, s[2:3], 0x0
5869 ; GFX12-NEXT:    s_wait_kmcnt 0x0
5870 ; GFX12-NEXT:    v_lshrrev_b16 v4, 8, s2
5871 ; GFX12-NEXT:    s_bfe_u32 s3, s2, 0x80010
5872 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
5873 ; GFX12-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s3
5874 ; GFX12-NEXT:    s_lshr_b32 s4, s2, 24
5875 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v4
5876 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
5877 ; GFX12-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, v1
5878 ; GFX12-NEXT:    s_and_b32 s2, s2, 0xff
5879 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:16
5880 ; GFX12-NEXT:    v_mov_b32_e32 v0, s2
5881 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
5882 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1]
5883 ; GFX12-NEXT:    s_nop 0
5884 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5885 ; GFX12-NEXT:    s_endpgm
5886   %load = load <4 x i8>, ptr addrspace(4) %in
5887   %ext = zext <4 x i8> %load to <4 x i64>
5888   store <4 x i64> %ext, ptr addrspace(1) %out
5889   ret void
5892 define amdgpu_kernel void @constant_sextload_v4i8_to_v4i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5893 ; GFX6-NOHSA-LABEL: constant_sextload_v4i8_to_v4i64:
5894 ; GFX6-NOHSA:       ; %bb.0:
5895 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
5896 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5897 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
5898 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
5899 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
5900 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5901 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s4, 16
5902 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s4, 24
5903 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s10, s4, 8
5904 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
5905 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
5906 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
5907 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
5908 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
5909 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
5910 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
5911 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s7
5912 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
5913 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
5914 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[2:5], off, s[0:3], 0 offset:16
5915 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5916 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
5917 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s11
5918 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5919 ; GFX6-NOHSA-NEXT:    s_endpgm
5921 ; GFX7-HSA-LABEL: constant_sextload_v4i8_to_v4i64:
5922 ; GFX7-HSA:       ; %bb.0:
5923 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
5924 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5925 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
5926 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5927 ; GFX7-HSA-NEXT:    s_lshr_b32 s4, s2, 16
5928 ; GFX7-HSA-NEXT:    s_lshr_b32 s6, s2, 24
5929 ; GFX7-HSA-NEXT:    s_lshr_b32 s8, s2, 8
5930 ; GFX7-HSA-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x80000
5931 ; GFX7-HSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
5932 ; GFX7-HSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
5933 ; GFX7-HSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
5934 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
5935 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 16
5936 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s5
5937 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
5938 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
5939 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
5940 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s7
5941 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
5942 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5943 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
5944 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
5945 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
5946 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s8
5947 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s9
5948 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
5949 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5950 ; GFX7-HSA-NEXT:    s_endpgm
5952 ; GFX8-NOHSA-LABEL: constant_sextload_v4i8_to_v4i64:
5953 ; GFX8-NOHSA:       ; %bb.0:
5954 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
5955 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5956 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
5957 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5958 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s4, s2, 16
5959 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s6, s2, 24
5960 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s2
5961 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x80000
5962 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
5963 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
5964 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s4
5965 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 16
5966 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v0, 0, 8
5967 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s5
5968 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
5969 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
5970 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s6
5971 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s7
5972 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
5973 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
5974 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5975 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
5976 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5977 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
5978 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
5979 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5980 ; GFX8-NOHSA-NEXT:    s_endpgm
5982 ; EG-LABEL: constant_sextload_v4i8_to_v4i64:
5983 ; EG:       ; %bb.0:
5984 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5985 ; EG-NEXT:    TEX 0 @6
5986 ; EG-NEXT:    ALU 18, @9, KC0[CB0:0-32], KC1[]
5987 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T7.X, 0
5988 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1
5989 ; EG-NEXT:    CF_END
5990 ; EG-NEXT:    Fetch clause starting at 6:
5991 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
5992 ; EG-NEXT:    ALU clause starting at 8:
5993 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
5994 ; EG-NEXT:    ALU clause starting at 9:
5995 ; EG-NEXT:     BFE_INT T5.X, T4.X, 0.0, literal.x,
5996 ; EG-NEXT:     ASHR T4.W, T4.X, literal.y,
5997 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.z,
5998 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
5999 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6000 ; EG-NEXT:     ASHR T5.Y, PV.X, literal.x,
6001 ; EG-NEXT:     ASHR T4.Z, T4.X, literal.y,
6002 ; EG-NEXT:     LSHR T0.W, T4.X, literal.z,
6003 ; EG-NEXT:     LSHR * T1.W, T4.X, literal.w,
6004 ; EG-NEXT:    31(4.344025e-44), 24(3.363116e-44)
6005 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
6006 ; EG-NEXT:     BFE_INT T4.X, PS, 0.0, literal.x,
6007 ; EG-NEXT:     BFE_INT T5.Z, PV.W, 0.0, literal.x,
6008 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6009 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
6010 ; EG-NEXT:     LSHR T7.X, PV.W, literal.x,
6011 ; EG-NEXT:     ASHR T4.Y, PV.X, literal.y,
6012 ; EG-NEXT:     ASHR * T5.W, PV.Z, literal.y,
6013 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6015 ; GFX12-LABEL: constant_sextload_v4i8_to_v4i64:
6016 ; GFX12:       ; %bb.0:
6017 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
6018 ; GFX12-NEXT:    s_wait_kmcnt 0x0
6019 ; GFX12-NEXT:    s_load_b32 s2, s[2:3], 0x0
6020 ; GFX12-NEXT:    s_wait_kmcnt 0x0
6021 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s2
6022 ; GFX12-NEXT:    s_lshr_b32 s4, s2, 16
6023 ; GFX12-NEXT:    s_lshr_b32 s6, s2, 24
6024 ; GFX12-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x80000
6025 ; GFX12-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
6026 ; GFX12-NEXT:    v_bfe_i32 v2, v1, 0, 8
6027 ; GFX12-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
6028 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
6029 ; GFX12-NEXT:    v_dual_mov_b32 v8, 0 :: v_dual_mov_b32 v5, s5
6030 ; GFX12-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v7, s7
6031 ; GFX12-NEXT:    v_dual_mov_b32 v4, s4 :: v_dual_mov_b32 v1, s3
6032 ; GFX12-NEXT:    v_mov_b32_e32 v6, s6
6033 ; GFX12-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
6034 ; GFX12-NEXT:    s_clause 0x1
6035 ; GFX12-NEXT:    global_store_b128 v8, v[4:7], s[0:1] offset:16
6036 ; GFX12-NEXT:    global_store_b128 v8, v[0:3], s[0:1]
6037 ; GFX12-NEXT:    s_nop 0
6038 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6039 ; GFX12-NEXT:    s_endpgm
6040   %load = load <4 x i8>, ptr addrspace(4) %in
6041   %ext = sext <4 x i8> %load to <4 x i64>
6042   store <4 x i64> %ext, ptr addrspace(1) %out
6043   ret void
6046 define amdgpu_kernel void @constant_zextload_v8i8_to_v8i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
6047 ; GFX6-NOHSA-LABEL: constant_zextload_v8i8_to_v8i64:
6048 ; GFX6-NOHSA:       ; %bb.0:
6049 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
6050 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6051 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
6052 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
6053 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
6054 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
6055 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
6056 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6057 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s4, 24
6058 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s7, s5, 24
6059 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s8, s5, 0x80008
6060 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s9, s4, 0x80008
6061 ; GFX6-NOHSA-NEXT:    s_and_b32 s10, s4, 0xff
6062 ; GFX6-NOHSA-NEXT:    s_and_b32 s11, s5, 0xff
6063 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
6064 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
6065 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
6066 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
6067 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
6068 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6069 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
6070 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
6071 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
6072 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6073 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
6074 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s8
6075 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
6076 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6077 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
6078 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
6079 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
6080 ; GFX6-NOHSA-NEXT:    s_endpgm
6082 ; GFX7-HSA-LABEL: constant_zextload_v8i8_to_v8i64:
6083 ; GFX7-HSA:       ; %bb.0:
6084 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
6085 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
6086 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, v1
6087 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6088 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
6089 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6090 ; GFX7-HSA-NEXT:    s_lshr_b32 s4, s2, 24
6091 ; GFX7-HSA-NEXT:    s_lshr_b32 s5, s3, 24
6092 ; GFX7-HSA-NEXT:    s_bfe_u32 s6, s3, 0x80008
6093 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s2, 0x80008
6094 ; GFX7-HSA-NEXT:    s_and_b32 s8, s2, 0xff
6095 ; GFX7-HSA-NEXT:    s_and_b32 s9, s3, 0xff
6096 ; GFX7-HSA-NEXT:    s_bfe_u32 s10, s2, 0x80010
6097 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s3, 0x80010
6098 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
6099 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
6100 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6101 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6102 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6103 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
6104 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
6105 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6106 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6107 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6108 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6109 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
6110 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
6111 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
6112 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6113 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6114 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6115 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s9
6116 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
6117 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6118 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6119 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
6120 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
6121 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s7
6122 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
6123 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6124 ; GFX7-HSA-NEXT:    s_endpgm
6126 ; GFX8-NOHSA-LABEL: constant_zextload_v8i8_to_v8i64:
6127 ; GFX8-NOHSA:       ; %bb.0:
6128 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
6129 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
6130 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
6131 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6132 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
6133 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6134 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s4, s3, 24
6135 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s5, s2, 24
6136 ; GFX8-NOHSA-NEXT:    s_and_b32 s6, s3, 0xff
6137 ; GFX8-NOHSA-NEXT:    s_and_b32 s7, s2, 0xff
6138 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s2
6139 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s8, s2, 0x80010
6140 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s3, 0x80010
6141 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
6142 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 48
6143 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s3
6144 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6145 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
6146 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
6147 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
6148 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
6149 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6150 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6151 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
6152 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
6153 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
6154 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
6155 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6156 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
6157 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
6158 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s0, 32
6159 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
6160 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v7
6161 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s1, 0
6162 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6163 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
6164 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
6165 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v6
6166 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
6167 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6168 ; GFX8-NOHSA-NEXT:    s_endpgm
6170 ; EG-LABEL: constant_zextload_v8i8_to_v8i64:
6171 ; EG:       ; %bb.0:
6172 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
6173 ; EG-NEXT:    TEX 0 @8
6174 ; EG-NEXT:    ALU 34, @11, KC0[CB0:0-32], KC1[]
6175 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T12.X, 0
6176 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T11.X, 0
6177 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T10.X, 0
6178 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T9.X, 1
6179 ; EG-NEXT:    CF_END
6180 ; EG-NEXT:    Fetch clause starting at 8:
6181 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
6182 ; EG-NEXT:    ALU clause starting at 10:
6183 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
6184 ; EG-NEXT:    ALU clause starting at 11:
6185 ; EG-NEXT:     MOV * T0.W, literal.x,
6186 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6187 ; EG-NEXT:     BFE_UINT T6.X, T5.Y, literal.x, PV.W,
6188 ; EG-NEXT:     LSHR * T6.Z, T5.Y, literal.y,
6189 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6190 ; EG-NEXT:     MOV T6.Y, 0.0,
6191 ; EG-NEXT:     BFE_UINT * T7.Z, T5.Y, literal.x, T0.W,
6192 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6193 ; EG-NEXT:     AND_INT T7.X, T5.Y, literal.x,
6194 ; EG-NEXT:     MOV * T7.Y, 0.0,
6195 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6196 ; EG-NEXT:     BFE_UINT T8.X, T5.X, literal.x, T0.W,
6197 ; EG-NEXT:     LSHR * T8.Z, T5.X, literal.y,
6198 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6199 ; EG-NEXT:     MOV T8.Y, 0.0,
6200 ; EG-NEXT:     BFE_UINT * T5.Z, T5.X, literal.x, T0.W,
6201 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6202 ; EG-NEXT:     AND_INT T5.X, T5.X, literal.x,
6203 ; EG-NEXT:     MOV T5.Y, 0.0,
6204 ; EG-NEXT:     MOV T6.W, 0.0,
6205 ; EG-NEXT:     MOV * T7.W, 0.0,
6206 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6207 ; EG-NEXT:     MOV T8.W, 0.0,
6208 ; EG-NEXT:     MOV * T5.W, 0.0,
6209 ; EG-NEXT:     LSHR T9.X, KC0[2].Y, literal.x,
6210 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6211 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6212 ; EG-NEXT:     LSHR T10.X, PV.W, literal.x,
6213 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6214 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6215 ; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
6216 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6217 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
6218 ; EG-NEXT:     LSHR * T12.X, PV.W, literal.x,
6219 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6221 ; GFX12-LABEL: constant_zextload_v8i8_to_v8i64:
6222 ; GFX12:       ; %bb.0:
6223 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
6224 ; GFX12-NEXT:    s_wait_kmcnt 0x0
6225 ; GFX12-NEXT:    s_load_b64 s[2:3], s[2:3], 0x0
6226 ; GFX12-NEXT:    s_wait_kmcnt 0x0
6227 ; GFX12-NEXT:    s_bfe_u32 s4, s3, 0x80010
6228 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
6229 ; GFX12-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s4
6230 ; GFX12-NEXT:    s_lshr_b32 s5, s3, 24
6231 ; GFX12-NEXT:    v_lshrrev_b16 v4, 8, s2
6232 ; GFX12-NEXT:    v_dual_mov_b32 v2, s5 :: v_dual_mov_b32 v3, v1
6233 ; GFX12-NEXT:    s_lshr_b32 s4, s2, 24
6234 ; GFX12-NEXT:    s_bfe_u32 s5, s2, 0x80010
6235 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
6236 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v4
6237 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s3
6238 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:48
6239 ; GFX12-NEXT:    v_mov_b32_e32 v0, s5
6240 ; GFX12-NEXT:    v_mov_b32_e32 v2, s4
6241 ; GFX12-NEXT:    s_and_b32 s2, s2, 0xff
6242 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:16
6243 ; GFX12-NEXT:    v_mov_b32_e32 v0, s2
6244 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
6245 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
6246 ; GFX12-NEXT:    s_and_b32 s2, s3, 0xff
6247 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1]
6248 ; GFX12-NEXT:    v_mov_b32_e32 v0, s2
6249 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
6250 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:32
6251 ; GFX12-NEXT:    s_nop 0
6252 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6253 ; GFX12-NEXT:    s_endpgm
6254   %load = load <8 x i8>, ptr addrspace(4) %in
6255   %ext = zext <8 x i8> %load to <8 x i64>
6256   store <8 x i64> %ext, ptr addrspace(1) %out
6257   ret void
6260 define amdgpu_kernel void @constant_sextload_v8i8_to_v8i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
6261 ; GFX6-NOHSA-LABEL: constant_sextload_v8i8_to_v8i64:
6262 ; GFX6-NOHSA:       ; %bb.0:
6263 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
6264 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6265 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
6266 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
6267 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
6268 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6269 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s5, 16
6270 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s5, 8
6271 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s5
6272 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s12, s4, 16
6273 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s4, 24
6274 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s16, s4, 8
6275 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[18:19], s[4:5], 0x80000
6276 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
6277 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[4:5], s[4:5], 56
6278 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
6279 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
6280 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
6281 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
6282 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
6283 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
6284 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s5
6285 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s10
6286 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s11
6287 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s18
6288 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s19
6289 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
6290 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s7
6291 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
6292 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s8
6293 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s9
6294 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32
6295 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(1)
6296 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s12
6297 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s13
6298 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s14
6299 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s15
6300 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
6301 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s16
6302 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s17
6303 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0
6304 ; GFX6-NOHSA-NEXT:    s_endpgm
6306 ; GFX7-HSA-LABEL: constant_sextload_v8i8_to_v8i64:
6307 ; GFX7-HSA:       ; %bb.0:
6308 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
6309 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6310 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
6311 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6312 ; GFX7-HSA-NEXT:    s_lshr_b32 s4, s3, 16
6313 ; GFX7-HSA-NEXT:    s_lshr_b32 s6, s3, 8
6314 ; GFX7-HSA-NEXT:    s_mov_b32 s8, s3
6315 ; GFX7-HSA-NEXT:    s_lshr_b32 s10, s2, 16
6316 ; GFX7-HSA-NEXT:    s_lshr_b32 s12, s2, 24
6317 ; GFX7-HSA-NEXT:    s_lshr_b32 s14, s2, 8
6318 ; GFX7-HSA-NEXT:    s_bfe_i64 s[16:17], s[2:3], 0x80000
6319 ; GFX7-HSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
6320 ; GFX7-HSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
6321 ; GFX7-HSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
6322 ; GFX7-HSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
6323 ; GFX7-HSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
6324 ; GFX7-HSA-NEXT:    s_ashr_i64 s[2:3], s[2:3], 56
6325 ; GFX7-HSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
6326 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
6327 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
6328 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s3
6329 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6330 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6331 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6332 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
6333 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
6334 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s5
6335 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6336 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6337 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6338 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6339 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
6340 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
6341 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s9
6342 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
6343 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s7
6344 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6345 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6346 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6347 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
6348 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s11
6349 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s12
6350 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s13
6351 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6352 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6353 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
6354 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s16
6355 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
6356 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s14
6357 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s15
6358 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
6359 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6360 ; GFX7-HSA-NEXT:    s_endpgm
6362 ; GFX8-NOHSA-LABEL: constant_sextload_v8i8_to_v8i64:
6363 ; GFX8-NOHSA:       ; %bb.0:
6364 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
6365 ; GFX8-NOHSA-NEXT:    s_mov_b32 s5, 0
6366 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6367 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
6368 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6369 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s6, s3, 16
6370 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s8, s2, 16
6371 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s2, 24
6372 ; GFX8-NOHSA-NEXT:    s_mov_b32 s4, s3
6373 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s2
6374 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s3
6375 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[2:3], 0x80000
6376 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
6377 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
6378 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
6379 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[2:3], s[2:3], 56
6380 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
6381 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s2
6382 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 48
6383 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v1, 0, 8
6384 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v6, v0, 0, 8
6385 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s3
6386 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6387 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
6388 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s6
6389 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s7
6390 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
6391 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
6392 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]
6393 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6394 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
6395 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s8
6396 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s9
6397 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s10
6398 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s11
6399 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
6400 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]
6401 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
6402 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
6403 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s0, 32
6404 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
6405 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s12
6406 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s13
6407 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s1, 0
6408 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
6409 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
6410 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
6411 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
6412 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
6413 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
6414 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6415 ; GFX8-NOHSA-NEXT:    s_endpgm
6417 ; EG-LABEL: constant_sextload_v8i8_to_v8i64:
6418 ; EG:       ; %bb.0:
6419 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
6420 ; EG-NEXT:    TEX 0 @8
6421 ; EG-NEXT:    ALU 39, @11, KC0[CB0:0-32], KC1[]
6422 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T12.X, 0
6423 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T9.X, 0
6424 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T8.X, 0
6425 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T6.X, 1
6426 ; EG-NEXT:    CF_END
6427 ; EG-NEXT:    Fetch clause starting at 8:
6428 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
6429 ; EG-NEXT:    ALU clause starting at 10:
6430 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
6431 ; EG-NEXT:    ALU clause starting at 11:
6432 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.x,
6433 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6434 ; EG-NEXT:     BFE_INT T7.X, T5.Y, 0.0, literal.x,
6435 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6436 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
6437 ; EG-NEXT:     LSHR T8.X, PV.W, literal.x,
6438 ; EG-NEXT:     ASHR T7.Y, PV.X, literal.y,
6439 ; EG-NEXT:     LSHR T0.W, T5.Y, literal.z,
6440 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
6441 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6442 ; EG-NEXT:    8(1.121039e-44), 32(4.484155e-44)
6443 ; EG-NEXT:     LSHR T9.X, PS, literal.x,
6444 ; EG-NEXT:     BFE_INT T7.Z, PV.W, 0.0, literal.y,
6445 ; EG-NEXT:     ASHR * T10.W, T5.X, literal.z,
6446 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
6447 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6448 ; EG-NEXT:     BFE_INT T11.X, T5.X, 0.0, literal.x,
6449 ; EG-NEXT:     ASHR T10.Z, T5.X, literal.y,
6450 ; EG-NEXT:     LSHR T0.W, T5.X, literal.z,
6451 ; EG-NEXT:     ASHR * T5.W, T5.Y, literal.w,
6452 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
6453 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6454 ; EG-NEXT:     BFE_INT T10.X, PV.W, 0.0, literal.x,
6455 ; EG-NEXT:     ASHR T11.Y, PV.X, literal.y,
6456 ; EG-NEXT:     ASHR T5.Z, T5.Y, literal.z,
6457 ; EG-NEXT:     LSHR T0.W, T5.X, literal.x,
6458 ; EG-NEXT:     LSHR * T1.W, T5.Y, literal.w,
6459 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
6460 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
6461 ; EG-NEXT:     BFE_INT T5.X, PS, 0.0, literal.x,
6462 ; EG-NEXT:     ASHR T10.Y, PV.X, literal.y,
6463 ; EG-NEXT:     BFE_INT T11.Z, PV.W, 0.0, literal.x,
6464 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
6465 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
6466 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
6467 ; EG-NEXT:     LSHR T12.X, PV.W, literal.x,
6468 ; EG-NEXT:     ASHR T5.Y, PV.X, literal.y,
6469 ; EG-NEXT:     ASHR T11.W, PV.Z, literal.y,
6470 ; EG-NEXT:     ASHR * T7.W, T7.Z, literal.y,
6471 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6473 ; GFX12-LABEL: constant_sextload_v8i8_to_v8i64:
6474 ; GFX12:       ; %bb.0:
6475 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
6476 ; GFX12-NEXT:    s_mov_b32 s5, 0
6477 ; GFX12-NEXT:    s_wait_kmcnt 0x0
6478 ; GFX12-NEXT:    s_load_b64 s[2:3], s[2:3], 0x0
6479 ; GFX12-NEXT:    s_wait_kmcnt 0x0
6480 ; GFX12-NEXT:    v_lshrrev_b16 v6, 8, s2
6481 ; GFX12-NEXT:    v_lshrrev_b16 v7, 8, s3
6482 ; GFX12-NEXT:    s_lshr_b32 s6, s3, 16
6483 ; GFX12-NEXT:    s_lshr_b32 s8, s2, 16
6484 ; GFX12-NEXT:    s_lshr_b32 s10, s2, 24
6485 ; GFX12-NEXT:    v_bfe_i32 v6, v6, 0, 8
6486 ; GFX12-NEXT:    s_mov_b32 s4, s3
6487 ; GFX12-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
6488 ; GFX12-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
6489 ; GFX12-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
6490 ; GFX12-NEXT:    v_bfe_i32 v14, v7, 0, 8
6491 ; GFX12-NEXT:    s_bfe_i64 s[12:13], s[2:3], 0x80000
6492 ; GFX12-NEXT:    s_ashr_i64 s[2:3], s[2:3], 56
6493 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
6494 ; GFX12-NEXT:    v_dual_mov_b32 v16, 0 :: v_dual_mov_b32 v3, s3
6495 ; GFX12-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
6496 ; GFX12-NEXT:    v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v9, s9
6497 ; GFX12-NEXT:    v_dual_mov_b32 v8, s8 :: v_dual_mov_b32 v11, s11
6498 ; GFX12-NEXT:    v_dual_mov_b32 v10, s10 :: v_dual_mov_b32 v13, s5
6499 ; GFX12-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v5, s13
6500 ; GFX12-NEXT:    v_dual_mov_b32 v4, s12 :: v_dual_mov_b32 v1, s7
6501 ; GFX12-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
6502 ; GFX12-NEXT:    v_mov_b32_e32 v12, s4
6503 ; GFX12-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
6504 ; GFX12-NEXT:    s_clause 0x3
6505 ; GFX12-NEXT:    global_store_b128 v16, v[8:11], s[0:1] offset:16
6506 ; GFX12-NEXT:    global_store_b128 v16, v[4:7], s[0:1]
6507 ; GFX12-NEXT:    global_store_b128 v16, v[0:3], s[0:1] offset:48
6508 ; GFX12-NEXT:    global_store_b128 v16, v[12:15], s[0:1] offset:32
6509 ; GFX12-NEXT:    s_nop 0
6510 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6511 ; GFX12-NEXT:    s_endpgm
6512   %load = load <8 x i8>, ptr addrspace(4) %in
6513   %ext = sext <8 x i8> %load to <8 x i64>
6514   store <8 x i64> %ext, ptr addrspace(1) %out
6515   ret void
6518 define amdgpu_kernel void @constant_zextload_v16i8_to_v16i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
6519 ; GFX6-NOHSA-LABEL: constant_zextload_v16i8_to_v16i64:
6520 ; GFX6-NOHSA:       ; %bb.0:
6521 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
6522 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6523 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
6524 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
6525 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
6526 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
6527 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
6528 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6529 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s5, 24
6530 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s9, s4, 24
6531 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s10, s7, 24
6532 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s11, s6, 24
6533 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s12, s6, 0x80008
6534 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s13, s7, 0x80008
6535 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s14, s4, 0x80008
6536 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s15, s5, 0x80008
6537 ; GFX6-NOHSA-NEXT:    s_and_b32 s16, s5, 0xff
6538 ; GFX6-NOHSA-NEXT:    s_and_b32 s17, s4, 0xff
6539 ; GFX6-NOHSA-NEXT:    s_and_b32 s18, s7, 0xff
6540 ; GFX6-NOHSA-NEXT:    s_and_b32 s19, s6, 0xff
6541 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
6542 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
6543 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
6544 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
6545 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
6546 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s11
6547 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
6548 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6549 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
6550 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
6551 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
6552 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6553 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
6554 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
6555 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
6556 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6557 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
6558 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s8
6559 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
6560 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6561 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s19
6562 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s12
6563 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
6564 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6565 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s18
6566 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s13
6567 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
6568 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6569 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s17
6570 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s14
6571 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
6572 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6573 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s16
6574 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
6575 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
6576 ; GFX6-NOHSA-NEXT:    s_endpgm
6578 ; GFX7-HSA-LABEL: constant_zextload_v16i8_to_v16i64:
6579 ; GFX7-HSA:       ; %bb.0:
6580 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
6581 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
6582 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, v1
6583 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6584 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
6585 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6586 ; GFX7-HSA-NEXT:    s_lshr_b32 s8, s5, 24
6587 ; GFX7-HSA-NEXT:    s_lshr_b32 s9, s4, 24
6588 ; GFX7-HSA-NEXT:    s_lshr_b32 s10, s7, 24
6589 ; GFX7-HSA-NEXT:    s_lshr_b32 s2, s6, 24
6590 ; GFX7-HSA-NEXT:    s_bfe_u32 s11, s6, 0x80008
6591 ; GFX7-HSA-NEXT:    s_bfe_u32 s12, s7, 0x80008
6592 ; GFX7-HSA-NEXT:    s_bfe_u32 s13, s4, 0x80008
6593 ; GFX7-HSA-NEXT:    s_bfe_u32 s14, s5, 0x80008
6594 ; GFX7-HSA-NEXT:    s_and_b32 s15, s5, 0xff
6595 ; GFX7-HSA-NEXT:    s_and_b32 s16, s4, 0xff
6596 ; GFX7-HSA-NEXT:    s_and_b32 s17, s7, 0xff
6597 ; GFX7-HSA-NEXT:    s_and_b32 s18, s6, 0xff
6598 ; GFX7-HSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
6599 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
6600 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
6601 ; GFX7-HSA-NEXT:    s_bfe_u32 s3, s6, 0x80010
6602 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
6603 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x50
6604 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
6605 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6606 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6607 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6608 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x70
6609 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6610 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6611 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6612 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6613 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
6614 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
6615 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s10
6616 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6617 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6618 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6619 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6620 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
6621 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
6622 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s9
6623 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6624 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6625 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6626 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6627 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 64
6628 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
6629 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s8
6630 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6631 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6632 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6633 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6634 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x60
6635 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s18
6636 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s11
6637 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
6638 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6639 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
6640 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s17
6641 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s12
6642 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
6643 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6644 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
6645 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
6646 ; GFX7-HSA-NEXT:    s_add_u32 s0, s0, 32
6647 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s16
6648 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s13
6649 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s1, 0
6650 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6651 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
6652 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s15
6653 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s14
6654 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
6655 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6656 ; GFX7-HSA-NEXT:    s_endpgm
6658 ; GFX8-NOHSA-LABEL: constant_zextload_v16i8_to_v16i64:
6659 ; GFX8-NOHSA:       ; %bb.0:
6660 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
6661 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
6662 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
6663 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6664 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
6665 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6666 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s8, s5, 24
6667 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s2, s7, 24
6668 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s9, s6, 24
6669 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s4, 24
6670 ; GFX8-NOHSA-NEXT:    s_and_b32 s11, s4, 0xff
6671 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s4
6672 ; GFX8-NOHSA-NEXT:    s_and_b32 s12, s5, 0xff
6673 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s5
6674 ; GFX8-NOHSA-NEXT:    s_and_b32 s13, s7, 0xff
6675 ; GFX8-NOHSA-NEXT:    s_and_b32 s14, s6, 0xff
6676 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s6
6677 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
6678 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
6679 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
6680 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s3, s7, 0x80010
6681 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s2
6682 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 0x70
6683 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s3
6684 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6685 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
6686 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
6687 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 48
6688 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6689 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6690 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
6691 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
6692 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 0x50
6693 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
6694 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s8
6695 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6696 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6697 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
6698 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
6699 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
6700 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
6701 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
6702 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6703 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6704 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
6705 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
6706 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 64
6707 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
6708 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
6709 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6710 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6711 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
6712 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
6713 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 0x60
6714 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s14
6715 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v9
6716 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6717 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6718 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
6719 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v8, 8, s7
6720 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
6721 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 32
6722 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s13
6723 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v8
6724 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
6725 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6726 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
6727 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s12
6728 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v7
6729 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
6730 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6731 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
6732 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
6733 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v6
6734 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
6735 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6736 ; GFX8-NOHSA-NEXT:    s_endpgm
6738 ; EG-LABEL: constant_zextload_v16i8_to_v16i64:
6739 ; EG:       ; %bb.0:
6740 ; EG-NEXT:    ALU 0, @14, KC0[CB0:0-32], KC1[]
6741 ; EG-NEXT:    TEX 0 @12
6742 ; EG-NEXT:    ALU 68, @15, KC0[CB0:0-32], KC1[]
6743 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T22.X, 0
6744 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T21.X, 0
6745 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T20.X, 0
6746 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T19.X, 0
6747 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T18.X, 0
6748 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T17.X, 0
6749 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T16.X, 0
6750 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T15.X, 1
6751 ; EG-NEXT:    CF_END
6752 ; EG-NEXT:    Fetch clause starting at 12:
6753 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
6754 ; EG-NEXT:    ALU clause starting at 14:
6755 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
6756 ; EG-NEXT:    ALU clause starting at 15:
6757 ; EG-NEXT:     MOV * T0.W, literal.x,
6758 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6759 ; EG-NEXT:     BFE_UINT T8.X, T7.W, literal.x, PV.W,
6760 ; EG-NEXT:     LSHR * T8.Z, T7.W, literal.y,
6761 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6762 ; EG-NEXT:     MOV T8.Y, 0.0,
6763 ; EG-NEXT:     BFE_UINT * T9.Z, T7.W, literal.x, T0.W,
6764 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6765 ; EG-NEXT:     AND_INT T9.X, T7.W, literal.x,
6766 ; EG-NEXT:     MOV * T9.Y, 0.0,
6767 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6768 ; EG-NEXT:     BFE_UINT T10.X, T7.Z, literal.x, T0.W,
6769 ; EG-NEXT:     LSHR * T10.Z, T7.Z, literal.y,
6770 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6771 ; EG-NEXT:     MOV T10.Y, 0.0,
6772 ; EG-NEXT:     BFE_UINT * T11.Z, T7.Z, literal.x, T0.W,
6773 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6774 ; EG-NEXT:     AND_INT T11.X, T7.Z, literal.x,
6775 ; EG-NEXT:     MOV * T11.Y, 0.0,
6776 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6777 ; EG-NEXT:     BFE_UINT T12.X, T7.Y, literal.x, T0.W,
6778 ; EG-NEXT:     LSHR * T12.Z, T7.Y, literal.y,
6779 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6780 ; EG-NEXT:     MOV T12.Y, 0.0,
6781 ; EG-NEXT:     BFE_UINT * T13.Z, T7.Y, literal.x, T0.W,
6782 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6783 ; EG-NEXT:     AND_INT T13.X, T7.Y, literal.x,
6784 ; EG-NEXT:     MOV * T13.Y, 0.0,
6785 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6786 ; EG-NEXT:     BFE_UINT T14.X, T7.X, literal.x, T0.W,
6787 ; EG-NEXT:     LSHR * T14.Z, T7.X, literal.y,
6788 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6789 ; EG-NEXT:     MOV T14.Y, 0.0,
6790 ; EG-NEXT:     BFE_UINT * T7.Z, T7.X, literal.x, T0.W,
6791 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6792 ; EG-NEXT:     AND_INT T7.X, T7.X, literal.x,
6793 ; EG-NEXT:     MOV T7.Y, 0.0,
6794 ; EG-NEXT:     MOV T8.W, 0.0,
6795 ; EG-NEXT:     MOV * T9.W, 0.0,
6796 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6797 ; EG-NEXT:     MOV T10.W, 0.0,
6798 ; EG-NEXT:     MOV * T11.W, 0.0,
6799 ; EG-NEXT:     MOV T12.W, 0.0,
6800 ; EG-NEXT:     MOV * T13.W, 0.0,
6801 ; EG-NEXT:     MOV T14.W, 0.0,
6802 ; EG-NEXT:     MOV * T7.W, 0.0,
6803 ; EG-NEXT:     LSHR T15.X, KC0[2].Y, literal.x,
6804 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6805 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6806 ; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
6807 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6808 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6809 ; EG-NEXT:     LSHR T17.X, PV.W, literal.x,
6810 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6811 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
6812 ; EG-NEXT:     LSHR T18.X, PV.W, literal.x,
6813 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6814 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
6815 ; EG-NEXT:     LSHR T19.X, PV.W, literal.x,
6816 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6817 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
6818 ; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
6819 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6820 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
6821 ; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
6822 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6823 ; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
6824 ; EG-NEXT:     LSHR * T22.X, PV.W, literal.x,
6825 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6827 ; GFX12-LABEL: constant_zextload_v16i8_to_v16i64:
6828 ; GFX12:       ; %bb.0:
6829 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
6830 ; GFX12-NEXT:    s_wait_kmcnt 0x0
6831 ; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x0
6832 ; GFX12-NEXT:    s_wait_kmcnt 0x0
6833 ; GFX12-NEXT:    s_bfe_u32 s2, s7, 0x80010
6834 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
6835 ; GFX12-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s2
6836 ; GFX12-NEXT:    s_lshr_b32 s3, s7, 24
6837 ; GFX12-NEXT:    s_lshr_b32 s2, s5, 24
6838 ; GFX12-NEXT:    v_dual_mov_b32 v2, s3 :: v_dual_mov_b32 v3, v1
6839 ; GFX12-NEXT:    s_bfe_u32 s3, s5, 0x80010
6840 ; GFX12-NEXT:    v_lshrrev_b16 v4, 8, s6
6841 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s7
6842 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:112
6843 ; GFX12-NEXT:    v_mov_b32_e32 v0, s3
6844 ; GFX12-NEXT:    v_mov_b32_e32 v2, s2
6845 ; GFX12-NEXT:    s_lshr_b32 s2, s6, 24
6846 ; GFX12-NEXT:    s_bfe_u32 s3, s6, 0x80010
6847 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v4
6848 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:48
6849 ; GFX12-NEXT:    v_mov_b32_e32 v0, s3
6850 ; GFX12-NEXT:    v_mov_b32_e32 v2, s2
6851 ; GFX12-NEXT:    s_lshr_b32 s2, s4, 24
6852 ; GFX12-NEXT:    s_bfe_u32 s3, s4, 0x80010
6853 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:80
6854 ; GFX12-NEXT:    v_mov_b32_e32 v0, s3
6855 ; GFX12-NEXT:    v_mov_b32_e32 v2, s2
6856 ; GFX12-NEXT:    s_and_b32 s2, s6, 0xff
6857 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:16
6858 ; GFX12-NEXT:    v_mov_b32_e32 v0, s2
6859 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
6860 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
6861 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s5
6862 ; GFX12-NEXT:    s_and_b32 s2, s7, 0xff
6863 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:64
6864 ; GFX12-NEXT:    v_mov_b32_e32 v0, s2
6865 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
6866 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
6867 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s4
6868 ; GFX12-NEXT:    s_and_b32 s2, s5, 0xff
6869 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:96
6870 ; GFX12-NEXT:    v_mov_b32_e32 v0, s2
6871 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
6872 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
6873 ; GFX12-NEXT:    s_and_b32 s2, s4, 0xff
6874 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1] offset:32
6875 ; GFX12-NEXT:    v_mov_b32_e32 v0, s2
6876 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
6877 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[0:1]
6878 ; GFX12-NEXT:    s_nop 0
6879 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6880 ; GFX12-NEXT:    s_endpgm
6881   %load = load <16 x i8>, ptr addrspace(4) %in
6882   %ext = zext <16 x i8> %load to <16 x i64>
6883   store <16 x i64> %ext, ptr addrspace(1) %out
6884   ret void
6887 define amdgpu_kernel void @constant_sextload_v16i8_to_v16i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
6888 ; GFX6-NOHSA-LABEL: constant_sextload_v16i8_to_v16i64:
6889 ; GFX6-NOHSA:       ; %bb.0:
6890 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
6891 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6892 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
6893 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
6894 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
6895 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6896 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s7, 16
6897 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s10, s7, 8
6898 ; GFX6-NOHSA-NEXT:    s_mov_b32 s12, s7
6899 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s6, 16
6900 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s16, s6, 24
6901 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s18, s6, 8
6902 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s20, s5, 16
6903 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s22, s5, 8
6904 ; GFX6-NOHSA-NEXT:    s_mov_b32 s24, s5
6905 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s26, s4, 16
6906 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s28, s4, 24
6907 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s30, s4, 8
6908 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[34:35], s[4:5], 0x80000
6909 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[36:37], s[4:5], 56
6910 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[38:39], s[6:7], 0x80000
6911 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[40:41], s[6:7], 56
6912 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x80000
6913 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
6914 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[30:31], 0x80000
6915 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[28:29], 0x80000
6916 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
6917 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
6918 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
6919 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
6920 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
6921 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
6922 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
6923 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
6924 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s40
6925 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s41
6926 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s12
6927 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s13
6928 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s38
6929 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s39
6930 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s36
6931 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s37
6932 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s24
6933 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s25
6934 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v18, s34
6935 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v19, s35
6936 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
6937 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
6938 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
6939 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s10
6940 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s11
6941 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:96
6942 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(1)
6943 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s14
6944 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s15
6945 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s16
6946 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s17
6947 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
6948 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s18
6949 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s19
6950 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:64
6951 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6952 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s20
6953 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s21
6954 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[10:13], off, s[0:3], 0 offset:48
6955 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v16, s22
6956 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v17, s23
6957 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:32
6958 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s26
6959 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s27
6960 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
6961 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s7
6962 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
6963 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v20, s4
6964 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v21, s5
6965 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[18:21], off, s[0:3], 0
6966 ; GFX6-NOHSA-NEXT:    s_endpgm
6968 ; GFX7-HSA-LABEL: constant_sextload_v16i8_to_v16i64:
6969 ; GFX7-HSA:       ; %bb.0:
6970 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
6971 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6972 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
6973 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6974 ; GFX7-HSA-NEXT:    s_lshr_b32 s10, s7, 16
6975 ; GFX7-HSA-NEXT:    s_lshr_b32 s12, s7, 8
6976 ; GFX7-HSA-NEXT:    s_mov_b32 s14, s7
6977 ; GFX7-HSA-NEXT:    s_lshr_b32 s16, s6, 16
6978 ; GFX7-HSA-NEXT:    s_lshr_b32 s18, s6, 24
6979 ; GFX7-HSA-NEXT:    s_lshr_b32 s20, s6, 8
6980 ; GFX7-HSA-NEXT:    s_lshr_b32 s22, s5, 16
6981 ; GFX7-HSA-NEXT:    s_lshr_b32 s24, s5, 8
6982 ; GFX7-HSA-NEXT:    s_mov_b32 s26, s5
6983 ; GFX7-HSA-NEXT:    s_lshr_b32 s8, s4, 16
6984 ; GFX7-HSA-NEXT:    s_lshr_b32 s28, s4, 24
6985 ; GFX7-HSA-NEXT:    s_lshr_b32 s30, s4, 8
6986 ; GFX7-HSA-NEXT:    s_bfe_i64 s[2:3], s[4:5], 0x80000
6987 ; GFX7-HSA-NEXT:    s_ashr_i64 s[34:35], s[4:5], 56
6988 ; GFX7-HSA-NEXT:    s_bfe_i64 s[36:37], s[6:7], 0x80000
6989 ; GFX7-HSA-NEXT:    s_ashr_i64 s[38:39], s[6:7], 56
6990 ; GFX7-HSA-NEXT:    s_bfe_i64 s[4:5], s[30:31], 0x80000
6991 ; GFX7-HSA-NEXT:    s_bfe_i64 s[6:7], s[28:29], 0x80000
6992 ; GFX7-HSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
6993 ; GFX7-HSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
6994 ; GFX7-HSA-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x80000
6995 ; GFX7-HSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
6996 ; GFX7-HSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
6997 ; GFX7-HSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
6998 ; GFX7-HSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
6999 ; GFX7-HSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
7000 ; GFX7-HSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
7001 ; GFX7-HSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
7002 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
7003 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 0x70
7004 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s11
7005 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
7006 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
7007 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s38
7008 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s39
7009 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
7010 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 0x60
7011 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7012 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
7013 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
7014 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s14
7015 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s15
7016 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s12
7017 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s13
7018 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
7019 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 0x50
7020 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7021 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
7022 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
7023 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s16
7024 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
7025 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s18
7026 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s19
7027 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
7028 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 64
7029 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7030 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
7031 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
7032 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s36
7033 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s37
7034 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s20
7035 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s21
7036 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
7037 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 48
7038 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7039 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
7040 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
7041 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s22
7042 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s23
7043 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s34
7044 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s35
7045 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
7046 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 32
7047 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7048 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
7049 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
7050 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s26
7051 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s27
7052 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s24
7053 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s25
7054 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
7055 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7056 ; GFX7-HSA-NEXT:    s_nop 0
7057 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
7058 ; GFX7-HSA-NEXT:    s_add_u32 s6, s0, 16
7059 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s7
7060 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s1, 0
7061 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
7062 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
7063 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s9
7064 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
7065 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7066 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
7067 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
7068 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
7069 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
7070 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s5
7071 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
7072 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7073 ; GFX7-HSA-NEXT:    s_endpgm
7075 ; GFX8-NOHSA-LABEL: constant_sextload_v16i8_to_v16i64:
7076 ; GFX8-NOHSA:       ; %bb.0:
7077 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
7078 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7079 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x0
7080 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7081 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s12, s11, 16
7082 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s14, s10, 16
7083 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s16, s10, 24
7084 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s18, s9, 16
7085 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s20, s8, 16
7086 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s22, s8, 24
7087 ; GFX8-NOHSA-NEXT:    s_mov_b32 s24, s11
7088 ; GFX8-NOHSA-NEXT:    s_mov_b32 s4, s9
7089 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s11
7090 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s10
7091 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s9
7092 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s8
7093 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[2:3], s[8:9], 0x80000
7094 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[10:11], 0x80000
7095 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[8:9], s[8:9], 56
7096 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[10:11], s[10:11], 56
7097 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
7098 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x80000
7099 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
7100 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
7101 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
7102 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
7103 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
7104 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
7105 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s10
7106 ; GFX8-NOHSA-NEXT:    s_add_u32 s10, s0, 0x70
7107 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v10, v1, 0, 8
7108 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v14, v0, 0, 8
7109 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s11
7110 ; GFX8-NOHSA-NEXT:    s_addc_u32 s11, s1, 0
7111 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
7112 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s12
7113 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s13
7114 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
7115 ; GFX8-NOHSA-NEXT:    s_add_u32 s10, s0, 0x50
7116 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
7117 ; GFX8-NOHSA-NEXT:    s_addc_u32 s11, s1, 0
7118 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
7119 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s14
7120 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s15
7121 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s16
7122 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s17
7123 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
7124 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
7125 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
7126 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s8
7127 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s0, 48
7128 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s9
7129 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s1, 0
7130 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
7131 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s18
7132 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s19
7133 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
7134 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s0, 16
7135 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
7136 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s1, 0
7137 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
7138 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s20
7139 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s21
7140 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s22
7141 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s23
7142 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
7143 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s0, 0x60
7144 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
7145 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s1, 0
7146 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
7147 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s24
7148 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s25
7149 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
7150 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s6
7151 ; GFX8-NOHSA-NEXT:    s_add_u32 s6, s0, 64
7152 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[12:15]
7153 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s7
7154 ; GFX8-NOHSA-NEXT:    s_addc_u32 s7, s1, 0
7155 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
7156 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v6, v4, 0, 8
7157 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
7158 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s7
7159 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s4
7160 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 32
7161 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]
7162 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s5
7163 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7164 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
7165 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
7166 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
7167 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
7168 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
7169 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
7170 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
7171 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
7172 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
7173 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
7174 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7175 ; GFX8-NOHSA-NEXT:    s_endpgm
7177 ; EG-LABEL: constant_sextload_v16i8_to_v16i64:
7178 ; EG:       ; %bb.0:
7179 ; EG-NEXT:    ALU 0, @14, KC0[CB0:0-32], KC1[]
7180 ; EG-NEXT:    TEX 0 @12
7181 ; EG-NEXT:    ALU 78, @15, KC0[CB0:0-32], KC1[]
7182 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T22.X, 0
7183 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T16.X, 0
7184 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T15.X, 0
7185 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T12.X, 0
7186 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T11.X, 0
7187 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T10.X, 0
7188 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T9.X, 0
7189 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T8.X, 1
7190 ; EG-NEXT:    CF_END
7191 ; EG-NEXT:    Fetch clause starting at 12:
7192 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
7193 ; EG-NEXT:    ALU clause starting at 14:
7194 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
7195 ; EG-NEXT:    ALU clause starting at 15:
7196 ; EG-NEXT:     LSHR T8.X, KC0[2].Y, literal.x,
7197 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7198 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7199 ; EG-NEXT:     LSHR T9.X, PV.W, literal.x,
7200 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7201 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
7202 ; EG-NEXT:     LSHR T10.X, PV.W, literal.x,
7203 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7204 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
7205 ; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
7206 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7207 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
7208 ; EG-NEXT:     LSHR * T12.X, PV.W, literal.x,
7209 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7210 ; EG-NEXT:     BFE_INT * T13.X, T7.W, 0.0, literal.x,
7211 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7212 ; EG-NEXT:     BFE_INT T14.X, T7.Y, 0.0, literal.x,
7213 ; EG-NEXT:     ASHR T13.Y, PV.X, literal.y,
7214 ; EG-NEXT:     LSHR T0.W, T7.W, literal.x,
7215 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
7216 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7217 ; EG-NEXT:    80(1.121039e-43), 0(0.000000e+00)
7218 ; EG-NEXT:     LSHR T15.X, PS, literal.x,
7219 ; EG-NEXT:     ASHR T14.Y, PV.X, literal.y,
7220 ; EG-NEXT:     BFE_INT T13.Z, PV.W, 0.0, literal.z,
7221 ; EG-NEXT:     LSHR T0.W, T7.Y, literal.z,
7222 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
7223 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
7224 ; EG-NEXT:    8(1.121039e-44), 96(1.345247e-43)
7225 ; EG-NEXT:     LSHR T16.X, PS, literal.x,
7226 ; EG-NEXT:     BFE_INT T14.Z, PV.W, 0.0, literal.y,
7227 ; EG-NEXT:     ASHR * T17.W, T7.X, literal.z,
7228 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
7229 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
7230 ; EG-NEXT:     BFE_INT T18.X, T7.X, 0.0, literal.x,
7231 ; EG-NEXT:     ASHR T17.Z, T7.X, literal.y,
7232 ; EG-NEXT:     LSHR T0.W, T7.X, literal.z,
7233 ; EG-NEXT:     ASHR * T19.W, T7.Y, literal.w,
7234 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
7235 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7236 ; EG-NEXT:     BFE_INT T17.X, PV.W, 0.0, literal.x,
7237 ; EG-NEXT:     ASHR T18.Y, PV.X, literal.y,
7238 ; EG-NEXT:     ASHR T19.Z, T7.Y, literal.z,
7239 ; EG-NEXT:     LSHR T0.W, T7.X, literal.x,
7240 ; EG-NEXT:     LSHR * T1.W, T7.Y, literal.w,
7241 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7242 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
7243 ; EG-NEXT:     BFE_INT T19.X, PS, 0.0, literal.x,
7244 ; EG-NEXT:     ASHR T17.Y, PV.X, literal.y,
7245 ; EG-NEXT:     BFE_INT T18.Z, PV.W, 0.0, literal.x,
7246 ; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.z,
7247 ; EG-NEXT:     ASHR * T20.W, T7.Z, literal.y,
7248 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7249 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
7250 ; EG-NEXT:     BFE_INT T7.X, T7.Z, 0.0, literal.x,
7251 ; EG-NEXT:     ASHR T19.Y, PV.X, literal.y,
7252 ; EG-NEXT:     ASHR T20.Z, T7.Z, literal.z,
7253 ; EG-NEXT:     LSHR T1.W, T7.Z, literal.w,
7254 ; EG-NEXT:     ASHR * T21.W, T7.W, literal.y,
7255 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7256 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
7257 ; EG-NEXT:     BFE_INT T20.X, PV.W, 0.0, literal.x,
7258 ; EG-NEXT:     ASHR T7.Y, PV.X, literal.y,
7259 ; EG-NEXT:     ASHR T21.Z, T7.W, literal.z,
7260 ; EG-NEXT:     LSHR T1.W, T7.Z, literal.x,
7261 ; EG-NEXT:     LSHR * T2.W, T7.W, literal.w,
7262 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7263 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
7264 ; EG-NEXT:     BFE_INT T21.X, PS, 0.0, literal.x,
7265 ; EG-NEXT:     ASHR T20.Y, PV.X, literal.y,
7266 ; EG-NEXT:     BFE_INT T7.Z, PV.W, 0.0, literal.x,
7267 ; EG-NEXT:     ASHR T18.W, T18.Z, literal.y,
7268 ; EG-NEXT:     ASHR * T14.W, T14.Z, literal.y,
7269 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7270 ; EG-NEXT:     LSHR T22.X, T0.W, literal.x,
7271 ; EG-NEXT:     ASHR T21.Y, PV.X, literal.y,
7272 ; EG-NEXT:     ASHR T7.W, PV.Z, literal.y,
7273 ; EG-NEXT:     ASHR * T13.W, T13.Z, literal.y,
7274 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
7276 ; GFX12-LABEL: constant_sextload_v16i8_to_v16i64:
7277 ; GFX12:       ; %bb.0:
7278 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
7279 ; GFX12-NEXT:    s_wait_kmcnt 0x0
7280 ; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x0
7281 ; GFX12-NEXT:    s_wait_kmcnt 0x0
7282 ; GFX12-NEXT:    v_lshrrev_b16 v10, 8, s7
7283 ; GFX12-NEXT:    v_lshrrev_b16 v11, 8, s6
7284 ; GFX12-NEXT:    v_lshrrev_b16 v21, 8, s5
7285 ; GFX12-NEXT:    v_lshrrev_b16 v23, 8, s4
7286 ; GFX12-NEXT:    s_lshr_b32 s8, s7, 16
7287 ; GFX12-NEXT:    s_lshr_b32 s10, s6, 16
7288 ; GFX12-NEXT:    s_lshr_b32 s12, s6, 24
7289 ; GFX12-NEXT:    v_bfe_i32 v22, v10, 0, 8
7290 ; GFX12-NEXT:    v_bfe_i32 v10, v11, 0, 8
7291 ; GFX12-NEXT:    s_lshr_b32 s18, s4, 24
7292 ; GFX12-NEXT:    s_mov_b32 s20, s7
7293 ; GFX12-NEXT:    s_lshr_b32 s14, s5, 16
7294 ; GFX12-NEXT:    s_bfe_i64 s[24:25], s[6:7], 0x80000
7295 ; GFX12-NEXT:    s_ashr_i64 s[6:7], s[6:7], 56
7296 ; GFX12-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
7297 ; GFX12-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
7298 ; GFX12-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
7299 ; GFX12-NEXT:    v_bfe_i32 v28, v21, 0, 8
7300 ; GFX12-NEXT:    s_lshr_b32 s16, s4, 16
7301 ; GFX12-NEXT:    s_mov_b32 s22, s5
7302 ; GFX12-NEXT:    s_bfe_i64 s[2:3], s[4:5], 0x80000
7303 ; GFX12-NEXT:    s_ashr_i64 s[4:5], s[4:5], 56
7304 ; GFX12-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
7305 ; GFX12-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
7306 ; GFX12-NEXT:    v_dual_mov_b32 v30, 0 :: v_dual_mov_b32 v3, s7
7307 ; GFX12-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
7308 ; GFX12-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v7, s5
7309 ; GFX12-NEXT:    v_dual_mov_b32 v8, s24 :: v_dual_mov_b32 v1, s9
7310 ; GFX12-NEXT:    v_dual_mov_b32 v0, s8 :: v_dual_mov_b32 v13, s11
7311 ; GFX12-NEXT:    v_dual_mov_b32 v12, s10 :: v_dual_mov_b32 v15, s13
7312 ; GFX12-NEXT:    v_dual_mov_b32 v14, s12 :: v_dual_mov_b32 v5, s15
7313 ; GFX12-NEXT:    v_bfe_i32 v24, v23, 0, 8
7314 ; GFX12-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
7315 ; GFX12-NEXT:    v_dual_mov_b32 v6, s4 :: v_dual_mov_b32 v9, s25
7316 ; GFX12-NEXT:    v_dual_mov_b32 v18, s18 :: v_dual_mov_b32 v21, s21
7317 ; GFX12-NEXT:    v_dual_mov_b32 v20, s20 :: v_dual_mov_b32 v27, s23
7318 ; GFX12-NEXT:    v_ashrrev_i32_e32 v23, 31, v22
7319 ; GFX12-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
7320 ; GFX12-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
7321 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
7322 ; GFX12-NEXT:    v_dual_mov_b32 v4, s14 :: v_dual_mov_b32 v17, s17
7323 ; GFX12-NEXT:    v_ashrrev_i32_e32 v29, 31, v28
7324 ; GFX12-NEXT:    v_mov_b32_e32 v26, s22
7325 ; GFX12-NEXT:    v_dual_mov_b32 v16, s16 :: v_dual_mov_b32 v19, s19
7326 ; GFX12-NEXT:    v_ashrrev_i32_e32 v25, 31, v24
7327 ; GFX12-NEXT:    s_clause 0x1
7328 ; GFX12-NEXT:    global_store_b128 v30, v[0:3], s[0:1] offset:112
7329 ; GFX12-NEXT:    global_store_b128 v30, v[20:23], s[0:1] offset:96
7330 ; GFX12-NEXT:    v_dual_mov_b32 v22, s2 :: v_dual_mov_b32 v23, s3
7331 ; GFX12-NEXT:    s_clause 0x5
7332 ; GFX12-NEXT:    global_store_b128 v30, v[12:15], s[0:1] offset:80
7333 ; GFX12-NEXT:    global_store_b128 v30, v[8:11], s[0:1] offset:64
7334 ; GFX12-NEXT:    global_store_b128 v30, v[4:7], s[0:1] offset:48
7335 ; GFX12-NEXT:    global_store_b128 v30, v[26:29], s[0:1] offset:32
7336 ; GFX12-NEXT:    global_store_b128 v30, v[16:19], s[0:1] offset:16
7337 ; GFX12-NEXT:    global_store_b128 v30, v[22:25], s[0:1]
7338 ; GFX12-NEXT:    s_nop 0
7339 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
7340 ; GFX12-NEXT:    s_endpgm
7341   %load = load <16 x i8>, ptr addrspace(4) %in
7342   %ext = sext <16 x i8> %load to <16 x i64>
7343   store <16 x i64> %ext, ptr addrspace(1) %out
7344   ret void
7347 define amdgpu_kernel void @constant_zextload_v32i8_to_v32i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7348 ; GFX6-NOHSA-LABEL: constant_zextload_v32i8_to_v32i64:
7349 ; GFX6-NOHSA:       ; %bb.0:
7350 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x9
7351 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7352 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
7353 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, 0xf000
7354 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
7355 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, -1
7356 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
7357 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7358 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s12, s0, 24
7359 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s13, s1, 24
7360 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s2, 24
7361 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s15, s3, 24
7362 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s16, s4, 24
7363 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s17, s5, 24
7364 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s18, s6, 24
7365 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s19, s7, 24
7366 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s20, s7, 0x80008
7367 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s21, s6, 0x80008
7368 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s22, s5, 0x80008
7369 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s23, s4, 0x80008
7370 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s24, s3, 0x80008
7371 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s25, s2, 0x80008
7372 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s26, s1, 0x80008
7373 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s27, s0, 0x80008
7374 ; GFX6-NOHSA-NEXT:    s_and_b32 s28, s0, 0xff
7375 ; GFX6-NOHSA-NEXT:    s_and_b32 s29, s1, 0xff
7376 ; GFX6-NOHSA-NEXT:    s_and_b32 s30, s2, 0xff
7377 ; GFX6-NOHSA-NEXT:    s_and_b32 s31, s3, 0xff
7378 ; GFX6-NOHSA-NEXT:    s_and_b32 s33, s4, 0xff
7379 ; GFX6-NOHSA-NEXT:    s_and_b32 s34, s5, 0xff
7380 ; GFX6-NOHSA-NEXT:    s_and_b32 s35, s6, 0xff
7381 ; GFX6-NOHSA-NEXT:    s_and_b32 s36, s7, 0xff
7382 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s0, s0, 0x80010
7383 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s1, s1, 0x80010
7384 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
7385 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
7386 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
7387 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
7388 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
7389 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
7390 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
7391 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
7392 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:240
7393 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7394 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
7395 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s18
7396 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:208
7397 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7398 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
7399 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s17
7400 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:176
7401 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7402 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
7403 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s16
7404 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:144
7405 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7406 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s3
7407 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
7408 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:112
7409 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7410 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
7411 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s14
7412 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:80
7413 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7414 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s1
7415 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s13
7416 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:48
7417 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7418 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
7419 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s12
7420 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16
7421 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7422 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s36
7423 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s20
7424 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:224
7425 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7426 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s35
7427 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s21
7428 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:192
7429 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7430 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s34
7431 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s22
7432 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:160
7433 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7434 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s33
7435 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s23
7436 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:128
7437 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7438 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s31
7439 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s24
7440 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:96
7441 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7442 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s30
7443 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s25
7444 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:64
7445 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7446 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s29
7447 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s26
7448 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:32
7449 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
7450 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s28
7451 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s27
7452 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
7453 ; GFX6-NOHSA-NEXT:    s_endpgm
7455 ; GFX7-HSA-LABEL: constant_zextload_v32i8_to_v32i64:
7456 ; GFX7-HSA:       ; %bb.0:
7457 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
7458 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
7459 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, v1
7460 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
7461 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
7462 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
7463 ; GFX7-HSA-NEXT:    s_lshr_b32 s12, s4, 24
7464 ; GFX7-HSA-NEXT:    s_lshr_b32 s13, s5, 24
7465 ; GFX7-HSA-NEXT:    s_lshr_b32 s14, s6, 24
7466 ; GFX7-HSA-NEXT:    s_lshr_b32 s15, s7, 24
7467 ; GFX7-HSA-NEXT:    s_lshr_b32 s16, s8, 24
7468 ; GFX7-HSA-NEXT:    s_lshr_b32 s17, s9, 24
7469 ; GFX7-HSA-NEXT:    s_lshr_b32 s18, s10, 24
7470 ; GFX7-HSA-NEXT:    s_lshr_b32 s19, s11, 24
7471 ; GFX7-HSA-NEXT:    s_bfe_u32 s20, s11, 0x80008
7472 ; GFX7-HSA-NEXT:    s_bfe_u32 s21, s10, 0x80008
7473 ; GFX7-HSA-NEXT:    s_bfe_u32 s22, s9, 0x80008
7474 ; GFX7-HSA-NEXT:    s_bfe_u32 s23, s8, 0x80008
7475 ; GFX7-HSA-NEXT:    s_bfe_u32 s24, s7, 0x80008
7476 ; GFX7-HSA-NEXT:    s_bfe_u32 s25, s6, 0x80008
7477 ; GFX7-HSA-NEXT:    s_bfe_u32 s26, s5, 0x80008
7478 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s4, 0x80008
7479 ; GFX7-HSA-NEXT:    s_and_b32 s3, s4, 0xff
7480 ; GFX7-HSA-NEXT:    s_and_b32 s27, s5, 0xff
7481 ; GFX7-HSA-NEXT:    s_and_b32 s28, s6, 0xff
7482 ; GFX7-HSA-NEXT:    s_and_b32 s29, s7, 0xff
7483 ; GFX7-HSA-NEXT:    s_and_b32 s30, s8, 0xff
7484 ; GFX7-HSA-NEXT:    s_and_b32 s31, s9, 0xff
7485 ; GFX7-HSA-NEXT:    s_and_b32 s33, s10, 0xff
7486 ; GFX7-HSA-NEXT:    s_and_b32 s34, s11, 0xff
7487 ; GFX7-HSA-NEXT:    s_bfe_u32 s35, s4, 0x80010
7488 ; GFX7-HSA-NEXT:    s_bfe_u32 s36, s5, 0x80010
7489 ; GFX7-HSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
7490 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
7491 ; GFX7-HSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
7492 ; GFX7-HSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
7493 ; GFX7-HSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
7494 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s11, 0x80010
7495 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
7496 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xf0
7497 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7498 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7499 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s19
7500 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7501 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xd0
7502 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7503 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7504 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7505 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
7506 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s18
7507 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7508 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xb0
7509 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7510 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7511 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7512 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s9
7513 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s17
7514 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7515 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0x90
7516 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7517 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7518 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7519 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
7520 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s16
7521 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7522 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0x70
7523 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7524 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7525 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7526 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
7527 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s15
7528 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7529 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0x50
7530 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7531 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7532 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7533 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
7534 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s14
7535 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7536 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 48
7537 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7538 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7539 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7540 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s36
7541 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s13
7542 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7543 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 16
7544 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7545 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7546 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7547 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s35
7548 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s12
7549 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7550 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xe0
7551 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7552 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7553 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7554 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s34
7555 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s20
7556 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7557 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xc0
7558 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7559 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7560 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7561 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s33
7562 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s21
7563 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7564 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xa0
7565 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7566 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7567 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7568 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s31
7569 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s22
7570 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7571 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0x80
7572 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7573 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7574 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7575 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s30
7576 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s23
7577 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7578 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0x60
7579 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7580 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7581 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7582 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s29
7583 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s24
7584 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7585 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 64
7586 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7587 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7588 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7589 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s28
7590 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s25
7591 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7592 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 32
7593 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7594 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
7595 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
7596 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s27
7597 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s26
7598 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
7599 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7600 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
7601 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
7602 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
7603 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
7604 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7605 ; GFX7-HSA-NEXT:    s_endpgm
7607 ; GFX8-NOHSA-LABEL: constant_zextload_v32i8_to_v32i64:
7608 ; GFX8-NOHSA:       ; %bb.0:
7609 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
7610 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
7611 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
7612 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7613 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
7614 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7615 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s12, s5, 24
7616 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s13, s7, 24
7617 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s14, s9, 24
7618 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s15, s11, 24
7619 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s16, s10, 24
7620 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s17, s8, 24
7621 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s18, s6, 24
7622 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s19, s4, 24
7623 ; GFX8-NOHSA-NEXT:    s_and_b32 s2, s4, 0xff
7624 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s4
7625 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, s5, 0xff
7626 ; GFX8-NOHSA-NEXT:    s_and_b32 s20, s6, 0xff
7627 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s6
7628 ; GFX8-NOHSA-NEXT:    s_and_b32 s21, s7, 0xff
7629 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s7
7630 ; GFX8-NOHSA-NEXT:    s_and_b32 s22, s8, 0xff
7631 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v8, 8, s8
7632 ; GFX8-NOHSA-NEXT:    s_and_b32 s23, s9, 0xff
7633 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s9
7634 ; GFX8-NOHSA-NEXT:    s_and_b32 s24, s10, 0xff
7635 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v12, 8, s10
7636 ; GFX8-NOHSA-NEXT:    s_and_b32 s25, s11, 0xff
7637 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s26, s4, 0x80010
7638 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
7639 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
7640 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
7641 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s27, s5, 0x80010
7642 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
7643 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
7644 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s11, 0x80010
7645 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
7646 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xf0
7647 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s5
7648 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7649 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
7650 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
7651 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xb0
7652 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
7653 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7654 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
7655 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
7656 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
7657 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0x70
7658 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s9
7659 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s14
7660 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7661 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
7662 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
7663 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
7664 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 48
7665 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
7666 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s13
7667 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7668 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
7669 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
7670 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
7671 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xd0
7672 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s27
7673 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s12
7674 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7675 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
7676 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
7677 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
7678 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0x90
7679 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
7680 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s16
7681 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7682 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
7683 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
7684 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
7685 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0x50
7686 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
7687 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s17
7688 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7689 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
7690 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
7691 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
7692 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 16
7693 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
7694 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s18
7695 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7696 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
7697 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
7698 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
7699 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xe0
7700 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s26
7701 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
7702 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7703 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
7704 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
7705 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v13, 8, s11
7706 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
7707 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xc0
7708 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s25
7709 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v13
7710 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7711 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
7712 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
7713 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
7714 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xa0
7715 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s24
7716 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v12
7717 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7718 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
7719 ; GFX8-NOHSA-NEXT:    s_nop 0
7720 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v9
7721 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s5
7722 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s4
7723 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0x80
7724 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s23
7725 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7726 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[9:10], v[0:3]
7727 ; GFX8-NOHSA-NEXT:    s_nop 0
7728 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v8
7729 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s5
7730 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
7731 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0x60
7732 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s22
7733 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7734 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]
7735 ; GFX8-NOHSA-NEXT:    s_nop 0
7736 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v7
7737 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s5
7738 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s4
7739 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 64
7740 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s21
7741 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7742 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[7:8], v[0:3]
7743 ; GFX8-NOHSA-NEXT:    s_nop 0
7744 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v6
7745 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s5
7746 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s4
7747 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 32
7748 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s20
7749 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
7750 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
7751 ; GFX8-NOHSA-NEXT:    s_nop 0
7752 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v5
7753 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s5
7754 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s3
7755 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s4
7756 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[5:6], v[0:3]
7757 ; GFX8-NOHSA-NEXT:    s_nop 0
7758 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v4
7759 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
7760 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
7761 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
7762 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7763 ; GFX8-NOHSA-NEXT:    s_endpgm
7765 ; EG-LABEL: constant_zextload_v32i8_to_v32i64:
7766 ; EG:       ; %bb.0:
7767 ; EG-NEXT:    ALU 0, @26, KC0[CB0:0-32], KC1[]
7768 ; EG-NEXT:    TEX 1 @22
7769 ; EG-NEXT:    ALU 103, @27, KC0[CB0:0-32], KC1[]
7770 ; EG-NEXT:    ALU 33, @131, KC0[CB0:0-32], KC1[]
7771 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T42.X, 0
7772 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T41.X, 0
7773 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T40.X, 0
7774 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T39.X, 0
7775 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T38.X, 0
7776 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T37.X, 0
7777 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T36.X, 0
7778 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T35.X, 0
7779 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T34.X, 0
7780 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T33.X, 0
7781 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T32.X, 0
7782 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T31.X, 0
7783 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T30.X, 0
7784 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T29.X, 0
7785 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T28.X, 0
7786 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T27.X, 1
7787 ; EG-NEXT:    CF_END
7788 ; EG-NEXT:    PAD
7789 ; EG-NEXT:    Fetch clause starting at 22:
7790 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 0, #1
7791 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 16, #1
7792 ; EG-NEXT:    ALU clause starting at 26:
7793 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
7794 ; EG-NEXT:    ALU clause starting at 27:
7795 ; EG-NEXT:     MOV * T0.W, literal.x,
7796 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7797 ; EG-NEXT:     BFE_UINT T13.X, T11.W, literal.x, PV.W,
7798 ; EG-NEXT:     LSHR * T13.Z, T11.W, literal.y,
7799 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
7800 ; EG-NEXT:     MOV T13.Y, 0.0,
7801 ; EG-NEXT:     BFE_UINT * T14.Z, T11.W, literal.x, T0.W,
7802 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7803 ; EG-NEXT:     AND_INT T14.X, T11.W, literal.x,
7804 ; EG-NEXT:     MOV * T14.Y, 0.0,
7805 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
7806 ; EG-NEXT:     BFE_UINT T15.X, T11.Z, literal.x, T0.W,
7807 ; EG-NEXT:     LSHR * T15.Z, T11.Z, literal.y,
7808 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
7809 ; EG-NEXT:     MOV T15.Y, 0.0,
7810 ; EG-NEXT:     BFE_UINT * T16.Z, T11.Z, literal.x, T0.W,
7811 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7812 ; EG-NEXT:     AND_INT T16.X, T11.Z, literal.x,
7813 ; EG-NEXT:     MOV * T16.Y, 0.0,
7814 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
7815 ; EG-NEXT:     BFE_UINT T17.X, T11.Y, literal.x, T0.W,
7816 ; EG-NEXT:     LSHR * T17.Z, T11.Y, literal.y,
7817 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
7818 ; EG-NEXT:     MOV T17.Y, 0.0,
7819 ; EG-NEXT:     BFE_UINT * T18.Z, T11.Y, literal.x, T0.W,
7820 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7821 ; EG-NEXT:     AND_INT T18.X, T11.Y, literal.x,
7822 ; EG-NEXT:     MOV * T18.Y, 0.0,
7823 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
7824 ; EG-NEXT:     BFE_UINT T19.X, T11.X, literal.x, T0.W,
7825 ; EG-NEXT:     LSHR * T19.Z, T11.X, literal.y,
7826 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
7827 ; EG-NEXT:     MOV T19.Y, 0.0,
7828 ; EG-NEXT:     BFE_UINT * T11.Z, T11.X, literal.x, T0.W,
7829 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7830 ; EG-NEXT:     AND_INT T11.X, T11.X, literal.x,
7831 ; EG-NEXT:     MOV * T11.Y, 0.0,
7832 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
7833 ; EG-NEXT:     BFE_UINT T20.X, T12.W, literal.x, T0.W,
7834 ; EG-NEXT:     LSHR * T20.Z, T12.W, literal.y,
7835 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
7836 ; EG-NEXT:     MOV T20.Y, 0.0,
7837 ; EG-NEXT:     BFE_UINT * T21.Z, T12.W, literal.x, T0.W,
7838 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7839 ; EG-NEXT:     AND_INT T21.X, T12.W, literal.x,
7840 ; EG-NEXT:     MOV * T21.Y, 0.0,
7841 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
7842 ; EG-NEXT:     BFE_UINT T22.X, T12.Z, literal.x, T0.W,
7843 ; EG-NEXT:     LSHR * T22.Z, T12.Z, literal.y,
7844 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
7845 ; EG-NEXT:     MOV T22.Y, 0.0,
7846 ; EG-NEXT:     BFE_UINT * T23.Z, T12.Z, literal.x, T0.W,
7847 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7848 ; EG-NEXT:     AND_INT T23.X, T12.Z, literal.x,
7849 ; EG-NEXT:     MOV * T23.Y, 0.0,
7850 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
7851 ; EG-NEXT:     BFE_UINT T24.X, T12.Y, literal.x, T0.W,
7852 ; EG-NEXT:     LSHR * T24.Z, T12.Y, literal.y,
7853 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
7854 ; EG-NEXT:     MOV T24.Y, 0.0,
7855 ; EG-NEXT:     BFE_UINT * T25.Z, T12.Y, literal.x, T0.W,
7856 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7857 ; EG-NEXT:     AND_INT T25.X, T12.Y, literal.x,
7858 ; EG-NEXT:     MOV * T25.Y, 0.0,
7859 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
7860 ; EG-NEXT:     BFE_UINT T26.X, T12.X, literal.x, T0.W,
7861 ; EG-NEXT:     LSHR * T26.Z, T12.X, literal.y,
7862 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
7863 ; EG-NEXT:     MOV T26.Y, 0.0,
7864 ; EG-NEXT:     BFE_UINT * T12.Z, T12.X, literal.x, T0.W,
7865 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7866 ; EG-NEXT:     AND_INT T12.X, T12.X, literal.x,
7867 ; EG-NEXT:     MOV T12.Y, 0.0,
7868 ; EG-NEXT:     MOV T13.W, 0.0,
7869 ; EG-NEXT:     MOV * T14.W, 0.0,
7870 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
7871 ; EG-NEXT:     MOV T15.W, 0.0,
7872 ; EG-NEXT:     MOV * T16.W, 0.0,
7873 ; EG-NEXT:     MOV T17.W, 0.0,
7874 ; EG-NEXT:     MOV * T18.W, 0.0,
7875 ; EG-NEXT:     MOV T19.W, 0.0,
7876 ; EG-NEXT:     MOV * T11.W, 0.0,
7877 ; EG-NEXT:     MOV T20.W, 0.0,
7878 ; EG-NEXT:     MOV * T21.W, 0.0,
7879 ; EG-NEXT:     MOV T22.W, 0.0,
7880 ; EG-NEXT:     MOV * T23.W, 0.0,
7881 ; EG-NEXT:     MOV T24.W, 0.0,
7882 ; EG-NEXT:     MOV * T25.W, 0.0,
7883 ; EG-NEXT:     MOV T26.W, 0.0,
7884 ; EG-NEXT:     MOV * T12.W, 0.0,
7885 ; EG-NEXT:     LSHR T27.X, KC0[2].Y, literal.x,
7886 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7887 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7888 ; EG-NEXT:     LSHR T28.X, PV.W, literal.x,
7889 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7890 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
7891 ; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
7892 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7893 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
7894 ; EG-NEXT:     LSHR T30.X, PV.W, literal.x,
7895 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7896 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
7897 ; EG-NEXT:     LSHR * T31.X, PV.W, literal.x,
7898 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7899 ; EG-NEXT:    ALU clause starting at 131:
7900 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
7901 ; EG-NEXT:    80(1.121039e-43), 0(0.000000e+00)
7902 ; EG-NEXT:     LSHR T32.X, PV.W, literal.x,
7903 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7904 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
7905 ; EG-NEXT:     LSHR T33.X, PV.W, literal.x,
7906 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7907 ; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
7908 ; EG-NEXT:     LSHR T34.X, PV.W, literal.x,
7909 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7910 ; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
7911 ; EG-NEXT:     LSHR T35.X, PV.W, literal.x,
7912 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7913 ; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
7914 ; EG-NEXT:     LSHR T36.X, PV.W, literal.x,
7915 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7916 ; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
7917 ; EG-NEXT:     LSHR T37.X, PV.W, literal.x,
7918 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7919 ; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
7920 ; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
7921 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7922 ; EG-NEXT:    2(2.802597e-45), 192(2.690493e-43)
7923 ; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
7924 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7925 ; EG-NEXT:    2(2.802597e-45), 208(2.914701e-43)
7926 ; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
7927 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7928 ; EG-NEXT:    2(2.802597e-45), 224(3.138909e-43)
7929 ; EG-NEXT:     LSHR T41.X, PV.W, literal.x,
7930 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7931 ; EG-NEXT:    2(2.802597e-45), 240(3.363116e-43)
7932 ; EG-NEXT:     LSHR * T42.X, PV.W, literal.x,
7933 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7935 ; GFX12-LABEL: constant_zextload_v32i8_to_v32i64:
7936 ; GFX12:       ; %bb.0:
7937 ; GFX12-NEXT:    s_load_b128 s[8:11], s[2:3], 0x24
7938 ; GFX12-NEXT:    s_wait_kmcnt 0x0
7939 ; GFX12-NEXT:    s_load_b256 s[0:7], s[10:11], 0x0
7940 ; GFX12-NEXT:    s_wait_kmcnt 0x0
7941 ; GFX12-NEXT:    s_bfe_u32 s10, s7, 0x80010
7942 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
7943 ; GFX12-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s10
7944 ; GFX12-NEXT:    s_lshr_b32 s11, s7, 24
7945 ; GFX12-NEXT:    s_lshr_b32 s10, s5, 24
7946 ; GFX12-NEXT:    v_dual_mov_b32 v2, s11 :: v_dual_mov_b32 v3, v1
7947 ; GFX12-NEXT:    s_bfe_u32 s11, s5, 0x80010
7948 ; GFX12-NEXT:    v_lshrrev_b16 v4, 8, s7
7949 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s6
7950 ; GFX12-NEXT:    s_and_b32 s7, s7, 0xff
7951 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:240
7952 ; GFX12-NEXT:    v_mov_b32_e32 v0, s11
7953 ; GFX12-NEXT:    v_mov_b32_e32 v2, s10
7954 ; GFX12-NEXT:    s_lshr_b32 s10, s3, 24
7955 ; GFX12-NEXT:    s_bfe_u32 s11, s3, 0x80010
7956 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v4
7957 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:176
7958 ; GFX12-NEXT:    v_mov_b32_e32 v0, s11
7959 ; GFX12-NEXT:    v_mov_b32_e32 v2, s10
7960 ; GFX12-NEXT:    s_lshr_b32 s10, s1, 24
7961 ; GFX12-NEXT:    s_bfe_u32 s11, s1, 0x80010
7962 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:112
7963 ; GFX12-NEXT:    v_mov_b32_e32 v0, s11
7964 ; GFX12-NEXT:    v_mov_b32_e32 v2, s10
7965 ; GFX12-NEXT:    s_lshr_b32 s10, s6, 24
7966 ; GFX12-NEXT:    s_bfe_u32 s11, s6, 0x80010
7967 ; GFX12-NEXT:    s_and_b32 s6, s6, 0xff
7968 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:48
7969 ; GFX12-NEXT:    v_mov_b32_e32 v0, s11
7970 ; GFX12-NEXT:    v_mov_b32_e32 v2, s10
7971 ; GFX12-NEXT:    s_lshr_b32 s10, s4, 24
7972 ; GFX12-NEXT:    s_bfe_u32 s11, s4, 0x80010
7973 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:208
7974 ; GFX12-NEXT:    v_mov_b32_e32 v0, s11
7975 ; GFX12-NEXT:    v_mov_b32_e32 v2, s10
7976 ; GFX12-NEXT:    s_lshr_b32 s10, s2, 24
7977 ; GFX12-NEXT:    s_bfe_u32 s11, s2, 0x80010
7978 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:144
7979 ; GFX12-NEXT:    v_mov_b32_e32 v0, s11
7980 ; GFX12-NEXT:    v_mov_b32_e32 v2, s10
7981 ; GFX12-NEXT:    s_lshr_b32 s10, s0, 24
7982 ; GFX12-NEXT:    s_bfe_u32 s11, s0, 0x80010
7983 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:80
7984 ; GFX12-NEXT:    v_mov_b32_e32 v0, s11
7985 ; GFX12-NEXT:    v_mov_b32_e32 v2, s10
7986 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:16
7987 ; GFX12-NEXT:    v_mov_b32_e32 v0, s7
7988 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
7989 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
7990 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s5
7991 ; GFX12-NEXT:    s_and_b32 s5, s5, 0xff
7992 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:224
7993 ; GFX12-NEXT:    v_mov_b32_e32 v0, s6
7994 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
7995 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
7996 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s4
7997 ; GFX12-NEXT:    s_and_b32 s4, s4, 0xff
7998 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:192
7999 ; GFX12-NEXT:    v_mov_b32_e32 v0, s5
8000 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
8001 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
8002 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s3
8003 ; GFX12-NEXT:    s_and_b32 s3, s3, 0xff
8004 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:160
8005 ; GFX12-NEXT:    v_mov_b32_e32 v0, s4
8006 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
8007 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
8008 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s2
8009 ; GFX12-NEXT:    s_and_b32 s2, s2, 0xff
8010 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:128
8011 ; GFX12-NEXT:    v_mov_b32_e32 v0, s3
8012 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
8013 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
8014 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s1
8015 ; GFX12-NEXT:    s_and_b32 s1, s1, 0xff
8016 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:96
8017 ; GFX12-NEXT:    v_mov_b32_e32 v0, s2
8018 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
8019 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
8020 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s0
8021 ; GFX12-NEXT:    s_and_b32 s0, s0, 0xff
8022 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:64
8023 ; GFX12-NEXT:    v_mov_b32_e32 v0, s1
8024 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
8025 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v5
8026 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9] offset:32
8027 ; GFX12-NEXT:    v_mov_b32_e32 v0, s0
8028 ; GFX12-NEXT:    v_mov_b32_e32 v2, v4
8029 ; GFX12-NEXT:    global_store_b128 v1, v[0:3], s[8:9]
8030 ; GFX12-NEXT:    s_nop 0
8031 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
8032 ; GFX12-NEXT:    s_endpgm
8033   %load = load <32 x i8>, ptr addrspace(4) %in
8034   %ext = zext <32 x i8> %load to <32 x i64>
8035   store <32 x i64> %ext, ptr addrspace(1) %out
8036   ret void
8039 define amdgpu_kernel void @constant_sextload_v32i8_to_v32i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8040 ; GFX6-NOHSA-LABEL: constant_sextload_v32i8_to_v32i64:
8041 ; GFX6-NOHSA:       ; %bb.0:
8042 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x9
8043 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8044 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
8045 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8046 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s46, s7, 16
8047 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s48, s7, 8
8048 ; GFX6-NOHSA-NEXT:    s_mov_b32 s50, s7
8049 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s10, s6, 16
8050 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s12, s6, 24
8051 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s6, 8
8052 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s16, s5, 16
8053 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s18, s5, 8
8054 ; GFX6-NOHSA-NEXT:    s_mov_b32 s44, s5
8055 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s20, s4, 16
8056 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s22, s4, 24
8057 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s24, s4, 8
8058 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s26, s3, 16
8059 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s28, s3, 8
8060 ; GFX6-NOHSA-NEXT:    s_mov_b32 s40, s3
8061 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s30, s2, 16
8062 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s34, s2, 24
8063 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s36, s2, 8
8064 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s38, s1, 16
8065 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s42, s1, 8
8066 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[58:59], s[50:51], 0x80000
8067 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[60:61], s[44:45], 0x80000
8068 ; GFX6-NOHSA-NEXT:    s_mov_b32 s62, s1
8069 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s56, s0, 16
8070 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s64, s0, 24
8071 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s66, s0, 8
8072 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[44:45], s[0:1], 0x80000
8073 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[50:51], s[0:1], 56
8074 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[52:53], s[2:3], 0x80000
8075 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[68:69], s[4:5], 56
8076 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[70:71], s[6:7], 0x80000
8077 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[6:7], s[6:7], 56
8078 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
8079 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[54:55], s[2:3], 56
8080 ; GFX6-NOHSA-NEXT:    s_mov_b32 s0, s8
8081 ; GFX6-NOHSA-NEXT:    s_mov_b32 s1, s9
8082 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s6
8083 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s7
8084 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v16, s58
8085 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v17, s59
8086 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s70
8087 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s71
8088 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s68
8089 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s69
8090 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s60
8091 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s61
8092 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s4
8093 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s5
8094 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
8095 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[46:47], 0x80000
8096 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[48:49], 0x80000
8097 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
8098 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s4
8099 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s5
8100 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v18, s6
8101 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v19, s7
8102 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:240
8103 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[46:47], s[62:63], 0x80000
8104 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[48:49], s[40:41], 0x80000
8105 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[66:67], 0x80000
8106 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[64:65], 0x80000
8107 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[8:9], s[56:57], 0x80000
8108 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[40:41], s[42:43], 0x80000
8109 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[38:39], s[38:39], 0x80000
8110 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[36:37], s[36:37], 0x80000
8111 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[34:35], s[34:35], 0x80000
8112 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[30:31], s[30:31], 0x80000
8113 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[28:29], s[28:29], 0x80000
8114 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
8115 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x80000
8116 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
8117 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
8118 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
8119 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
8120 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
8121 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
8122 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
8123 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:224
8124 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(1)
8125 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s10
8126 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s11
8127 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s12
8128 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s13
8129 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:208
8130 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
8131 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s54
8132 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s55
8133 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s14
8134 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s15
8135 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[6:9], off, s[0:3], 0 offset:192
8136 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
8137 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s48
8138 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s49
8139 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s16
8140 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s17
8141 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
8142 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
8143 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s52
8144 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s53
8145 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s18
8146 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s19
8147 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[10:13], off, s[0:3], 0 offset:160
8148 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
8149 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s20
8150 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s21
8151 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s22
8152 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s23
8153 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[10:13], off, s[0:3], 0 offset:144
8154 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v16, s50
8155 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v17, s51
8156 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s24
8157 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s25
8158 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:128
8159 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
8160 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s46
8161 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s47
8162 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s26
8163 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s27
8164 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:112
8165 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
8166 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s44
8167 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s45
8168 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s28
8169 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s29
8170 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:96
8171 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s30
8172 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s31
8173 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
8174 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s34
8175 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s35
8176 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[6:9], off, s[0:3], 0 offset:80
8177 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s36
8178 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s37
8179 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
8180 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s38
8181 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s39
8182 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:48
8183 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(2)
8184 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s40
8185 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s41
8186 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32
8187 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(2)
8188 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
8189 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
8190 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
8191 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s7
8192 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
8193 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(2)
8194 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s4
8195 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s5
8196 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0
8197 ; GFX6-NOHSA-NEXT:    s_endpgm
8199 ; GFX7-HSA-LABEL: constant_sextload_v32i8_to_v32i64:
8200 ; GFX7-HSA:       ; %bb.0:
8201 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[8:11], s[6:7], 0x0
8202 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8203 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
8204 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8205 ; GFX7-HSA-NEXT:    s_lshr_b32 s14, s7, 16
8206 ; GFX7-HSA-NEXT:    s_lshr_b32 s48, s7, 8
8207 ; GFX7-HSA-NEXT:    s_mov_b32 s50, s7
8208 ; GFX7-HSA-NEXT:    s_lshr_b32 s52, s6, 16
8209 ; GFX7-HSA-NEXT:    s_lshr_b32 s54, s6, 24
8210 ; GFX7-HSA-NEXT:    s_lshr_b32 s56, s6, 8
8211 ; GFX7-HSA-NEXT:    s_lshr_b32 s58, s5, 16
8212 ; GFX7-HSA-NEXT:    s_lshr_b32 s60, s5, 8
8213 ; GFX7-HSA-NEXT:    s_mov_b32 s62, s5
8214 ; GFX7-HSA-NEXT:    s_lshr_b32 s44, s4, 16
8215 ; GFX7-HSA-NEXT:    s_lshr_b32 s40, s4, 24
8216 ; GFX7-HSA-NEXT:    s_lshr_b32 s38, s4, 8
8217 ; GFX7-HSA-NEXT:    s_lshr_b32 s36, s3, 16
8218 ; GFX7-HSA-NEXT:    s_lshr_b32 s30, s3, 8
8219 ; GFX7-HSA-NEXT:    s_mov_b32 s34, s3
8220 ; GFX7-HSA-NEXT:    s_lshr_b32 s28, s2, 16
8221 ; GFX7-HSA-NEXT:    s_lshr_b32 s26, s2, 24
8222 ; GFX7-HSA-NEXT:    s_lshr_b32 s22, s2, 8
8223 ; GFX7-HSA-NEXT:    s_lshr_b32 s18, s1, 16
8224 ; GFX7-HSA-NEXT:    s_lshr_b32 s64, s1, 8
8225 ; GFX7-HSA-NEXT:    s_mov_b32 s16, s1
8226 ; GFX7-HSA-NEXT:    s_lshr_b32 s66, s0, 16
8227 ; GFX7-HSA-NEXT:    s_lshr_b32 s68, s0, 24
8228 ; GFX7-HSA-NEXT:    s_lshr_b32 s70, s0, 8
8229 ; GFX7-HSA-NEXT:    s_bfe_i64 s[12:13], s[2:3], 0x80000
8230 ; GFX7-HSA-NEXT:    s_ashr_i64 s[20:21], s[2:3], 56
8231 ; GFX7-HSA-NEXT:    s_bfe_i64 s[24:25], s[4:5], 0x80000
8232 ; GFX7-HSA-NEXT:    s_ashr_i64 s[42:43], s[4:5], 56
8233 ; GFX7-HSA-NEXT:    s_ashr_i64 s[2:3], s[6:7], 56
8234 ; GFX7-HSA-NEXT:    s_bfe_i64 s[4:5], s[14:15], 0x80000
8235 ; GFX7-HSA-NEXT:    s_bfe_i64 s[10:11], s[0:1], 0x80000
8236 ; GFX7-HSA-NEXT:    s_ashr_i64 s[0:1], s[0:1], 56
8237 ; GFX7-HSA-NEXT:    s_bfe_i64 s[46:47], s[6:7], 0x80000
8238 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
8239 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s5
8240 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
8241 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s3
8242 ; GFX7-HSA-NEXT:    s_bfe_i64 s[2:3], s[70:71], 0x80000
8243 ; GFX7-HSA-NEXT:    s_bfe_i64 s[4:5], s[68:69], 0x80000
8244 ; GFX7-HSA-NEXT:    s_bfe_i64 s[6:7], s[66:67], 0x80000
8245 ; GFX7-HSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
8246 ; GFX7-HSA-NEXT:    s_bfe_i64 s[14:15], s[64:65], 0x80000
8247 ; GFX7-HSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
8248 ; GFX7-HSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
8249 ; GFX7-HSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
8250 ; GFX7-HSA-NEXT:    s_bfe_i64 s[28:29], s[28:29], 0x80000
8251 ; GFX7-HSA-NEXT:    s_bfe_i64 s[34:35], s[34:35], 0x80000
8252 ; GFX7-HSA-NEXT:    s_bfe_i64 s[30:31], s[30:31], 0x80000
8253 ; GFX7-HSA-NEXT:    s_bfe_i64 s[36:37], s[36:37], 0x80000
8254 ; GFX7-HSA-NEXT:    s_bfe_i64 s[38:39], s[38:39], 0x80000
8255 ; GFX7-HSA-NEXT:    s_bfe_i64 s[40:41], s[40:41], 0x80000
8256 ; GFX7-HSA-NEXT:    s_bfe_i64 s[44:45], s[44:45], 0x80000
8257 ; GFX7-HSA-NEXT:    s_bfe_i64 s[62:63], s[62:63], 0x80000
8258 ; GFX7-HSA-NEXT:    s_bfe_i64 s[60:61], s[60:61], 0x80000
8259 ; GFX7-HSA-NEXT:    s_bfe_i64 s[58:59], s[58:59], 0x80000
8260 ; GFX7-HSA-NEXT:    s_bfe_i64 s[56:57], s[56:57], 0x80000
8261 ; GFX7-HSA-NEXT:    s_bfe_i64 s[54:55], s[54:55], 0x80000
8262 ; GFX7-HSA-NEXT:    s_bfe_i64 s[52:53], s[52:53], 0x80000
8263 ; GFX7-HSA-NEXT:    s_bfe_i64 s[50:51], s[50:51], 0x80000
8264 ; GFX7-HSA-NEXT:    s_bfe_i64 s[48:49], s[48:49], 0x80000
8265 ; GFX7-HSA-NEXT:    s_add_u32 s64, s8, 0xf0
8266 ; GFX7-HSA-NEXT:    s_addc_u32 s65, s9, 0
8267 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s48
8268 ; GFX7-HSA-NEXT:    s_add_u32 s48, s8, 0xe0
8269 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s49
8270 ; GFX7-HSA-NEXT:    s_addc_u32 s49, s9, 0
8271 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v24, s48
8272 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v25, s49
8273 ; GFX7-HSA-NEXT:    s_add_u32 s48, s8, 0xd0
8274 ; GFX7-HSA-NEXT:    s_addc_u32 s49, s9, 0
8275 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v12, s46
8276 ; GFX7-HSA-NEXT:    s_add_u32 s46, s8, 0xc0
8277 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v13, s47
8278 ; GFX7-HSA-NEXT:    s_addc_u32 s47, s9, 0
8279 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v18, s42
8280 ; GFX7-HSA-NEXT:    s_add_u32 s42, s8, 0xb0
8281 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v19, s43
8282 ; GFX7-HSA-NEXT:    s_addc_u32 s43, s9, 0
8283 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v30, s42
8284 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s64
8285 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v31, s43
8286 ; GFX7-HSA-NEXT:    s_add_u32 s42, s8, 0xa0
8287 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s65
8288 ; GFX7-HSA-NEXT:    s_addc_u32 s43, s9, 0
8289 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
8290 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s50
8291 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s40
8292 ; GFX7-HSA-NEXT:    s_add_u32 s40, s8, 0x90
8293 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s51
8294 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v26, s48
8295 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s41
8296 ; GFX7-HSA-NEXT:    s_addc_u32 s41, s9, 0
8297 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s52
8298 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s53
8299 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v10, s54
8300 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v11, s55
8301 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v27, s49
8302 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v28, s46
8303 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
8304 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v14, s56
8305 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s24
8306 ; GFX7-HSA-NEXT:    s_add_u32 s24, s8, 0x80
8307 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v15, s57
8308 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v29, s47
8309 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v16, s58
8310 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v17, s59
8311 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v32, s42
8312 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
8313 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s25
8314 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s40
8315 ; GFX7-HSA-NEXT:    s_addc_u32 s25, s9, 0
8316 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v10, s24
8317 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v20, s62
8318 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v21, s63
8319 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v33, s43
8320 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s60
8321 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s61
8322 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s44
8323 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s45
8324 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s41
8325 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
8326 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s38
8327 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s39
8328 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v11, s25
8329 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
8330 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
8331 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]
8332 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]
8333 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s20
8334 ; GFX7-HSA-NEXT:    s_add_u32 s20, s8, 0x70
8335 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s21
8336 ; GFX7-HSA-NEXT:    s_addc_u32 s21, s9, 0
8337 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s20
8338 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s36
8339 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s37
8340 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s21
8341 ; GFX7-HSA-NEXT:    s_add_u32 s20, s8, 0x60
8342 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8343 ; GFX7-HSA-NEXT:    s_addc_u32 s21, s9, 0
8344 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s20
8345 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s34
8346 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s35
8347 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s30
8348 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s31
8349 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s21
8350 ; GFX7-HSA-NEXT:    s_add_u32 s20, s8, 0x50
8351 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8352 ; GFX7-HSA-NEXT:    s_addc_u32 s21, s9, 0
8353 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s20
8354 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s28
8355 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s29
8356 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s26
8357 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s27
8358 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s21
8359 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8360 ; GFX7-HSA-NEXT:    s_nop 0
8361 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s12
8362 ; GFX7-HSA-NEXT:    s_add_u32 s12, s8, 64
8363 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s13
8364 ; GFX7-HSA-NEXT:    s_addc_u32 s13, s9, 0
8365 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s12
8366 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s22
8367 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s23
8368 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s13
8369 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8370 ; GFX7-HSA-NEXT:    s_nop 0
8371 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
8372 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 48
8373 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
8374 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
8375 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
8376 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
8377 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 32
8378 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s18
8379 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s19
8380 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
8381 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8382 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
8383 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
8384 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 16
8385 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s16
8386 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
8387 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s14
8388 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s15
8389 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
8390 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8391 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
8392 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
8393 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s7
8394 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
8395 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s5
8396 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
8397 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8398 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s8
8399 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
8400 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s11
8401 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
8402 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s3
8403 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s9
8404 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8405 ; GFX7-HSA-NEXT:    s_endpgm
8407 ; GFX8-NOHSA-LABEL: constant_sextload_v32i8_to_v32i64:
8408 ; GFX8-NOHSA:       ; %bb.0:
8409 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x24
8410 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8411 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
8412 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8413 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s28, s7, 16
8414 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s30, s6, 16
8415 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s34, s6, 24
8416 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s36, s5, 16
8417 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s38, s4, 16
8418 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s40, s4, 24
8419 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s42, s3, 16
8420 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s44, s2, 16
8421 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s46, s2, 24
8422 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s26, s1, 16
8423 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s22, s0, 16
8424 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s20, s0, 24
8425 ; GFX8-NOHSA-NEXT:    s_mov_b32 s48, s7
8426 ; GFX8-NOHSA-NEXT:    s_mov_b32 s50, s5
8427 ; GFX8-NOHSA-NEXT:    s_mov_b32 s52, s3
8428 ; GFX8-NOHSA-NEXT:    s_mov_b32 s54, s1
8429 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s7
8430 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s6
8431 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s5
8432 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s4
8433 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v8, 8, s3
8434 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s2
8435 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s1
8436 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s0
8437 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[0:1], 0x80000
8438 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[2:3], 0x80000
8439 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[14:15], s[4:5], 0x80000
8440 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[16:17], s[6:7], 0x80000
8441 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[18:19], s[0:1], 56
8442 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[24:25], s[2:3], 56
8443 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[56:57], s[4:5], 56
8444 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[58:59], s[6:7], 56
8445 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[0:1], s[54:55], 0x80000
8446 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[2:3], s[52:53], 0x80000
8447 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[50:51], 0x80000
8448 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[48:49], 0x80000
8449 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
8450 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
8451 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
8452 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[46:47], s[46:47], 0x80000
8453 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[44:45], s[44:45], 0x80000
8454 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[42:43], s[42:43], 0x80000
8455 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[40:41], s[40:41], 0x80000
8456 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[38:39], s[38:39], 0x80000
8457 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[36:37], s[36:37], 0x80000
8458 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[34:35], s[34:35], 0x80000
8459 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[30:31], s[30:31], 0x80000
8460 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[28:29], s[28:29], 0x80000
8461 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s28
8462 ; GFX8-NOHSA-NEXT:    s_add_u32 s28, s8, 0xf0
8463 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v10, v9, 0, 8
8464 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v14, v8, 0, 8
8465 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s29
8466 ; GFX8-NOHSA-NEXT:    s_addc_u32 s29, s9, 0
8467 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s28
8468 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s58
8469 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s59
8470 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s29
8471 ; GFX8-NOHSA-NEXT:    s_add_u32 s28, s8, 0xd0
8472 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[16:19]
8473 ; GFX8-NOHSA-NEXT:    s_addc_u32 s29, s9, 0
8474 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s28
8475 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s30
8476 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s31
8477 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s34
8478 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s35
8479 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s29
8480 ; GFX8-NOHSA-NEXT:    s_add_u32 s28, s8, 0xb0
8481 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[16:19]
8482 ; GFX8-NOHSA-NEXT:    s_addc_u32 s29, s9, 0
8483 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s28
8484 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s36
8485 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s37
8486 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s56
8487 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s57
8488 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s29
8489 ; GFX8-NOHSA-NEXT:    s_add_u32 s28, s8, 0x90
8490 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[16:19]
8491 ; GFX8-NOHSA-NEXT:    s_addc_u32 s29, s9, 0
8492 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s28
8493 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s38
8494 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s39
8495 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s40
8496 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s41
8497 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s29
8498 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[16:19]
8499 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v20, s6
8500 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s24
8501 ; GFX8-NOHSA-NEXT:    s_add_u32 s24, s8, 0x70
8502 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s25
8503 ; GFX8-NOHSA-NEXT:    s_addc_u32 s25, s9, 0
8504 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s24
8505 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s42
8506 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s43
8507 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s25
8508 ; GFX8-NOHSA-NEXT:    s_add_u32 s24, s8, 0x50
8509 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[16:19]
8510 ; GFX8-NOHSA-NEXT:    s_addc_u32 s25, s9, 0
8511 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s24
8512 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s44
8513 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s45
8514 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s46
8515 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s47
8516 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s25
8517 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[16:19]
8518 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v22, v4, 0, 8
8519 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s18
8520 ; GFX8-NOHSA-NEXT:    s_add_u32 s18, s8, 48
8521 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s19
8522 ; GFX8-NOHSA-NEXT:    s_addc_u32 s19, s9, 0
8523 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s18
8524 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s26
8525 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s27
8526 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s19
8527 ; GFX8-NOHSA-NEXT:    s_add_u32 s18, s8, 16
8528 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[16:19]
8529 ; GFX8-NOHSA-NEXT:    s_addc_u32 s19, s9, 0
8530 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s18
8531 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s22
8532 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s23
8533 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s20
8534 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s21
8535 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s19
8536 ; GFX8-NOHSA-NEXT:    s_add_u32 s6, s8, 0xe0
8537 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[16:19]
8538 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v21, s7
8539 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v18, v5, 0, 8
8540 ; GFX8-NOHSA-NEXT:    s_addc_u32 s7, s9, 0
8541 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s6
8542 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v23, 31, v22
8543 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s7
8544 ; GFX8-NOHSA-NEXT:    s_add_u32 s6, s8, 0xc0
8545 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[20:23]
8546 ; GFX8-NOHSA-NEXT:    s_addc_u32 s7, s9, 0
8547 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v22, v1, 0, 8
8548 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s6
8549 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v23, 31, v22
8550 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v20, s16
8551 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v21, s17
8552 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s7
8553 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[20:23]
8554 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v19, 31, v18
8555 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v20, s4
8556 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s8, 0xa0
8557 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v22, v0, 0, 8
8558 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v21, s5
8559 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s9, 0
8560 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
8561 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v23, 31, v22
8562 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
8563 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s8, 0x80
8564 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[20:23]
8565 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s9, 0
8566 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
8567 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s14
8568 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s15
8569 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
8570 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s2
8571 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s8, 0x60
8572 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
8573 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s3
8574 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s9, 0
8575 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
8576 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
8577 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
8578 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s8, 64
8579 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[12:15]
8580 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s9, 0
8581 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
8582 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
8583 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s12
8584 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s13
8585 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
8586 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
8587 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 32
8588 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v6, v6, 0, 8
8589 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]
8590 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
8591 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
8592 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
8593 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
8594 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
8595 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
8596 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
8597 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
8598 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
8599 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
8600 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
8601 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
8602 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8603 ; GFX8-NOHSA-NEXT:    s_endpgm
8605 ; EG-LABEL: constant_sextload_v32i8_to_v32i64:
8606 ; EG:       ; %bb.0:
8607 ; EG-NEXT:    ALU 0, @26, KC0[CB0:0-32], KC1[]
8608 ; EG-NEXT:    TEX 1 @22
8609 ; EG-NEXT:    ALU 84, @27, KC0[CB0:0-32], KC1[]
8610 ; EG-NEXT:    ALU 71, @112, KC0[], KC1[]
8611 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T42.X, 0
8612 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T31.X, 0
8613 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T30.X, 0
8614 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T25.X, 0
8615 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T24.X, 0
8616 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T23.X, 0
8617 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T22.X, 0
8618 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T21.X, 0
8619 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T20.X, 0
8620 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T19.X, 0
8621 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T18.X, 0
8622 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T17.X, 0
8623 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T16.X, 0
8624 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T15.X, 0
8625 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T14.X, 0
8626 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T13.X, 1
8627 ; EG-NEXT:    CF_END
8628 ; EG-NEXT:    PAD
8629 ; EG-NEXT:    Fetch clause starting at 22:
8630 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 0, #1
8631 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 16, #1
8632 ; EG-NEXT:    ALU clause starting at 26:
8633 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
8634 ; EG-NEXT:    ALU clause starting at 27:
8635 ; EG-NEXT:     LSHR T13.X, KC0[2].Y, literal.x,
8636 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8637 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
8638 ; EG-NEXT:     LSHR T14.X, PV.W, literal.x,
8639 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8640 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
8641 ; EG-NEXT:     LSHR T15.X, PV.W, literal.x,
8642 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8643 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
8644 ; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
8645 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8646 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
8647 ; EG-NEXT:     LSHR T17.X, PV.W, literal.x,
8648 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8649 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
8650 ; EG-NEXT:     LSHR T18.X, PV.W, literal.x,
8651 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8652 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
8653 ; EG-NEXT:     LSHR T19.X, PV.W, literal.x,
8654 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8655 ; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
8656 ; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
8657 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8658 ; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
8659 ; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
8660 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8661 ; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
8662 ; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
8663 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8664 ; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
8665 ; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
8666 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8667 ; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
8668 ; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
8669 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8670 ; EG-NEXT:    2(2.802597e-45), 192(2.690493e-43)
8671 ; EG-NEXT:     LSHR * T25.X, PV.W, literal.x,
8672 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
8673 ; EG-NEXT:     BFE_INT * T26.X, T11.W, 0.0, literal.x,
8674 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8675 ; EG-NEXT:     BFE_INT T27.X, T11.Y, 0.0, literal.x,
8676 ; EG-NEXT:     ASHR T26.Y, PV.X, literal.y,
8677 ; EG-NEXT:     LSHR * T0.W, T11.W, literal.x,
8678 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8679 ; EG-NEXT:     BFE_INT T28.X, T11.X, 0.0, literal.x,
8680 ; EG-NEXT:     ASHR T27.Y, PV.X, literal.y,
8681 ; EG-NEXT:     BFE_INT T26.Z, PV.W, 0.0, literal.x,
8682 ; EG-NEXT:     LSHR * T0.W, T11.Y, literal.x,
8683 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8684 ; EG-NEXT:     BFE_INT T29.X, T12.W, 0.0, literal.x,
8685 ; EG-NEXT:     ASHR T28.Y, PV.X, literal.y,
8686 ; EG-NEXT:     BFE_INT T27.Z, PV.W, 0.0, literal.x,
8687 ; EG-NEXT:     LSHR T0.W, T11.X, literal.x,
8688 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
8689 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8690 ; EG-NEXT:    208(2.914701e-43), 0(0.000000e+00)
8691 ; EG-NEXT:     LSHR T30.X, PS, literal.x,
8692 ; EG-NEXT:     ASHR T29.Y, PV.X, literal.y,
8693 ; EG-NEXT:     BFE_INT T28.Z, PV.W, 0.0, literal.z,
8694 ; EG-NEXT:     LSHR T0.W, T12.W, literal.z,
8695 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
8696 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
8697 ; EG-NEXT:    8(1.121039e-44), 224(3.138909e-43)
8698 ; EG-NEXT:     LSHR T31.X, PS, literal.x,
8699 ; EG-NEXT:     BFE_INT T29.Z, PV.W, 0.0, literal.y,
8700 ; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.z,
8701 ; EG-NEXT:     ASHR * T32.W, T12.X, literal.w,
8702 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
8703 ; EG-NEXT:    240(3.363116e-43), 31(4.344025e-44)
8704 ; EG-NEXT:     BFE_INT T33.X, T12.Z, 0.0, literal.x,
8705 ; EG-NEXT:     LSHR T0.Y, T11.Z, literal.x, BS:VEC_120/SCL_212
8706 ; EG-NEXT:     ASHR T32.Z, T12.X, literal.y,
8707 ; EG-NEXT:     LSHR T1.W, T12.X, literal.z,
8708 ; EG-NEXT:     ASHR * T34.W, T12.Y, literal.w,
8709 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
8710 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8711 ; EG-NEXT:     BFE_INT T32.X, PV.W, 0.0, literal.x,
8712 ; EG-NEXT:     ASHR T33.Y, PV.X, literal.y,
8713 ; EG-NEXT:     ASHR T34.Z, T12.Y, literal.z,
8714 ; EG-NEXT:     LSHR T1.W, T12.Z, literal.x,
8715 ; EG-NEXT:     LSHR * T2.W, T12.Y, literal.w,
8716 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8717 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
8718 ; EG-NEXT:     BFE_INT * T34.X, PS, 0.0, literal.x,
8719 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8720 ; EG-NEXT:    ALU clause starting at 112:
8721 ; EG-NEXT:     ASHR T32.Y, T32.X, literal.x,
8722 ; EG-NEXT:     BFE_INT T33.Z, T1.W, 0.0, literal.y,
8723 ; EG-NEXT:     LSHR T1.W, T11.W, literal.z, BS:VEC_120/SCL_212
8724 ; EG-NEXT:     ASHR * T35.W, T12.Z, literal.x,
8725 ; EG-NEXT:    31(4.344025e-44), 8(1.121039e-44)
8726 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8727 ; EG-NEXT:     BFE_INT T36.X, T12.X, 0.0, literal.x,
8728 ; EG-NEXT:     ASHR T34.Y, T34.X, literal.y, BS:VEC_120/SCL_212
8729 ; EG-NEXT:     ASHR T35.Z, T12.Z, literal.z,
8730 ; EG-NEXT:     LSHR T2.W, T12.Z, literal.w,
8731 ; EG-NEXT:     ASHR * T37.W, T12.W, literal.y,
8732 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8733 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
8734 ; EG-NEXT:     BFE_INT T35.X, PV.W, 0.0, literal.x,
8735 ; EG-NEXT:     ASHR T36.Y, PV.X, literal.y,
8736 ; EG-NEXT:     ASHR T37.Z, T12.W, literal.z,
8737 ; EG-NEXT:     LSHR T2.W, T12.X, literal.x,
8738 ; EG-NEXT:     LSHR * T3.W, T12.W, literal.w,
8739 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8740 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
8741 ; EG-NEXT:     BFE_INT T37.X, PS, 0.0, literal.x,
8742 ; EG-NEXT:     ASHR T35.Y, PV.X, literal.y,
8743 ; EG-NEXT:     BFE_INT T36.Z, PV.W, 0.0, literal.x,
8744 ; EG-NEXT:     LSHR T2.W, T11.Z, literal.z,
8745 ; EG-NEXT:     ASHR * T12.W, T11.X, literal.y,
8746 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8747 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8748 ; EG-NEXT:     BFE_INT T38.X, T12.Y, 0.0, literal.x,
8749 ; EG-NEXT:     ASHR T37.Y, PV.X, literal.y,
8750 ; EG-NEXT:     ASHR T12.Z, T11.X, literal.z,
8751 ; EG-NEXT:     LSHR T3.W, T11.X, literal.w,
8752 ; EG-NEXT:     ASHR * T39.W, T11.Y, literal.y,
8753 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8754 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
8755 ; EG-NEXT:     BFE_INT T12.X, PV.W, 0.0, literal.x,
8756 ; EG-NEXT:     ASHR T38.Y, PV.X, literal.y,
8757 ; EG-NEXT:     ASHR T39.Z, T11.Y, literal.z,
8758 ; EG-NEXT:     LSHR T3.W, T12.Y, literal.x, BS:VEC_120/SCL_212
8759 ; EG-NEXT:     LSHR * T4.W, T11.Y, literal.w,
8760 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8761 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
8762 ; EG-NEXT:     BFE_INT T39.X, PS, 0.0, literal.x,
8763 ; EG-NEXT:     ASHR T12.Y, PV.X, literal.y,
8764 ; EG-NEXT:     BFE_INT T38.Z, PV.W, 0.0, literal.x,
8765 ; EG-NEXT:     ASHR T36.W, T36.Z, literal.y,
8766 ; EG-NEXT:     ASHR * T40.W, T11.Z, literal.y,
8767 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8768 ; EG-NEXT:     BFE_INT T11.X, T11.Z, 0.0, literal.x,
8769 ; EG-NEXT:     ASHR T39.Y, PV.X, literal.y,
8770 ; EG-NEXT:     ASHR T40.Z, T11.Z, literal.z,
8771 ; EG-NEXT:     ASHR T38.W, PV.Z, literal.y,
8772 ; EG-NEXT:     ASHR * T41.W, T11.W, literal.y,
8773 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8774 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
8775 ; EG-NEXT:     BFE_INT T40.X, T2.W, 0.0, literal.x,
8776 ; EG-NEXT:     ASHR T11.Y, PV.X, literal.y,
8777 ; EG-NEXT:     ASHR T41.Z, T11.W, literal.z, BS:VEC_120/SCL_212
8778 ; EG-NEXT:     ASHR T33.W, T33.Z, literal.y,
8779 ; EG-NEXT:     ASHR * T29.W, T29.Z, literal.y,
8780 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8781 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
8782 ; EG-NEXT:     BFE_INT T41.X, T1.W, 0.0, literal.x,
8783 ; EG-NEXT:     ASHR T40.Y, PV.X, literal.y,
8784 ; EG-NEXT:     BFE_INT T11.Z, T0.Y, 0.0, literal.x,
8785 ; EG-NEXT:     ASHR T28.W, T28.Z, literal.y,
8786 ; EG-NEXT:     ASHR * T27.W, T27.Z, literal.y,
8787 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
8788 ; EG-NEXT:     LSHR T42.X, T0.W, literal.x,
8789 ; EG-NEXT:     ASHR T41.Y, PV.X, literal.y,
8790 ; EG-NEXT:     ASHR T11.W, PV.Z, literal.y,
8791 ; EG-NEXT:     ASHR * T26.W, T26.Z, literal.y,
8792 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
8794 ; GFX12-LABEL: constant_sextload_v32i8_to_v32i64:
8795 ; GFX12:       ; %bb.0:
8796 ; GFX12-NEXT:    s_load_b128 s[8:11], s[2:3], 0x24
8797 ; GFX12-NEXT:    s_wait_kmcnt 0x0
8798 ; GFX12-NEXT:    s_load_b256 s[0:7], s[10:11], 0x0
8799 ; GFX12-NEXT:    s_wait_kmcnt 0x0
8800 ; GFX12-NEXT:    v_lshrrev_b16 v0, 8, s7
8801 ; GFX12-NEXT:    v_lshrrev_b16 v3, 8, s5
8802 ; GFX12-NEXT:    v_lshrrev_b16 v7, 8, s2
8803 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s6
8804 ; GFX12-NEXT:    v_lshrrev_b16 v4, 8, s4
8805 ; GFX12-NEXT:    v_lshrrev_b16 v6, 8, s1
8806 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s3
8807 ; GFX12-NEXT:    v_lshrrev_b16 v2, 8, s0
8808 ; GFX12-NEXT:    s_lshr_b32 s20, s7, 16
8809 ; GFX12-NEXT:    s_lshr_b32 s24, s6, 24
8810 ; GFX12-NEXT:    s_lshr_b32 s26, s5, 16
8811 ; GFX12-NEXT:    s_lshr_b32 s36, s2, 16
8812 ; GFX12-NEXT:    s_lshr_b32 s38, s2, 24
8813 ; GFX12-NEXT:    v_bfe_i32 v10, v7, 0, 8
8814 ; GFX12-NEXT:    v_bfe_i32 v22, v3, 0, 8
8815 ; GFX12-NEXT:    v_bfe_i32 v30, v0, 0, 8
8816 ; GFX12-NEXT:    s_lshr_b32 s42, s0, 16
8817 ; GFX12-NEXT:    s_mov_b32 s46, s7
8818 ; GFX12-NEXT:    s_mov_b32 s48, s5
8819 ; GFX12-NEXT:    s_mov_b32 s50, s3
8820 ; GFX12-NEXT:    s_lshr_b32 s22, s6, 16
8821 ; GFX12-NEXT:    s_lshr_b32 s28, s4, 16
8822 ; GFX12-NEXT:    s_lshr_b32 s30, s4, 24
8823 ; GFX12-NEXT:    s_lshr_b32 s40, s1, 16
8824 ; GFX12-NEXT:    s_bfe_i64 s[16:17], s[6:7], 0x80000
8825 ; GFX12-NEXT:    s_ashr_i64 s[54:55], s[2:3], 56
8826 ; GFX12-NEXT:    s_ashr_i64 s[56:57], s[4:5], 56
8827 ; GFX12-NEXT:    s_ashr_i64 s[6:7], s[6:7], 56
8828 ; GFX12-NEXT:    v_bfe_i32 v6, v6, 0, 8
8829 ; GFX12-NEXT:    v_bfe_i32 v18, v4, 0, 8
8830 ; GFX12-NEXT:    v_bfe_i32 v26, v1, 0, 8
8831 ; GFX12-NEXT:    s_bfe_i64 s[38:39], s[38:39], 0x80000
8832 ; GFX12-NEXT:    s_bfe_i64 s[36:37], s[36:37], 0x80000
8833 ; GFX12-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
8834 ; GFX12-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x80000
8835 ; GFX12-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
8836 ; GFX12-NEXT:    s_lshr_b32 s34, s3, 16
8837 ; GFX12-NEXT:    s_lshr_b32 s44, s0, 24
8838 ; GFX12-NEXT:    s_mov_b32 s52, s1
8839 ; GFX12-NEXT:    s_bfe_i64 s[12:13], s[2:3], 0x80000
8840 ; GFX12-NEXT:    s_bfe_i64 s[14:15], s[4:5], 0x80000
8841 ; GFX12-NEXT:    s_bfe_i64 s[2:3], s[50:51], 0x80000
8842 ; GFX12-NEXT:    s_bfe_i64 s[4:5], s[48:49], 0x80000
8843 ; GFX12-NEXT:    s_bfe_i64 s[46:47], s[46:47], 0x80000
8844 ; GFX12-NEXT:    s_bfe_i64 s[42:43], s[42:43], 0x80000
8845 ; GFX12-NEXT:    v_dual_mov_b32 v64, 0 :: v_dual_mov_b32 v33, s21
8846 ; GFX12-NEXT:    s_ashr_i64 s[18:19], s[0:1], 56
8847 ; GFX12-NEXT:    v_bfe_i32 v2, v2, 0, 8
8848 ; GFX12-NEXT:    v_bfe_i32 v14, v5, 0, 8
8849 ; GFX12-NEXT:    s_bfe_i64 s[40:41], s[40:41], 0x80000
8850 ; GFX12-NEXT:    s_bfe_i64 s[30:31], s[30:31], 0x80000
8851 ; GFX12-NEXT:    s_bfe_i64 s[28:29], s[28:29], 0x80000
8852 ; GFX12-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
8853 ; GFX12-NEXT:    v_dual_mov_b32 v32, s20 :: v_dual_mov_b32 v35, s7
8854 ; GFX12-NEXT:    v_dual_mov_b32 v34, s6 :: v_dual_mov_b32 v37, s23
8855 ; GFX12-NEXT:    v_dual_mov_b32 v38, s24 :: v_dual_mov_b32 v41, s27
8856 ; GFX12-NEXT:    v_dual_mov_b32 v40, s26 :: v_dual_mov_b32 v43, s57
8857 ; GFX12-NEXT:    v_dual_mov_b32 v42, s56 :: v_dual_mov_b32 v45, s29
8858 ; GFX12-NEXT:    v_dual_mov_b32 v50, s54 :: v_dual_mov_b32 v53, s37
8859 ; GFX12-NEXT:    v_dual_mov_b32 v52, s36 :: v_dual_mov_b32 v55, s39
8860 ; GFX12-NEXT:    v_dual_mov_b32 v54, s38 :: v_dual_mov_b32 v57, s41
8861 ; GFX12-NEXT:    s_bfe_i64 s[10:11], s[0:1], 0x80000
8862 ; GFX12-NEXT:    s_bfe_i64 s[0:1], s[52:53], 0x80000
8863 ; GFX12-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
8864 ; GFX12-NEXT:    v_ashrrev_i32_e32 v23, 31, v22
8865 ; GFX12-NEXT:    v_ashrrev_i32_e32 v31, 31, v30
8866 ; GFX12-NEXT:    s_bfe_i64 s[44:45], s[44:45], 0x80000
8867 ; GFX12-NEXT:    v_dual_mov_b32 v60, s42 :: v_dual_mov_b32 v29, s47
8868 ; GFX12-NEXT:    v_dual_mov_b32 v28, s46 :: v_dual_mov_b32 v63, s45
8869 ; GFX12-NEXT:    v_dual_mov_b32 v24, s16 :: v_dual_mov_b32 v21, s5
8870 ; GFX12-NEXT:    v_dual_mov_b32 v20, s4 :: v_dual_mov_b32 v17, s15
8871 ; GFX12-NEXT:    v_dual_mov_b32 v12, s2 :: v_dual_mov_b32 v9, s13
8872 ; GFX12-NEXT:    v_dual_mov_b32 v8, s12 :: v_dual_mov_b32 v5, s1
8873 ; GFX12-NEXT:    s_bfe_i64 s[34:35], s[34:35], 0x80000
8874 ; GFX12-NEXT:    v_dual_mov_b32 v36, s22 :: v_dual_mov_b32 v39, s25
8875 ; GFX12-NEXT:    v_dual_mov_b32 v44, s28 :: v_dual_mov_b32 v47, s31
8876 ; GFX12-NEXT:    v_dual_mov_b32 v46, s30 :: v_dual_mov_b32 v49, s35
8877 ; GFX12-NEXT:    v_dual_mov_b32 v56, s40 :: v_dual_mov_b32 v59, s19
8878 ; GFX12-NEXT:    v_dual_mov_b32 v58, s18 :: v_dual_mov_b32 v61, s43
8879 ; GFX12-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
8880 ; GFX12-NEXT:    v_ashrrev_i32_e32 v19, 31, v18
8881 ; GFX12-NEXT:    v_ashrrev_i32_e32 v27, 31, v26
8882 ; GFX12-NEXT:    v_dual_mov_b32 v62, s44 :: v_dual_mov_b32 v25, s17
8883 ; GFX12-NEXT:    v_dual_mov_b32 v16, s14 :: v_dual_mov_b32 v13, s3
8884 ; GFX12-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v1, s11
8885 ; GFX12-NEXT:    v_dual_mov_b32 v48, s34 :: v_dual_mov_b32 v51, s55
8886 ; GFX12-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
8887 ; GFX12-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
8888 ; GFX12-NEXT:    s_clause 0x9
8889 ; GFX12-NEXT:    global_store_b128 v64, v[32:35], s[8:9] offset:240
8890 ; GFX12-NEXT:    global_store_b128 v64, v[28:31], s[8:9] offset:224
8891 ; GFX12-NEXT:    global_store_b128 v64, v[36:39], s[8:9] offset:208
8892 ; GFX12-NEXT:    global_store_b128 v64, v[24:27], s[8:9] offset:192
8893 ; GFX12-NEXT:    global_store_b128 v64, v[40:43], s[8:9] offset:176
8894 ; GFX12-NEXT:    global_store_b128 v64, v[20:23], s[8:9] offset:160
8895 ; GFX12-NEXT:    global_store_b128 v64, v[44:47], s[8:9] offset:144
8896 ; GFX12-NEXT:    global_store_b128 v64, v[16:19], s[8:9] offset:128
8897 ; GFX12-NEXT:    global_store_b128 v64, v[48:51], s[8:9] offset:112
8898 ; GFX12-NEXT:    global_store_b128 v64, v[12:15], s[8:9] offset:96
8899 ; GFX12-NEXT:    v_mov_b32_e32 v0, s10
8900 ; GFX12-NEXT:    s_clause 0x5
8901 ; GFX12-NEXT:    global_store_b128 v64, v[52:55], s[8:9] offset:80
8902 ; GFX12-NEXT:    global_store_b128 v64, v[8:11], s[8:9] offset:64
8903 ; GFX12-NEXT:    global_store_b128 v64, v[56:59], s[8:9] offset:48
8904 ; GFX12-NEXT:    global_store_b128 v64, v[4:7], s[8:9] offset:32
8905 ; GFX12-NEXT:    global_store_b128 v64, v[60:63], s[8:9] offset:16
8906 ; GFX12-NEXT:    global_store_b128 v64, v[0:3], s[8:9]
8907 ; GFX12-NEXT:    s_nop 0
8908 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
8909 ; GFX12-NEXT:    s_endpgm
8910   %load = load <32 x i8>, ptr addrspace(4) %in
8911   %ext = sext <32 x i8> %load to <32 x i64>
8912   store <32 x i64> %ext, ptr addrspace(1) %out
8913   ret void
8916 ; XFUNC-LABEL: {{^}}constant_zextload_v64i8_to_v64i64:
8917 ; define amdgpu_kernel void @constant_zextload_v64i8_to_v64i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8918 ;   %load = load <64 x i8>, ptr addrspace(4) %in
8919 ;   %ext = zext <64 x i8> %load to <64 x i64>
8920 ;   store <64 x i64> %ext, ptr addrspace(1) %out
8921 ;   ret void
8922 ; }
8924 ; XFUNC-LABEL: {{^}}constant_sextload_v64i8_to_v64i64:
8925 ; define amdgpu_kernel void @constant_sextload_v64i8_to_v64i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8926 ;   %load = load <64 x i8>, ptr addrspace(4) %in
8927 ;   %ext = sext <64 x i8> %load to <64 x i64>
8928 ;   store <64 x i64> %ext, ptr addrspace(1) %out
8929 ;   ret void
8930 ; }
8932 define amdgpu_kernel void @constant_zextload_i8_to_i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8933 ; GFX6-NOHSA-LABEL: constant_zextload_i8_to_i16:
8934 ; GFX6-NOHSA:       ; %bb.0:
8935 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
8936 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
8937 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
8938 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
8939 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
8940 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8941 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
8942 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
8943 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
8944 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
8945 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
8946 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
8947 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[4:7], 0
8948 ; GFX6-NOHSA-NEXT:    s_endpgm
8950 ; GFX7-HSA-LABEL: constant_zextload_i8_to_i16:
8951 ; GFX7-HSA:       ; %bb.0:
8952 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
8953 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8954 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
8955 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
8956 ; GFX7-HSA-NEXT:    flat_load_ubyte v2, v[0:1]
8957 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
8958 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
8959 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
8960 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v2
8961 ; GFX7-HSA-NEXT:    s_endpgm
8963 ; GFX8-NOHSA-LABEL: constant_zextload_i8_to_i16:
8964 ; GFX8-NOHSA:       ; %bb.0:
8965 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
8966 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8967 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
8968 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
8969 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
8970 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
8971 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
8972 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
8973 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v2
8974 ; GFX8-NOHSA-NEXT:    s_endpgm
8976 ; EG-LABEL: constant_zextload_i8_to_i16:
8977 ; EG:       ; %bb.0:
8978 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
8979 ; EG-NEXT:    TEX 0 @6
8980 ; EG-NEXT:    ALU 10, @9, KC0[CB0:0-32], KC1[]
8981 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
8982 ; EG-NEXT:    CF_END
8983 ; EG-NEXT:    PAD
8984 ; EG-NEXT:    Fetch clause starting at 6:
8985 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
8986 ; EG-NEXT:    ALU clause starting at 8:
8987 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
8988 ; EG-NEXT:    ALU clause starting at 9:
8989 ; EG-NEXT:     AND_INT * T0.W, KC0[2].Y, literal.x,
8990 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
8991 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
8992 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
8993 ; EG-NEXT:     LSHL T0.X, T0.X, PV.W,
8994 ; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
8995 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
8996 ; EG-NEXT:     MOV T0.Y, 0.0,
8997 ; EG-NEXT:     MOV * T0.Z, 0.0,
8998 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
8999 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9001 ; GFX12-LABEL: constant_zextload_i8_to_i16:
9002 ; GFX12:       ; %bb.0:
9003 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
9004 ; GFX12-NEXT:    v_mov_b32_e32 v0, 0
9005 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9006 ; GFX12-NEXT:    global_load_u8 v1, v0, s[2:3]
9007 ; GFX12-NEXT:    s_wait_loadcnt 0x0
9008 ; GFX12-NEXT:    global_store_b16 v0, v1, s[0:1]
9009 ; GFX12-NEXT:    s_nop 0
9010 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9011 ; GFX12-NEXT:    s_endpgm
9012   %a = load i8, ptr addrspace(4) %in
9013   %ext = zext i8 %a to i16
9014   store i16 %ext, ptr addrspace(1) %out
9015   ret void
9018 define amdgpu_kernel void @constant_sextload_i8_to_i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9019 ; GFX6-NOHSA-LABEL: constant_sextload_i8_to_i16:
9020 ; GFX6-NOHSA:       ; %bb.0:
9021 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
9022 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
9023 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
9024 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
9025 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
9026 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9027 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
9028 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
9029 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
9030 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
9031 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
9032 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
9033 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[4:7], 0
9034 ; GFX6-NOHSA-NEXT:    s_endpgm
9036 ; GFX7-HSA-LABEL: constant_sextload_i8_to_i16:
9037 ; GFX7-HSA:       ; %bb.0:
9038 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
9039 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9040 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
9041 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
9042 ; GFX7-HSA-NEXT:    flat_load_sbyte v2, v[0:1]
9043 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
9044 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
9045 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
9046 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v2
9047 ; GFX7-HSA-NEXT:    s_endpgm
9049 ; GFX8-NOHSA-LABEL: constant_sextload_i8_to_i16:
9050 ; GFX8-NOHSA:       ; %bb.0:
9051 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
9052 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9053 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
9054 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
9055 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
9056 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
9057 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
9058 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
9059 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v2
9060 ; GFX8-NOHSA-NEXT:    s_endpgm
9062 ; EG-LABEL: constant_sextload_i8_to_i16:
9063 ; EG:       ; %bb.0:
9064 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
9065 ; EG-NEXT:    TEX 0 @6
9066 ; EG-NEXT:    ALU 12, @9, KC0[CB0:0-32], KC1[]
9067 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
9068 ; EG-NEXT:    CF_END
9069 ; EG-NEXT:    PAD
9070 ; EG-NEXT:    Fetch clause starting at 6:
9071 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
9072 ; EG-NEXT:    ALU clause starting at 8:
9073 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
9074 ; EG-NEXT:    ALU clause starting at 9:
9075 ; EG-NEXT:     BFE_INT T0.W, T0.X, 0.0, literal.x,
9076 ; EG-NEXT:     AND_INT * T1.W, KC0[2].Y, literal.y,
9077 ; EG-NEXT:    8(1.121039e-44), 3(4.203895e-45)
9078 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
9079 ; EG-NEXT:     LSHL * T1.W, PS, literal.y,
9080 ; EG-NEXT:    65535(9.183409e-41), 3(4.203895e-45)
9081 ; EG-NEXT:     LSHL T0.X, PV.W, PS,
9082 ; EG-NEXT:     LSHL * T0.W, literal.x, PS,
9083 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
9084 ; EG-NEXT:     MOV T0.Y, 0.0,
9085 ; EG-NEXT:     MOV * T0.Z, 0.0,
9086 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
9087 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9089 ; GFX12-LABEL: constant_sextload_i8_to_i16:
9090 ; GFX12:       ; %bb.0:
9091 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
9092 ; GFX12-NEXT:    v_mov_b32_e32 v0, 0
9093 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9094 ; GFX12-NEXT:    global_load_i8 v1, v0, s[2:3]
9095 ; GFX12-NEXT:    s_wait_loadcnt 0x0
9096 ; GFX12-NEXT:    global_store_b16 v0, v1, s[0:1]
9097 ; GFX12-NEXT:    s_nop 0
9098 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9099 ; GFX12-NEXT:    s_endpgm
9100   %a = load i8, ptr addrspace(4) %in
9101   %ext = sext i8 %a to i16
9102   store i16 %ext, ptr addrspace(1) %out
9103   ret void
9106 define amdgpu_kernel void @constant_zextload_v1i8_to_v1i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9107 ; GFX6-NOHSA-LABEL: constant_zextload_v1i8_to_v1i16:
9108 ; GFX6-NOHSA:       ; %bb.0:
9109 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
9110 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
9111 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
9112 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
9113 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
9114 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9115 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
9116 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
9117 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
9118 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
9119 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
9120 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
9121 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[4:7], 0
9122 ; GFX6-NOHSA-NEXT:    s_endpgm
9124 ; GFX7-HSA-LABEL: constant_zextload_v1i8_to_v1i16:
9125 ; GFX7-HSA:       ; %bb.0:
9126 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
9127 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9128 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
9129 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
9130 ; GFX7-HSA-NEXT:    flat_load_ubyte v2, v[0:1]
9131 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
9132 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
9133 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
9134 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v2
9135 ; GFX7-HSA-NEXT:    s_endpgm
9137 ; GFX8-NOHSA-LABEL: constant_zextload_v1i8_to_v1i16:
9138 ; GFX8-NOHSA:       ; %bb.0:
9139 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
9140 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9141 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
9142 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
9143 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
9144 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
9145 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
9146 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
9147 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v2
9148 ; GFX8-NOHSA-NEXT:    s_endpgm
9150 ; EG-LABEL: constant_zextload_v1i8_to_v1i16:
9151 ; EG:       ; %bb.0:
9152 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
9153 ; EG-NEXT:    TEX 0 @6
9154 ; EG-NEXT:    ALU 10, @9, KC0[CB0:0-32], KC1[]
9155 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
9156 ; EG-NEXT:    CF_END
9157 ; EG-NEXT:    PAD
9158 ; EG-NEXT:    Fetch clause starting at 6:
9159 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
9160 ; EG-NEXT:    ALU clause starting at 8:
9161 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
9162 ; EG-NEXT:    ALU clause starting at 9:
9163 ; EG-NEXT:     AND_INT * T0.W, KC0[2].Y, literal.x,
9164 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
9165 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
9166 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
9167 ; EG-NEXT:     LSHL T0.X, T0.X, PV.W,
9168 ; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
9169 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
9170 ; EG-NEXT:     MOV T0.Y, 0.0,
9171 ; EG-NEXT:     MOV * T0.Z, 0.0,
9172 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
9173 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9175 ; GFX12-LABEL: constant_zextload_v1i8_to_v1i16:
9176 ; GFX12:       ; %bb.0:
9177 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
9178 ; GFX12-NEXT:    v_mov_b32_e32 v0, 0
9179 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9180 ; GFX12-NEXT:    global_load_u8 v1, v0, s[2:3]
9181 ; GFX12-NEXT:    s_wait_loadcnt 0x0
9182 ; GFX12-NEXT:    global_store_b16 v0, v1, s[0:1]
9183 ; GFX12-NEXT:    s_nop 0
9184 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9185 ; GFX12-NEXT:    s_endpgm
9186   %load = load <1 x i8>, ptr addrspace(4) %in
9187   %ext = zext <1 x i8> %load to <1 x i16>
9188   store <1 x i16> %ext, ptr addrspace(1) %out
9189   ret void
9192 define amdgpu_kernel void @constant_sextload_v1i8_to_v1i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9193 ; GFX6-NOHSA-LABEL: constant_sextload_v1i8_to_v1i16:
9194 ; GFX6-NOHSA:       ; %bb.0:
9195 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
9196 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
9197 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
9198 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
9199 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
9200 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9201 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
9202 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
9203 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
9204 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
9205 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
9206 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
9207 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[4:7], 0
9208 ; GFX6-NOHSA-NEXT:    s_endpgm
9210 ; GFX7-HSA-LABEL: constant_sextload_v1i8_to_v1i16:
9211 ; GFX7-HSA:       ; %bb.0:
9212 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
9213 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9214 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
9215 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
9216 ; GFX7-HSA-NEXT:    flat_load_sbyte v2, v[0:1]
9217 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
9218 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
9219 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
9220 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v2
9221 ; GFX7-HSA-NEXT:    s_endpgm
9223 ; GFX8-NOHSA-LABEL: constant_sextload_v1i8_to_v1i16:
9224 ; GFX8-NOHSA:       ; %bb.0:
9225 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
9226 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9227 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
9228 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
9229 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
9230 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
9231 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
9232 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
9233 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v2
9234 ; GFX8-NOHSA-NEXT:    s_endpgm
9236 ; EG-LABEL: constant_sextload_v1i8_to_v1i16:
9237 ; EG:       ; %bb.0:
9238 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
9239 ; EG-NEXT:    TEX 0 @6
9240 ; EG-NEXT:    ALU 12, @9, KC0[CB0:0-32], KC1[]
9241 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
9242 ; EG-NEXT:    CF_END
9243 ; EG-NEXT:    PAD
9244 ; EG-NEXT:    Fetch clause starting at 6:
9245 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
9246 ; EG-NEXT:    ALU clause starting at 8:
9247 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
9248 ; EG-NEXT:    ALU clause starting at 9:
9249 ; EG-NEXT:     BFE_INT T0.W, T0.X, 0.0, literal.x,
9250 ; EG-NEXT:     AND_INT * T1.W, KC0[2].Y, literal.y,
9251 ; EG-NEXT:    8(1.121039e-44), 3(4.203895e-45)
9252 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
9253 ; EG-NEXT:     LSHL * T1.W, PS, literal.y,
9254 ; EG-NEXT:    65535(9.183409e-41), 3(4.203895e-45)
9255 ; EG-NEXT:     LSHL T0.X, PV.W, PS,
9256 ; EG-NEXT:     LSHL * T0.W, literal.x, PS,
9257 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
9258 ; EG-NEXT:     MOV T0.Y, 0.0,
9259 ; EG-NEXT:     MOV * T0.Z, 0.0,
9260 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
9261 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9263 ; GFX12-LABEL: constant_sextload_v1i8_to_v1i16:
9264 ; GFX12:       ; %bb.0:
9265 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
9266 ; GFX12-NEXT:    v_mov_b32_e32 v0, 0
9267 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9268 ; GFX12-NEXT:    global_load_i8 v1, v0, s[2:3]
9269 ; GFX12-NEXT:    s_wait_loadcnt 0x0
9270 ; GFX12-NEXT:    global_store_b16 v0, v1, s[0:1]
9271 ; GFX12-NEXT:    s_nop 0
9272 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9273 ; GFX12-NEXT:    s_endpgm
9274   %load = load <1 x i8>, ptr addrspace(4) %in
9275   %ext = sext <1 x i8> %load to <1 x i16>
9276   store <1 x i16> %ext, ptr addrspace(1) %out
9277   ret void
9280 define amdgpu_kernel void @constant_zextload_v2i8_to_v2i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9281 ; GFX6-NOHSA-LABEL: constant_zextload_v2i8_to_v2i16:
9282 ; GFX6-NOHSA:       ; %bb.0:
9283 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
9284 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
9285 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
9286 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
9287 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
9288 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9289 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
9290 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
9291 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
9292 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
9293 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
9294 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
9295 ; GFX6-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 8, v0
9296 ; GFX6-NOHSA-NEXT:    v_or_b32_e32 v0, v0, v1
9297 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v0, 0xff00ff, v0
9298 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
9299 ; GFX6-NOHSA-NEXT:    s_endpgm
9301 ; GFX7-HSA-LABEL: constant_zextload_v2i8_to_v2i16:
9302 ; GFX7-HSA:       ; %bb.0:
9303 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
9304 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9305 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
9306 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
9307 ; GFX7-HSA-NEXT:    flat_load_ushort v2, v[0:1]
9308 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
9309 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
9310 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
9311 ; GFX7-HSA-NEXT:    v_lshlrev_b32_e32 v3, 8, v2
9312 ; GFX7-HSA-NEXT:    v_or_b32_e32 v2, v2, v3
9313 ; GFX7-HSA-NEXT:    v_and_b32_e32 v2, 0xff00ff, v2
9314 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
9315 ; GFX7-HSA-NEXT:    s_endpgm
9317 ; GFX8-NOHSA-LABEL: constant_zextload_v2i8_to_v2i16:
9318 ; GFX8-NOHSA:       ; %bb.0:
9319 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
9320 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, 0xffff
9321 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9322 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
9323 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
9324 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
9325 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
9326 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
9327 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
9328 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e32 v4, 8, v2
9329 ; GFX8-NOHSA-NEXT:    v_and_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
9330 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
9331 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, v2, v3
9332 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
9333 ; GFX8-NOHSA-NEXT:    s_endpgm
9335 ; EG-LABEL: constant_zextload_v2i8_to_v2i16:
9336 ; EG:       ; %bb.0:
9337 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
9338 ; EG-NEXT:    TEX 0 @6
9339 ; EG-NEXT:    ALU 7, @9, KC0[CB0:0-32], KC1[]
9340 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.X, T6.X, 1
9341 ; EG-NEXT:    CF_END
9342 ; EG-NEXT:    PAD
9343 ; EG-NEXT:    Fetch clause starting at 6:
9344 ; EG-NEXT:     VTX_READ_16 T5.X, T5.X, 0, #1
9345 ; EG-NEXT:    ALU clause starting at 8:
9346 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
9347 ; EG-NEXT:    ALU clause starting at 9:
9348 ; EG-NEXT:     LSHL * T0.W, T5.X, literal.x,
9349 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9350 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
9351 ; EG-NEXT:     AND_INT * T1.W, T5.X, literal.y,
9352 ; EG-NEXT:    16711680(2.341805e-38), 255(3.573311e-43)
9353 ; EG-NEXT:     OR_INT T5.X, PS, PV.W,
9354 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.x,
9355 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9357 ; GFX12-LABEL: constant_zextload_v2i8_to_v2i16:
9358 ; GFX12:       ; %bb.0:
9359 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
9360 ; GFX12-NEXT:    v_mov_b32_e32 v0, 0
9361 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9362 ; GFX12-NEXT:    global_load_u16 v1, v0, s[2:3]
9363 ; GFX12-NEXT:    s_wait_loadcnt 0x0
9364 ; GFX12-NEXT:    v_and_b32_e32 v2, 0xff, v1
9365 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, v1
9366 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
9367 ; GFX12-NEXT:    v_and_b32_e32 v2, 0xffff, v2
9368 ; GFX12-NEXT:    v_lshl_or_b32 v1, v1, 16, v2
9369 ; GFX12-NEXT:    global_store_b32 v0, v1, s[0:1]
9370 ; GFX12-NEXT:    s_nop 0
9371 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9372 ; GFX12-NEXT:    s_endpgm
9373   %load = load <2 x i8>, ptr addrspace(4) %in
9374   %ext = zext <2 x i8> %load to <2 x i16>
9375   store <2 x i16> %ext, ptr addrspace(1) %out
9376   ret void
9379 define amdgpu_kernel void @constant_sextload_v2i8_to_v2i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9380 ; GFX6-NOHSA-LABEL: constant_sextload_v2i8_to_v2i16:
9381 ; GFX6-NOHSA:       ; %bb.0:
9382 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
9383 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
9384 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
9385 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
9386 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
9387 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9388 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
9389 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
9390 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
9391 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
9392 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
9393 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
9394 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v1, v0, 8, 8
9395 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v0, v0, 0, 8
9396 ; GFX6-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
9397 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v0, 0xffff, v0
9398 ; GFX6-NOHSA-NEXT:    v_or_b32_e32 v0, v0, v1
9399 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
9400 ; GFX6-NOHSA-NEXT:    s_endpgm
9402 ; GFX7-HSA-LABEL: constant_sextload_v2i8_to_v2i16:
9403 ; GFX7-HSA:       ; %bb.0:
9404 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
9405 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9406 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
9407 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
9408 ; GFX7-HSA-NEXT:    flat_load_ushort v2, v[0:1]
9409 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
9410 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
9411 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
9412 ; GFX7-HSA-NEXT:    v_bfe_i32 v3, v2, 8, 8
9413 ; GFX7-HSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
9414 ; GFX7-HSA-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
9415 ; GFX7-HSA-NEXT:    v_and_b32_e32 v2, 0xffff, v2
9416 ; GFX7-HSA-NEXT:    v_or_b32_e32 v2, v2, v3
9417 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
9418 ; GFX7-HSA-NEXT:    s_endpgm
9420 ; GFX8-NOHSA-LABEL: constant_sextload_v2i8_to_v2i16:
9421 ; GFX8-NOHSA:       ; %bb.0:
9422 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
9423 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, 0xffff
9424 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9425 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
9426 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
9427 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
9428 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
9429 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
9430 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
9431 ; GFX8-NOHSA-NEXT:    v_and_b32_sdwa v3, v3, sext(v2) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
9432 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e32 v2, 8, v2
9433 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
9434 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, v3, v2
9435 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
9436 ; GFX8-NOHSA-NEXT:    s_endpgm
9438 ; EG-LABEL: constant_sextload_v2i8_to_v2i16:
9439 ; EG:       ; %bb.0:
9440 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
9441 ; EG-NEXT:    TEX 0 @6
9442 ; EG-NEXT:    ALU 16, @10, KC0[CB0:0-32], KC1[]
9443 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.X, T6.X, 1
9444 ; EG-NEXT:    CF_END
9445 ; EG-NEXT:    PAD
9446 ; EG-NEXT:    Fetch clause starting at 6:
9447 ; EG-NEXT:     VTX_READ_16 T5.X, T5.X, 0, #1
9448 ; EG-NEXT:    ALU clause starting at 8:
9449 ; EG-NEXT:     MOV * T0.Y, T2.X,
9450 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
9451 ; EG-NEXT:    ALU clause starting at 10:
9452 ; EG-NEXT:     AND_INT T0.W, T5.X, literal.x,
9453 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
9454 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
9455 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
9456 ; EG-NEXT:     MOV * T2.X, PV.W,
9457 ; EG-NEXT:     MOV * T0.Y, PV.X,
9458 ; EG-NEXT:     LSHR * T1.W, PV.Y, literal.x,
9459 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9460 ; EG-NEXT:     BFE_INT T0.Z, T0.W, 0.0, literal.x,
9461 ; EG-NEXT:     BFE_INT * T0.W, PV.W, 0.0, literal.x,
9462 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9463 ; EG-NEXT:     LSHL T0.W, PV.W, literal.x,
9464 ; EG-NEXT:     AND_INT * T1.W, PV.Z, literal.y,
9465 ; EG-NEXT:    16(2.242078e-44), 65535(9.183409e-41)
9466 ; EG-NEXT:     OR_INT T5.X, PS, PV.W,
9467 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.x,
9468 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9470 ; GFX12-LABEL: constant_sextload_v2i8_to_v2i16:
9471 ; GFX12:       ; %bb.0:
9472 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
9473 ; GFX12-NEXT:    v_mov_b32_e32 v0, 0
9474 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9475 ; GFX12-NEXT:    global_load_u16 v1, v0, s[2:3]
9476 ; GFX12-NEXT:    s_wait_loadcnt 0x0
9477 ; GFX12-NEXT:    v_bfe_i32 v2, v1, 0, 8
9478 ; GFX12-NEXT:    v_ashrrev_i16 v1, 8, v1
9479 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
9480 ; GFX12-NEXT:    v_and_b32_e32 v2, 0xffff, v2
9481 ; GFX12-NEXT:    v_lshl_or_b32 v1, v1, 16, v2
9482 ; GFX12-NEXT:    global_store_b32 v0, v1, s[0:1]
9483 ; GFX12-NEXT:    s_nop 0
9484 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9485 ; GFX12-NEXT:    s_endpgm
9486   %load = load <2 x i8>, ptr addrspace(4) %in
9487   %ext = sext <2 x i8> %load to <2 x i16>
9488   store <2 x i16> %ext, ptr addrspace(1) %out
9489   ret void
9492 define amdgpu_kernel void @constant_zextload_v4i8_to_v4i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9493 ; GFX6-NOHSA-LABEL: constant_zextload_v4i8_to_v4i16:
9494 ; GFX6-NOHSA:       ; %bb.0:
9495 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
9496 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9497 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
9498 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
9499 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
9500 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9501 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s4, 0xff00
9502 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s4, 24
9503 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
9504 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
9505 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v0, s6, v0, 16
9506 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s5, s5, 8
9507 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s5
9508 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v0
9509 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
9510 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
9511 ; GFX6-NOHSA-NEXT:    s_endpgm
9513 ; GFX7-HSA-LABEL: constant_zextload_v4i8_to_v4i16:
9514 ; GFX7-HSA:       ; %bb.0:
9515 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
9516 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9517 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
9518 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
9519 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
9520 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9521 ; GFX7-HSA-NEXT:    s_and_b32 s0, s2, 0xff00
9522 ; GFX7-HSA-NEXT:    s_lshr_b32 s1, s2, 24
9523 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
9524 ; GFX7-HSA-NEXT:    s_and_b32 s2, s2, 0xff
9525 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 8
9526 ; GFX7-HSA-NEXT:    v_alignbit_b32 v2, s1, v2, 16
9527 ; GFX7-HSA-NEXT:    s_or_b32 s0, s2, s0
9528 ; GFX7-HSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v2
9529 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
9530 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
9531 ; GFX7-HSA-NEXT:    s_endpgm
9533 ; GFX8-NOHSA-LABEL: constant_zextload_v4i8_to_v4i16:
9534 ; GFX8-NOHSA:       ; %bb.0:
9535 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
9536 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9537 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
9538 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
9539 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
9540 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9541 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s2
9542 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s2, 24
9543 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s2
9544 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s2, 0xff
9545 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v3, s0, v3, 16
9546 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
9547 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v3
9548 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s1, v2
9549 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
9550 ; GFX8-NOHSA-NEXT:    s_endpgm
9552 ; EG-LABEL: constant_zextload_v4i8_to_v4i16:
9553 ; EG:       ; %bb.0:
9554 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
9555 ; EG-NEXT:    TEX 0 @6
9556 ; EG-NEXT:    ALU 31, @10, KC0[CB0:0-32], KC1[]
9557 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XY, T7.X, 1
9558 ; EG-NEXT:    CF_END
9559 ; EG-NEXT:    PAD
9560 ; EG-NEXT:    Fetch clause starting at 6:
9561 ; EG-NEXT:     VTX_READ_32 T7.X, T7.X, 0, #1
9562 ; EG-NEXT:    ALU clause starting at 8:
9563 ; EG-NEXT:     MOV * T0.Y, T4.X,
9564 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
9565 ; EG-NEXT:    ALU clause starting at 10:
9566 ; EG-NEXT:     AND_INT T0.W, T7.X, literal.x,
9567 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
9568 ; EG-NEXT:    255(3.573311e-43), -65536(nan)
9569 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
9570 ; EG-NEXT:     MOV * T4.X, PV.W,
9571 ; EG-NEXT:     MOV T0.Y, PV.X,
9572 ; EG-NEXT:     LSHL * T0.W, T7.X, literal.x,
9573 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9574 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9575 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
9576 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9577 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
9578 ; EG-NEXT:     MOV T4.X, PV.W,
9579 ; EG-NEXT:     MOV T0.Y, T5.X,
9580 ; EG-NEXT:     MOV * T0.W, literal.x,
9581 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9582 ; EG-NEXT:     BFE_UINT T0.W, T7.X, literal.x, PV.W,
9583 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9584 ; EG-NEXT:    16(2.242078e-44), -65536(nan)
9585 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
9586 ; EG-NEXT:     MOV * T5.X, PV.W,
9587 ; EG-NEXT:     MOV T0.Y, PV.X,
9588 ; EG-NEXT:     LSHR * T0.W, T7.X, literal.x,
9589 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9590 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9591 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
9592 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9593 ; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
9594 ; EG-NEXT:     OR_INT * T8.Y, PV.W, PS,
9595 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9596 ; EG-NEXT:     MOV T5.X, PV.Y,
9597 ; EG-NEXT:     MOV * T8.X, T4.X,
9599 ; GFX12-LABEL: constant_zextload_v4i8_to_v4i16:
9600 ; GFX12:       ; %bb.0:
9601 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
9602 ; GFX12-NEXT:    v_mov_b32_e32 v3, 0
9603 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9604 ; GFX12-NEXT:    s_load_b32 s2, s[2:3], 0x0
9605 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9606 ; GFX12-NEXT:    s_lshr_b32 s3, s2, 16
9607 ; GFX12-NEXT:    v_and_b32_e64 v0, 0xff, s2
9608 ; GFX12-NEXT:    v_and_b32_e64 v1, 0xff, s3
9609 ; GFX12-NEXT:    v_lshrrev_b16 v2, 8, s2
9610 ; GFX12-NEXT:    s_lshr_b32 s2, s2, 24
9611 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
9612 ; GFX12-NEXT:    v_and_b32_e32 v0, 0xffff, v0
9613 ; GFX12-NEXT:    v_and_b32_e32 v1, 0xffff, v1
9614 ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
9615 ; GFX12-NEXT:    v_lshl_or_b32 v0, v2, 16, v0
9616 ; GFX12-NEXT:    v_lshl_or_b32 v1, s2, 16, v1
9617 ; GFX12-NEXT:    global_store_b64 v3, v[0:1], s[0:1]
9618 ; GFX12-NEXT:    s_nop 0
9619 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9620 ; GFX12-NEXT:    s_endpgm
9621   %load = load <4 x i8>, ptr addrspace(4) %in
9622   %ext = zext <4 x i8> %load to <4 x i16>
9623   store <4 x i16> %ext, ptr addrspace(1) %out
9624   ret void
9627 define amdgpu_kernel void @constant_sextload_v4i8_to_v4i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9628 ; GFX6-NOHSA-LABEL: constant_sextload_v4i8_to_v4i16:
9629 ; GFX6-NOHSA:       ; %bb.0:
9630 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
9631 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9632 ; GFX6-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
9633 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
9634 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9635 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s4, s2, 24
9636 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s5, s2, 0x80010
9637 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s6, s2, 0x80008
9638 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
9639 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s4, s4, 16
9640 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xffff
9641 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s6, s6, 16
9642 ; GFX6-NOHSA-NEXT:    s_and_b32 s2, s2, 0xffff
9643 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s5, s4
9644 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s2, s6
9645 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
9646 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
9647 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s4
9648 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
9649 ; GFX6-NOHSA-NEXT:    s_endpgm
9651 ; GFX7-HSA-LABEL: constant_sextload_v4i8_to_v4i16:
9652 ; GFX7-HSA:       ; %bb.0:
9653 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
9654 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9655 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
9656 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
9657 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
9658 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9659 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s2, 24
9660 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s2, 0x80010
9661 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s2, 0x80008
9662 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s2, s2
9663 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
9664 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
9665 ; GFX7-HSA-NEXT:    s_lshl_b32 s3, s3, 16
9666 ; GFX7-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
9667 ; GFX7-HSA-NEXT:    s_or_b32 s0, s1, s0
9668 ; GFX7-HSA-NEXT:    s_or_b32 s1, s2, s3
9669 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s1
9670 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
9671 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
9672 ; GFX7-HSA-NEXT:    s_endpgm
9674 ; GFX8-NOHSA-LABEL: constant_sextload_v4i8_to_v4i16:
9675 ; GFX8-NOHSA:       ; %bb.0:
9676 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
9677 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9678 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
9679 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
9680 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
9681 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9682 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s2, 16
9683 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s1, s2, 24
9684 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s0, 0x80000
9685 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s2, 0x80000
9686 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v2, 8, s2
9687 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s1, 16
9688 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
9689 ; GFX8-NOHSA-NEXT:    s_and_b32 s2, 0xffff, s3
9690 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
9691 ; GFX8-NOHSA-NEXT:    s_or_b32 s0, s0, s1
9692 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s2, v2
9693 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
9694 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
9695 ; GFX8-NOHSA-NEXT:    s_endpgm
9697 ; EG-LABEL: constant_sextload_v4i8_to_v4i16:
9698 ; EG:       ; %bb.0:
9699 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
9700 ; EG-NEXT:    TEX 0 @6
9701 ; EG-NEXT:    ALU 37, @10, KC0[CB0:0-32], KC1[]
9702 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XY, T7.X, 1
9703 ; EG-NEXT:    CF_END
9704 ; EG-NEXT:    PAD
9705 ; EG-NEXT:    Fetch clause starting at 6:
9706 ; EG-NEXT:     VTX_READ_32 T7.X, T7.X, 0, #1
9707 ; EG-NEXT:    ALU clause starting at 8:
9708 ; EG-NEXT:     MOV * T0.Y, T4.X,
9709 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
9710 ; EG-NEXT:    ALU clause starting at 10:
9711 ; EG-NEXT:     BFE_INT * T0.W, T7.X, 0.0, literal.x,
9712 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9713 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
9714 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
9715 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
9716 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
9717 ; EG-NEXT:     MOV * T4.X, PV.W,
9718 ; EG-NEXT:     MOV T0.Y, PV.X,
9719 ; EG-NEXT:     LSHR * T0.W, T7.X, literal.x,
9720 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9721 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
9722 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9723 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
9724 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
9725 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9726 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
9727 ; EG-NEXT:     MOV T4.X, PV.W,
9728 ; EG-NEXT:     MOV T0.Y, T5.X,
9729 ; EG-NEXT:     LSHR * T0.W, T7.X, literal.x, BS:VEC_120/SCL_212
9730 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9731 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
9732 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9733 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
9734 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
9735 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
9736 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
9737 ; EG-NEXT:     MOV * T5.X, PV.W,
9738 ; EG-NEXT:     MOV T0.Y, PV.X,
9739 ; EG-NEXT:     ASHR * T0.W, T7.X, literal.x,
9740 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
9741 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9742 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
9743 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
9744 ; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
9745 ; EG-NEXT:     OR_INT * T8.Y, PV.W, PS,
9746 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9747 ; EG-NEXT:     MOV T5.X, PV.Y,
9748 ; EG-NEXT:     MOV * T8.X, T4.X,
9750 ; GFX12-LABEL: constant_sextload_v4i8_to_v4i16:
9751 ; GFX12:       ; %bb.0:
9752 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
9753 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9754 ; GFX12-NEXT:    s_load_b32 s2, s[2:3], 0x0
9755 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9756 ; GFX12-NEXT:    s_bfe_i32 s4, s2, 0x80000
9757 ; GFX12-NEXT:    s_lshr_b32 s3, s2, 16
9758 ; GFX12-NEXT:    v_ashrrev_i16 v0, 8, s2
9759 ; GFX12-NEXT:    v_and_b32_e64 v1, 0xffff, s4
9760 ; GFX12-NEXT:    s_ashr_i32 s2, s2, 24
9761 ; GFX12-NEXT:    s_bfe_i32 s3, s3, 0x80000
9762 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
9763 ; GFX12-NEXT:    s_pack_ll_b32_b16 s2, s3, s2
9764 ; GFX12-NEXT:    v_mov_b32_e32 v2, 0
9765 ; GFX12-NEXT:    v_lshl_or_b32 v0, v0, 16, v1
9766 ; GFX12-NEXT:    v_mov_b32_e32 v1, s2
9767 ; GFX12-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
9768 ; GFX12-NEXT:    s_nop 0
9769 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9770 ; GFX12-NEXT:    s_endpgm
9771   %load = load <4 x i8>, ptr addrspace(4) %in
9772   %ext = sext <4 x i8> %load to <4 x i16>
9773   store <4 x i16> %ext, ptr addrspace(1) %out
9774   ret void
9777 define amdgpu_kernel void @constant_zextload_v8i8_to_v8i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9778 ; GFX6-NOHSA-LABEL: constant_zextload_v8i8_to_v8i16:
9779 ; GFX6-NOHSA:       ; %bb.0:
9780 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
9781 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9782 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
9783 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
9784 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
9785 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9786 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s4, 0xff00
9787 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s7, s4, 24
9788 ; GFX6-NOHSA-NEXT:    s_and_b32 s8, s5, 0xff00
9789 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s9, s5, 24
9790 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
9791 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xff
9792 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s4
9793 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
9794 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v0, s9, v0, 16
9795 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s8, s8, 8
9796 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v1, s7, v1, 16
9797 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s6, s6, 8
9798 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
9799 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s8
9800 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s6
9801 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v1
9802 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
9803 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
9804 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
9805 ; GFX6-NOHSA-NEXT:    s_endpgm
9807 ; GFX7-HSA-LABEL: constant_zextload_v8i8_to_v8i16:
9808 ; GFX7-HSA:       ; %bb.0:
9809 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
9810 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9811 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
9812 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
9813 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
9814 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9815 ; GFX7-HSA-NEXT:    s_lshr_b32 s5, s3, 24
9816 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
9817 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s5, v0, 16
9818 ; GFX7-HSA-NEXT:    s_and_b32 s0, s2, 0xff00
9819 ; GFX7-HSA-NEXT:    s_lshr_b32 s1, s2, 24
9820 ; GFX7-HSA-NEXT:    s_and_b32 s4, s3, 0xff00
9821 ; GFX7-HSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
9822 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
9823 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xff
9824 ; GFX7-HSA-NEXT:    s_lshl_b32 s4, s4, 8
9825 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s1, v0, 16
9826 ; GFX7-HSA-NEXT:    s_and_b32 s1, s2, 0xff
9827 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 8
9828 ; GFX7-HSA-NEXT:    s_or_b32 s3, s3, s4
9829 ; GFX7-HSA-NEXT:    s_or_b32 s0, s1, s0
9830 ; GFX7-HSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v0
9831 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
9832 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
9833 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
9834 ; GFX7-HSA-NEXT:    s_endpgm
9836 ; GFX8-NOHSA-LABEL: constant_zextload_v8i8_to_v8i16:
9837 ; GFX8-NOHSA:       ; %bb.0:
9838 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
9839 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9840 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
9841 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
9842 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
9843 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9844 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
9845 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s2, 24
9846 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s1, s3, 24
9847 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s2
9848 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s3, 0x80010
9849 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s1, 16
9850 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v0, s0, v0, 16
9851 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s3
9852 ; GFX8-NOHSA-NEXT:    s_or_b32 s0, s4, s1
9853 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v0
9854 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s2, 0xff
9855 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v3
9856 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s1, v0
9857 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s3, 0xff
9858 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
9859 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s1, v2
9860 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
9861 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
9862 ; GFX8-NOHSA-NEXT:    s_endpgm
9864 ; EG-LABEL: constant_zextload_v8i8_to_v8i16:
9865 ; EG:       ; %bb.0:
9866 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
9867 ; EG-NEXT:    TEX 0 @6
9868 ; EG-NEXT:    ALU 61, @10, KC0[CB0:0-32], KC1[]
9869 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T11.X, 1
9870 ; EG-NEXT:    CF_END
9871 ; EG-NEXT:    PAD
9872 ; EG-NEXT:    Fetch clause starting at 6:
9873 ; EG-NEXT:     VTX_READ_64 T11.XY, T11.X, 0, #1
9874 ; EG-NEXT:    ALU clause starting at 8:
9875 ; EG-NEXT:     MOV * T0.Y, T8.X,
9876 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
9877 ; EG-NEXT:    ALU clause starting at 10:
9878 ; EG-NEXT:     AND_INT T0.W, T11.X, literal.x,
9879 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
9880 ; EG-NEXT:    255(3.573311e-43), -65536(nan)
9881 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
9882 ; EG-NEXT:     MOV * T8.X, PV.W,
9883 ; EG-NEXT:     MOV T0.Y, PV.X,
9884 ; EG-NEXT:     LSHL * T0.W, T11.X, literal.x,
9885 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9886 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9887 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
9888 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9889 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
9890 ; EG-NEXT:     MOV T8.X, PV.W,
9891 ; EG-NEXT:     MOV T0.Y, T9.X,
9892 ; EG-NEXT:     MOV * T0.W, literal.x,
9893 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9894 ; EG-NEXT:     BFE_UINT T1.W, T11.X, literal.x, PV.W,
9895 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.y,
9896 ; EG-NEXT:    16(2.242078e-44), -65536(nan)
9897 ; EG-NEXT:     OR_INT * T1.W, PS, PV.W,
9898 ; EG-NEXT:     MOV * T9.X, PV.W,
9899 ; EG-NEXT:     MOV T0.Y, PV.X,
9900 ; EG-NEXT:     LSHR * T1.W, T11.X, literal.x,
9901 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9902 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9903 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9904 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9905 ; EG-NEXT:     OR_INT * T12.Y, PV.W, PS,
9906 ; EG-NEXT:     MOV T9.X, PV.Y,
9907 ; EG-NEXT:     MOV * T0.Y, T4.X,
9908 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9909 ; EG-NEXT:     AND_INT * T2.W, T11.Y, literal.y,
9910 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
9911 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9912 ; EG-NEXT:     MOV * T4.X, PV.W,
9913 ; EG-NEXT:     MOV T0.Y, PV.X,
9914 ; EG-NEXT:     LSHL * T1.W, T11.Y, literal.x,
9915 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9916 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9917 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9918 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9919 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9920 ; EG-NEXT:     MOV T4.X, PV.W,
9921 ; EG-NEXT:     MOV T0.Y, T5.X,
9922 ; EG-NEXT:     BFE_UINT * T0.W, T11.Y, literal.x, T0.W,
9923 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9924 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.x,
9925 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
9926 ; EG-NEXT:     OR_INT * T0.W, PV.W, T0.W,
9927 ; EG-NEXT:     MOV * T5.X, PV.W,
9928 ; EG-NEXT:     MOV T0.Y, PV.X,
9929 ; EG-NEXT:     LSHR * T0.W, T11.Y, literal.x,
9930 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9931 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9932 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
9933 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9934 ; EG-NEXT:     LSHR T11.X, KC0[2].Y, literal.x,
9935 ; EG-NEXT:     OR_INT * T12.W, PV.W, PS,
9936 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9937 ; EG-NEXT:     MOV T5.X, PV.W,
9938 ; EG-NEXT:     MOV * T12.X, T8.X,
9939 ; EG-NEXT:     MOV * T12.Z, T4.X,
9941 ; GFX12-LABEL: constant_zextload_v8i8_to_v8i16:
9942 ; GFX12:       ; %bb.0:
9943 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
9944 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9945 ; GFX12-NEXT:    s_load_b64 s[2:3], s[2:3], 0x0
9946 ; GFX12-NEXT:    s_wait_kmcnt 0x0
9947 ; GFX12-NEXT:    s_lshr_b32 s5, s2, 16
9948 ; GFX12-NEXT:    s_lshr_b32 s6, s3, 16
9949 ; GFX12-NEXT:    v_and_b32_e64 v0, 0xff, s2
9950 ; GFX12-NEXT:    v_and_b32_e64 v2, 0xff, s3
9951 ; GFX12-NEXT:    v_and_b32_e64 v3, 0xff, s6
9952 ; GFX12-NEXT:    v_and_b32_e64 v5, 0xff, s5
9953 ; GFX12-NEXT:    v_mov_b32_e32 v4, 0
9954 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s3
9955 ; GFX12-NEXT:    v_lshrrev_b16 v6, 8, s2
9956 ; GFX12-NEXT:    v_and_b32_e32 v3, 0xffff, v3
9957 ; GFX12-NEXT:    v_and_b32_e32 v0, 0xffff, v0
9958 ; GFX12-NEXT:    v_and_b32_e32 v2, 0xffff, v2
9959 ; GFX12-NEXT:    v_and_b32_e32 v5, 0xffff, v5
9960 ; GFX12-NEXT:    s_lshr_b32 s4, s2, 24
9961 ; GFX12-NEXT:    s_lshr_b32 s2, s3, 24
9962 ; GFX12-NEXT:    v_lshl_or_b32 v0, v6, 16, v0
9963 ; GFX12-NEXT:    v_lshl_or_b32 v2, v1, 16, v2
9964 ; GFX12-NEXT:    v_lshl_or_b32 v3, s2, 16, v3
9965 ; GFX12-NEXT:    v_lshl_or_b32 v1, s4, 16, v5
9966 ; GFX12-NEXT:    global_store_b128 v4, v[0:3], s[0:1]
9967 ; GFX12-NEXT:    s_nop 0
9968 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9969 ; GFX12-NEXT:    s_endpgm
9970   %load = load <8 x i8>, ptr addrspace(4) %in
9971   %ext = zext <8 x i8> %load to <8 x i16>
9972   store <8 x i16> %ext, ptr addrspace(1) %out
9973   ret void
9976 define amdgpu_kernel void @constant_sextload_v8i8_to_v8i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9977 ; GFX6-NOHSA-LABEL: constant_sextload_v8i8_to_v8i16:
9978 ; GFX6-NOHSA:       ; %bb.0:
9979 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
9980 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9981 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
9982 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
9983 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9984 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s2, s5, 24
9985 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s6, s5, 0x80010
9986 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s7, s5, 0x80008
9987 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
9988 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s8, s4, 24
9989 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s9, s4, 0x80010
9990 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s10, s4, 0x80008
9991 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
9992 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s2, s2, 16
9993 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s6, 0xffff
9994 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s7, s7, 16
9995 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xffff
9996 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s8, s8, 16
9997 ; GFX6-NOHSA-NEXT:    s_and_b32 s9, s9, 0xffff
9998 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s10, s10, 16
9999 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xffff
10000 ; GFX6-NOHSA-NEXT:    s_or_b32 s6, s6, s2
10001 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s7
10002 ; GFX6-NOHSA-NEXT:    s_or_b32 s7, s9, s8
10003 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s10
10004 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
10005 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
10006 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s7
10007 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
10008 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s6
10009 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
10010 ; GFX6-NOHSA-NEXT:    s_endpgm
10012 ; GFX7-HSA-LABEL: constant_sextload_v8i8_to_v8i16:
10013 ; GFX7-HSA:       ; %bb.0:
10014 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
10015 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
10016 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
10017 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
10018 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
10019 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
10020 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s3, 24
10021 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s3, 0x80010
10022 ; GFX7-HSA-NEXT:    s_bfe_i32 s4, s3, 0x80008
10023 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s3, s3
10024 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
10025 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10026 ; GFX7-HSA-NEXT:    s_lshl_b32 s4, s4, 16
10027 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
10028 ; GFX7-HSA-NEXT:    s_or_b32 s0, s1, s0
10029 ; GFX7-HSA-NEXT:    s_or_b32 s1, s3, s4
10030 ; GFX7-HSA-NEXT:    s_ashr_i32 s3, s2, 24
10031 ; GFX7-HSA-NEXT:    s_bfe_i32 s4, s2, 0x80010
10032 ; GFX7-HSA-NEXT:    s_lshl_b32 s3, s3, 16
10033 ; GFX7-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
10034 ; GFX7-HSA-NEXT:    s_or_b32 s3, s4, s3
10035 ; GFX7-HSA-NEXT:    s_bfe_i32 s4, s2, 0x80008
10036 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s2, s2
10037 ; GFX7-HSA-NEXT:    s_lshl_b32 s4, s4, 16
10038 ; GFX7-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
10039 ; GFX7-HSA-NEXT:    s_or_b32 s2, s2, s4
10040 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
10041 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
10042 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s1
10043 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
10044 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10045 ; GFX7-HSA-NEXT:    s_endpgm
10047 ; GFX8-NOHSA-LABEL: constant_sextload_v8i8_to_v8i16:
10048 ; GFX8-NOHSA:       ; %bb.0:
10049 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
10050 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10051 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
10052 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
10053 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
10054 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10055 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s6, s2, 0x80000
10056 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v0, 8, s2
10057 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[0:1], s[2:3], 56
10058 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s5, s3, 16
10059 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, 0xffff, s6
10060 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
10061 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s1, v0
10062 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s5, 0x80000
10063 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s0, s0, 16
10064 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, 0xffff, s1
10065 ; GFX8-NOHSA-NEXT:    s_or_b32 s0, s1, s0
10066 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s3, 0x80000
10067 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v1, 8, s3
10068 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s4, s2, 16
10069 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, 0xffff, s1
10070 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
10071 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s1, v1
10072 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s1, s2, 24
10073 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s2, s4, 0x80000
10074 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s1, 16
10075 ; GFX8-NOHSA-NEXT:    s_and_b32 s2, 0xffff, s2
10076 ; GFX8-NOHSA-NEXT:    s_or_b32 s1, s2, s1
10077 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
10078 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
10079 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10080 ; GFX8-NOHSA-NEXT:    s_endpgm
10082 ; EG-LABEL: constant_sextload_v8i8_to_v8i16:
10083 ; EG:       ; %bb.0:
10084 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
10085 ; EG-NEXT:    TEX 0 @6
10086 ; EG-NEXT:    ALU 74, @10, KC0[CB0:0-32], KC1[]
10087 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T11.X, 1
10088 ; EG-NEXT:    CF_END
10089 ; EG-NEXT:    PAD
10090 ; EG-NEXT:    Fetch clause starting at 6:
10091 ; EG-NEXT:     VTX_READ_64 T11.XY, T11.X, 0, #1
10092 ; EG-NEXT:    ALU clause starting at 8:
10093 ; EG-NEXT:     MOV * T0.Y, T8.X,
10094 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
10095 ; EG-NEXT:    ALU clause starting at 10:
10096 ; EG-NEXT:     BFE_INT * T0.W, T11.X, 0.0, literal.x,
10097 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10098 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
10099 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
10100 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
10101 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
10102 ; EG-NEXT:     MOV * T8.X, PV.W,
10103 ; EG-NEXT:     MOV T0.Y, PV.X,
10104 ; EG-NEXT:     LSHR * T0.W, T11.X, literal.x,
10105 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10106 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10107 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10108 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10109 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10110 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10111 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10112 ; EG-NEXT:     MOV T8.X, PV.W,
10113 ; EG-NEXT:     MOV T0.Y, T9.X,
10114 ; EG-NEXT:     LSHR * T0.W, T11.X, literal.x, BS:VEC_120/SCL_212
10115 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10116 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10117 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10118 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10119 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10120 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10121 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10122 ; EG-NEXT:     MOV * T9.X, PV.W,
10123 ; EG-NEXT:     MOV T0.Y, PV.X,
10124 ; EG-NEXT:     ASHR * T0.W, T11.X, literal.x,
10125 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10126 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10127 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10128 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10129 ; EG-NEXT:     OR_INT * T12.Y, PV.W, PS,
10130 ; EG-NEXT:     MOV T9.X, PV.Y,
10131 ; EG-NEXT:     MOV T0.Y, T4.X,
10132 ; EG-NEXT:     BFE_INT * T0.W, T11.Y, 0.0, literal.x,
10133 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10134 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10135 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10136 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10137 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10138 ; EG-NEXT:     MOV * T4.X, PV.W,
10139 ; EG-NEXT:     MOV T0.Y, PV.X,
10140 ; EG-NEXT:     LSHR * T0.W, T11.Y, literal.x,
10141 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10142 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10143 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10144 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10145 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10146 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10147 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10148 ; EG-NEXT:     MOV T4.X, PV.W,
10149 ; EG-NEXT:     MOV T0.Y, T5.X,
10150 ; EG-NEXT:     LSHR * T0.W, T11.Y, literal.x,
10151 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10152 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10153 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10154 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10155 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10156 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10157 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10158 ; EG-NEXT:     MOV * T5.X, PV.W,
10159 ; EG-NEXT:     MOV T0.Y, PV.X,
10160 ; EG-NEXT:     ASHR * T0.W, T11.Y, literal.x,
10161 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10162 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10163 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10164 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10165 ; EG-NEXT:     LSHR T11.X, KC0[2].Y, literal.x,
10166 ; EG-NEXT:     OR_INT * T12.W, PV.W, PS,
10167 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
10168 ; EG-NEXT:     MOV T5.X, PV.W,
10169 ; EG-NEXT:     MOV * T12.X, T8.X,
10170 ; EG-NEXT:     MOV * T12.Z, T4.X,
10172 ; GFX12-LABEL: constant_sextload_v8i8_to_v8i16:
10173 ; GFX12:       ; %bb.0:
10174 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
10175 ; GFX12-NEXT:    s_wait_kmcnt 0x0
10176 ; GFX12-NEXT:    s_load_b64 s[2:3], s[2:3], 0x0
10177 ; GFX12-NEXT:    s_wait_kmcnt 0x0
10178 ; GFX12-NEXT:    s_bfe_i32 s8, s2, 0x80000
10179 ; GFX12-NEXT:    s_bfe_i32 s9, s3, 0x80000
10180 ; GFX12-NEXT:    s_lshr_b32 s6, s2, 16
10181 ; GFX12-NEXT:    s_lshr_b32 s7, s3, 16
10182 ; GFX12-NEXT:    v_ashrrev_i16 v0, 8, s2
10183 ; GFX12-NEXT:    v_ashrrev_i16 v2, 8, s3
10184 ; GFX12-NEXT:    s_ashr_i64 s[4:5], s[2:3], 56
10185 ; GFX12-NEXT:    v_and_b32_e64 v3, 0xffff, s8
10186 ; GFX12-NEXT:    v_and_b32_e64 v5, 0xffff, s9
10187 ; GFX12-NEXT:    s_ashr_i32 s2, s2, 24
10188 ; GFX12-NEXT:    s_bfe_i32 s3, s6, 0x80000
10189 ; GFX12-NEXT:    s_bfe_i32 s5, s7, 0x80000
10190 ; GFX12-NEXT:    s_pack_ll_b32_b16 s2, s3, s2
10191 ; GFX12-NEXT:    s_pack_ll_b32_b16 s3, s5, s4
10192 ; GFX12-NEXT:    v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v1, s2
10193 ; GFX12-NEXT:    v_lshl_or_b32 v0, v0, 16, v3
10194 ; GFX12-NEXT:    v_lshl_or_b32 v2, v2, 16, v5
10195 ; GFX12-NEXT:    v_mov_b32_e32 v3, s3
10196 ; GFX12-NEXT:    global_store_b128 v4, v[0:3], s[0:1]
10197 ; GFX12-NEXT:    s_nop 0
10198 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
10199 ; GFX12-NEXT:    s_endpgm
10200   %load = load <8 x i8>, ptr addrspace(4) %in
10201   %ext = sext <8 x i8> %load to <8 x i16>
10202   store <8 x i16> %ext, ptr addrspace(1) %out
10203   ret void
10206 define amdgpu_kernel void @constant_zextload_v16i8_to_v16i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
10207 ; GFX6-NOHSA-LABEL: constant_zextload_v16i8_to_v16i16:
10208 ; GFX6-NOHSA:       ; %bb.0:
10209 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
10210 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10211 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
10212 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
10213 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
10214 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10215 ; GFX6-NOHSA-NEXT:    s_and_b32 s8, s6, 0xff00
10216 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s9, s6, 24
10217 ; GFX6-NOHSA-NEXT:    s_and_b32 s10, s7, 0xff00
10218 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s11, s7, 24
10219 ; GFX6-NOHSA-NEXT:    s_and_b32 s12, s4, 0xff00
10220 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s13, s4, 24
10221 ; GFX6-NOHSA-NEXT:    s_and_b32 s14, s5, 0xff00
10222 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s15, s5, 24
10223 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
10224 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xff
10225 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s4
10226 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
10227 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
10228 ; GFX6-NOHSA-NEXT:    s_and_b32 s7, s7, 0xff
10229 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s6
10230 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s6, 0xff
10231 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v0, s15, v0, 16
10232 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s14, s14, 8
10233 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v1, s13, v1, 16
10234 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s12, s12, 8
10235 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v2, s11, v2, 16
10236 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s10, s10, 8
10237 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v4, s9, v3, 16
10238 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s8, s8, 8
10239 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
10240 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s14
10241 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v1
10242 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s12
10243 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v7, 0xff00ff, v2
10244 ; GFX6-NOHSA-NEXT:    s_or_b32 s7, s7, s10
10245 ; GFX6-NOHSA-NEXT:    s_or_b32 s6, s6, s8
10246 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v5, 0xff00ff, v4
10247 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s6
10248 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s7
10249 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:16
10250 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
10251 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
10252 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
10253 ; GFX6-NOHSA-NEXT:    s_endpgm
10255 ; GFX7-HSA-LABEL: constant_zextload_v16i8_to_v16i16:
10256 ; GFX7-HSA:       ; %bb.0:
10257 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
10258 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
10259 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
10260 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
10261 ; GFX7-HSA-NEXT:    s_lshr_b32 s13, s5, 24
10262 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
10263 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s13, v0, 16
10264 ; GFX7-HSA-NEXT:    s_lshr_b32 s11, s4, 24
10265 ; GFX7-HSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
10266 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
10267 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s11, v0, 16
10268 ; GFX7-HSA-NEXT:    s_lshr_b32 s9, s7, 24
10269 ; GFX7-HSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v0
10270 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
10271 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s9, v0, 16
10272 ; GFX7-HSA-NEXT:    s_and_b32 s2, s6, 0xff00
10273 ; GFX7-HSA-NEXT:    s_lshr_b32 s3, s6, 24
10274 ; GFX7-HSA-NEXT:    s_and_b32 s8, s7, 0xff00
10275 ; GFX7-HSA-NEXT:    s_and_b32 s10, s4, 0xff00
10276 ; GFX7-HSA-NEXT:    s_and_b32 s12, s5, 0xff00
10277 ; GFX7-HSA-NEXT:    v_and_b32_e32 v7, 0xff00ff, v0
10278 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
10279 ; GFX7-HSA-NEXT:    s_and_b32 s5, s5, 0xff
10280 ; GFX7-HSA-NEXT:    s_lshl_b32 s12, s12, 8
10281 ; GFX7-HSA-NEXT:    s_and_b32 s4, s4, 0xff
10282 ; GFX7-HSA-NEXT:    s_lshl_b32 s10, s10, 8
10283 ; GFX7-HSA-NEXT:    s_and_b32 s7, s7, 0xff
10284 ; GFX7-HSA-NEXT:    s_lshl_b32 s8, s8, 8
10285 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s3, v0, 16
10286 ; GFX7-HSA-NEXT:    s_and_b32 s3, s6, 0xff
10287 ; GFX7-HSA-NEXT:    s_lshl_b32 s2, s2, 8
10288 ; GFX7-HSA-NEXT:    s_or_b32 s5, s5, s12
10289 ; GFX7-HSA-NEXT:    s_or_b32 s4, s4, s10
10290 ; GFX7-HSA-NEXT:    s_or_b32 s7, s7, s8
10291 ; GFX7-HSA-NEXT:    s_or_b32 s2, s3, s2
10292 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
10293 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
10294 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
10295 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s3
10296 ; GFX7-HSA-NEXT:    v_and_b32_e32 v5, 0xff00ff, v0
10297 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s7
10298 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s2
10299 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
10300 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
10301 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
10302 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
10303 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
10304 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10305 ; GFX7-HSA-NEXT:    s_endpgm
10307 ; GFX8-NOHSA-LABEL: constant_zextload_v16i8_to_v16i16:
10308 ; GFX8-NOHSA:       ; %bb.0:
10309 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
10310 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10311 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
10312 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10313 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s4
10314 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s3, s4, 24
10315 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s4
10316 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v1, s3, v1, 16
10317 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, s4, 0xff
10318 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
10319 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s3, v0
10320 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s3, s7, 24
10321 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s3, s3, 16
10322 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s7, 0x80010
10323 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s8, s5, 24
10324 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s9, s5, 0x80010
10325 ; GFX8-NOHSA-NEXT:    s_and_b32 s10, s5, 0xff
10326 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s5, s5, 8
10327 ; GFX8-NOHSA-NEXT:    s_or_b32 s3, s4, s3
10328 ; GFX8-NOHSA-NEXT:    s_and_b32 s4, s7, 0xff
10329 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s7, s7, 8
10330 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s6
10331 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s2, s6, 24
10332 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s8, s8, 16
10333 ; GFX8-NOHSA-NEXT:    s_and_b32 s5, s5, 0xff0000
10334 ; GFX8-NOHSA-NEXT:    s_and_b32 s7, s7, 0xff0000
10335 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s6
10336 ; GFX8-NOHSA-NEXT:    s_or_b32 s8, s9, s8
10337 ; GFX8-NOHSA-NEXT:    s_or_b32 s5, s10, s5
10338 ; GFX8-NOHSA-NEXT:    s_or_b32 s4, s4, s7
10339 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v3, s2, v3, 16
10340 ; GFX8-NOHSA-NEXT:    s_and_b32 s2, s6, 0xff
10341 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
10342 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s2, v2
10343 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
10344 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
10345 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
10346 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s3
10347 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v3
10348 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s4
10349 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
10350 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
10351 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v1
10352 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
10353 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
10354 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
10355 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
10356 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10357 ; GFX8-NOHSA-NEXT:    s_endpgm
10359 ; EG-LABEL: constant_zextload_v16i8_to_v16i16:
10360 ; EG:       ; %bb.0:
10361 ; EG-NEXT:    ALU 1, @10, KC0[CB0:0-32], KC1[]
10362 ; EG-NEXT:    TEX 0 @8
10363 ; EG-NEXT:    ALU 103, @12, KC0[], KC1[]
10364 ; EG-NEXT:    ALU 20, @116, KC0[CB0:0-32], KC1[]
10365 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T22.X, 0
10366 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T21.X, 1
10367 ; EG-NEXT:    CF_END
10368 ; EG-NEXT:    PAD
10369 ; EG-NEXT:    Fetch clause starting at 8:
10370 ; EG-NEXT:     VTX_READ_128 T19.XYZW, T19.X, 0, #1
10371 ; EG-NEXT:    ALU clause starting at 10:
10372 ; EG-NEXT:     MOV * T0.Y, T16.X,
10373 ; EG-NEXT:     MOV * T19.X, KC0[2].Z,
10374 ; EG-NEXT:    ALU clause starting at 12:
10375 ; EG-NEXT:     AND_INT T0.W, T19.X, literal.x,
10376 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
10377 ; EG-NEXT:    255(3.573311e-43), -65536(nan)
10378 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
10379 ; EG-NEXT:     MOV * T16.X, PV.W,
10380 ; EG-NEXT:     MOV T0.Y, PV.X,
10381 ; EG-NEXT:     LSHL * T0.W, T19.X, literal.x,
10382 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10383 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10384 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10385 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
10386 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10387 ; EG-NEXT:     MOV T16.X, PV.W,
10388 ; EG-NEXT:     MOV T0.Y, T17.X,
10389 ; EG-NEXT:     MOV * T0.W, literal.x,
10390 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10391 ; EG-NEXT:     BFE_UINT T1.W, T19.X, literal.x, PV.W,
10392 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.y,
10393 ; EG-NEXT:    16(2.242078e-44), -65536(nan)
10394 ; EG-NEXT:     OR_INT * T1.W, PS, PV.W,
10395 ; EG-NEXT:     MOV * T17.X, PV.W,
10396 ; EG-NEXT:     MOV T0.Y, PV.X,
10397 ; EG-NEXT:     LSHR * T1.W, T19.X, literal.x,
10398 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10399 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
10400 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
10401 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
10402 ; EG-NEXT:     OR_INT * T20.Y, PV.W, PS,
10403 ; EG-NEXT:     MOV T17.X, PV.Y,
10404 ; EG-NEXT:     MOV * T0.Y, T12.X,
10405 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10406 ; EG-NEXT:     AND_INT * T2.W, T19.Y, literal.y,
10407 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
10408 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
10409 ; EG-NEXT:     MOV * T12.X, PV.W,
10410 ; EG-NEXT:     MOV T0.Y, PV.X,
10411 ; EG-NEXT:     LSHL * T1.W, T19.Y, literal.x,
10412 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10413 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
10414 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
10415 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
10416 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
10417 ; EG-NEXT:     MOV T12.X, PV.W,
10418 ; EG-NEXT:     MOV T0.Y, T13.X,
10419 ; EG-NEXT:     BFE_UINT * T1.W, T19.Y, literal.x, T0.W,
10420 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10421 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
10422 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
10423 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
10424 ; EG-NEXT:     MOV * T13.X, PV.W,
10425 ; EG-NEXT:     MOV T0.Y, PV.X,
10426 ; EG-NEXT:     LSHR * T1.W, T19.Y, literal.x,
10427 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10428 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
10429 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
10430 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
10431 ; EG-NEXT:     OR_INT * T20.W, PV.W, PS,
10432 ; EG-NEXT:     MOV T13.X, PV.W,
10433 ; EG-NEXT:     MOV * T0.Y, T8.X,
10434 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10435 ; EG-NEXT:     AND_INT * T2.W, T19.Z, literal.y,
10436 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
10437 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
10438 ; EG-NEXT:     MOV * T8.X, PV.W,
10439 ; EG-NEXT:     MOV T0.Y, PV.X,
10440 ; EG-NEXT:     LSHL * T1.W, T19.Z, literal.x,
10441 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10442 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
10443 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
10444 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
10445 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
10446 ; EG-NEXT:     MOV T8.X, PV.W,
10447 ; EG-NEXT:     MOV T0.Y, T9.X,
10448 ; EG-NEXT:     BFE_UINT * T1.W, T19.Z, literal.x, T0.W,
10449 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10450 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
10451 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
10452 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
10453 ; EG-NEXT:     MOV * T9.X, PV.W,
10454 ; EG-NEXT:     MOV T0.Y, PV.X,
10455 ; EG-NEXT:     LSHR * T1.W, T19.Z, literal.x,
10456 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10457 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
10458 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
10459 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
10460 ; EG-NEXT:     OR_INT * T19.Y, PV.W, PS,
10461 ; EG-NEXT:     MOV T9.X, PV.Y,
10462 ; EG-NEXT:     MOV * T0.Y, T4.X,
10463 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10464 ; EG-NEXT:     AND_INT * T2.W, T19.W, literal.y,
10465 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
10466 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
10467 ; EG-NEXT:     MOV * T4.X, PV.W,
10468 ; EG-NEXT:     MOV T0.Y, PV.X,
10469 ; EG-NEXT:     LSHL * T1.W, T19.W, literal.x,
10470 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10471 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
10472 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
10473 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
10474 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
10475 ; EG-NEXT:     MOV T4.X, PV.W,
10476 ; EG-NEXT:     MOV T0.Y, T5.X,
10477 ; EG-NEXT:     BFE_UINT * T0.W, T19.W, literal.x, T0.W,
10478 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10479 ; EG-NEXT:    ALU clause starting at 116:
10480 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.x,
10481 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
10482 ; EG-NEXT:     OR_INT * T0.W, PV.W, T0.W,
10483 ; EG-NEXT:     MOV * T5.X, PV.W,
10484 ; EG-NEXT:     MOV T0.Y, PV.X,
10485 ; EG-NEXT:     LSHR T0.W, T19.W, literal.x,
10486 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
10487 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
10488 ; EG-NEXT:     LSHR T21.X, PS, literal.x,
10489 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.y,
10490 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.z,
10491 ; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
10492 ; EG-NEXT:    16711680(2.341805e-38), 0(0.000000e+00)
10493 ; EG-NEXT:     LSHR T22.X, KC0[2].Y, literal.x,
10494 ; EG-NEXT:     OR_INT * T19.W, PV.W, PS,
10495 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
10496 ; EG-NEXT:     MOV T5.X, PV.W,
10497 ; EG-NEXT:     MOV * T20.X, T16.X,
10498 ; EG-NEXT:     MOV * T20.Z, T12.X,
10499 ; EG-NEXT:     MOV T19.X, T8.X,
10500 ; EG-NEXT:     MOV * T19.Z, T4.X, BS:VEC_120/SCL_212
10502 ; GFX12-LABEL: constant_zextload_v16i8_to_v16i16:
10503 ; GFX12:       ; %bb.0:
10504 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
10505 ; GFX12-NEXT:    s_wait_kmcnt 0x0
10506 ; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x0
10507 ; GFX12-NEXT:    s_wait_kmcnt 0x0
10508 ; GFX12-NEXT:    s_lshr_b32 s3, s6, 16
10509 ; GFX12-NEXT:    s_lshr_b32 s9, s7, 16
10510 ; GFX12-NEXT:    s_lshr_b32 s11, s4, 16
10511 ; GFX12-NEXT:    s_lshr_b32 s13, s5, 16
10512 ; GFX12-NEXT:    v_and_b32_e64 v4, 0xff, s5
10513 ; GFX12-NEXT:    v_and_b32_e64 v5, 0xff, s4
10514 ; GFX12-NEXT:    v_and_b32_e64 v6, 0xff, s7
10515 ; GFX12-NEXT:    v_and_b32_e64 v7, 0xff, s6
10516 ; GFX12-NEXT:    v_and_b32_e64 v11, 0xff, s9
10517 ; GFX12-NEXT:    v_and_b32_e64 v12, 0xff, s3
10518 ; GFX12-NEXT:    v_and_b32_e64 v9, 0xff, s13
10519 ; GFX12-NEXT:    v_and_b32_e64 v10, 0xff, s11
10520 ; GFX12-NEXT:    v_dual_mov_b32 v8, 0 :: v_dual_and_b32 v5, 0xffff, v5
10521 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s6
10522 ; GFX12-NEXT:    v_lshrrev_b16 v3, 8, s7
10523 ; GFX12-NEXT:    v_lshrrev_b16 v0, 8, s4
10524 ; GFX12-NEXT:    v_lshrrev_b16 v2, 8, s5
10525 ; GFX12-NEXT:    v_and_b32_e32 v4, 0xffff, v4
10526 ; GFX12-NEXT:    v_and_b32_e32 v6, 0xffff, v6
10527 ; GFX12-NEXT:    v_and_b32_e32 v7, 0xffff, v7
10528 ; GFX12-NEXT:    v_and_b32_e32 v11, 0xffff, v11
10529 ; GFX12-NEXT:    v_and_b32_e32 v12, 0xffff, v12
10530 ; GFX12-NEXT:    v_and_b32_e32 v9, 0xffff, v9
10531 ; GFX12-NEXT:    v_and_b32_e32 v10, 0xffff, v10
10532 ; GFX12-NEXT:    s_lshr_b32 s2, s6, 24
10533 ; GFX12-NEXT:    s_lshr_b32 s8, s7, 24
10534 ; GFX12-NEXT:    s_lshr_b32 s10, s4, 24
10535 ; GFX12-NEXT:    s_lshr_b32 s12, s5, 24
10536 ; GFX12-NEXT:    v_lshl_or_b32 v2, v2, 16, v4
10537 ; GFX12-NEXT:    v_lshl_or_b32 v0, v0, 16, v5
10538 ; GFX12-NEXT:    v_lshl_or_b32 v6, v3, 16, v6
10539 ; GFX12-NEXT:    v_lshl_or_b32 v4, v1, 16, v7
10540 ; GFX12-NEXT:    v_lshl_or_b32 v7, s8, 16, v11
10541 ; GFX12-NEXT:    v_lshl_or_b32 v5, s2, 16, v12
10542 ; GFX12-NEXT:    v_lshl_or_b32 v3, s12, 16, v9
10543 ; GFX12-NEXT:    v_lshl_or_b32 v1, s10, 16, v10
10544 ; GFX12-NEXT:    s_clause 0x1
10545 ; GFX12-NEXT:    global_store_b128 v8, v[4:7], s[0:1] offset:16
10546 ; GFX12-NEXT:    global_store_b128 v8, v[0:3], s[0:1]
10547 ; GFX12-NEXT:    s_nop 0
10548 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
10549 ; GFX12-NEXT:    s_endpgm
10550   %load = load <16 x i8>, ptr addrspace(4) %in
10551   %ext = zext <16 x i8> %load to <16 x i16>
10552   store <16 x i16> %ext, ptr addrspace(1) %out
10553   ret void
10556 define amdgpu_kernel void @constant_sextload_v16i8_to_v16i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
10557 ; GFX6-NOHSA-LABEL: constant_sextload_v16i8_to_v16i16:
10558 ; GFX6-NOHSA:       ; %bb.0:
10559 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x9
10560 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10561 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
10562 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
10563 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
10564 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10565 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s8, s5, 24
10566 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s9, s5, 0x80010
10567 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s10, s5, 0x80008
10568 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
10569 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s11, s4, 24
10570 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s12, s4, 0x80010
10571 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s13, s4, 0x80008
10572 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
10573 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s14, s7, 24
10574 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s15, s7, 0x80010
10575 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s16, s7, 0x80008
10576 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
10577 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s17, s6, 24
10578 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s18, s6, 0x80010
10579 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s19, s6, 0x80008
10580 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
10581 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s8, s8, 16
10582 ; GFX6-NOHSA-NEXT:    s_and_b32 s9, s9, 0xffff
10583 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s10, s10, 16
10584 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xffff
10585 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s11, s11, 16
10586 ; GFX6-NOHSA-NEXT:    s_and_b32 s12, s12, 0xffff
10587 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s13, s13, 16
10588 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xffff
10589 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s14, s14, 16
10590 ; GFX6-NOHSA-NEXT:    s_and_b32 s15, s15, 0xffff
10591 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s16, s16, 16
10592 ; GFX6-NOHSA-NEXT:    s_and_b32 s7, s7, 0xffff
10593 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s17, s17, 16
10594 ; GFX6-NOHSA-NEXT:    s_and_b32 s18, s18, 0xffff
10595 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s19, s19, 16
10596 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s6, 0xffff
10597 ; GFX6-NOHSA-NEXT:    s_or_b32 s8, s9, s8
10598 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s10
10599 ; GFX6-NOHSA-NEXT:    s_or_b32 s9, s12, s11
10600 ; GFX6-NOHSA-NEXT:    s_or_b32 s10, s15, s14
10601 ; GFX6-NOHSA-NEXT:    s_or_b32 s7, s7, s16
10602 ; GFX6-NOHSA-NEXT:    s_or_b32 s11, s18, s17
10603 ; GFX6-NOHSA-NEXT:    s_or_b32 s6, s6, s19
10604 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s13
10605 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
10606 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
10607 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
10608 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s10
10609 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
10610 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
10611 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
10612 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
10613 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
10614 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
10615 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
10616 ; GFX6-NOHSA-NEXT:    s_endpgm
10618 ; GFX7-HSA-LABEL: constant_sextload_v16i8_to_v16i16:
10619 ; GFX7-HSA:       ; %bb.0:
10620 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[6:7], 0x0
10621 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
10622 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
10623 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
10624 ; GFX7-HSA-NEXT:    s_ashr_i32 s2, s5, 24
10625 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s5, 0x80010
10626 ; GFX7-HSA-NEXT:    s_lshl_b32 s2, s2, 16
10627 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
10628 ; GFX7-HSA-NEXT:    s_bfe_i32 s8, s5, 0x80008
10629 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s5, s5
10630 ; GFX7-HSA-NEXT:    s_ashr_i32 s9, s4, 24
10631 ; GFX7-HSA-NEXT:    s_or_b32 s10, s3, s2
10632 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s4, 0x80010
10633 ; GFX7-HSA-NEXT:    s_lshl_b32 s8, s8, 16
10634 ; GFX7-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
10635 ; GFX7-HSA-NEXT:    s_lshl_b32 s2, s9, 16
10636 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
10637 ; GFX7-HSA-NEXT:    s_or_b32 s5, s5, s8
10638 ; GFX7-HSA-NEXT:    s_or_b32 s8, s3, s2
10639 ; GFX7-HSA-NEXT:    s_bfe_i32 s2, s4, 0x80008
10640 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s3, s4
10641 ; GFX7-HSA-NEXT:    s_lshl_b32 s2, s2, 16
10642 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
10643 ; GFX7-HSA-NEXT:    s_or_b32 s4, s3, s2
10644 ; GFX7-HSA-NEXT:    s_ashr_i32 s2, s7, 24
10645 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s7, 0x80010
10646 ; GFX7-HSA-NEXT:    s_lshl_b32 s2, s2, 16
10647 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
10648 ; GFX7-HSA-NEXT:    s_or_b32 s2, s3, s2
10649 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s7, 0x80008
10650 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s7
10651 ; GFX7-HSA-NEXT:    s_lshl_b32 s3, s3, 16
10652 ; GFX7-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
10653 ; GFX7-HSA-NEXT:    s_or_b32 s3, s7, s3
10654 ; GFX7-HSA-NEXT:    s_ashr_i32 s7, s6, 24
10655 ; GFX7-HSA-NEXT:    s_bfe_i32 s9, s6, 0x80010
10656 ; GFX7-HSA-NEXT:    s_lshl_b32 s7, s7, 16
10657 ; GFX7-HSA-NEXT:    s_and_b32 s9, s9, 0xffff
10658 ; GFX7-HSA-NEXT:    s_or_b32 s7, s9, s7
10659 ; GFX7-HSA-NEXT:    s_bfe_i32 s9, s6, 0x80008
10660 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s6, s6
10661 ; GFX7-HSA-NEXT:    s_lshl_b32 s9, s9, 16
10662 ; GFX7-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
10663 ; GFX7-HSA-NEXT:    s_or_b32 s6, s6, s9
10664 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
10665 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
10666 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
10667 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
10668 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
10669 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
10670 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s7
10671 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
10672 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10673 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
10674 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
10675 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s8
10676 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
10677 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s10
10678 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
10679 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10680 ; GFX7-HSA-NEXT:    s_endpgm
10682 ; GFX8-NOHSA-LABEL: constant_sextload_v16i8_to_v16i16:
10683 ; GFX8-NOHSA:       ; %bb.0:
10684 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
10685 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10686 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
10687 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10688 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s10, s5, 0x80000
10689 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v0, 8, s5
10690 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s3, s5, 16
10691 ; GFX8-NOHSA-NEXT:    s_and_b32 s10, 0xffff, s10
10692 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
10693 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s2, s4, 16
10694 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s5, s4, 0x80000
10695 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s10, v0
10696 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v0, 8, s4
10697 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s4, s3, 0x80000
10698 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v1, 8, s3
10699 ; GFX8-NOHSA-NEXT:    s_and_b32 s4, 0xffff, s4
10700 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
10701 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v3, s4, v1
10702 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s2, 0x80000
10703 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v1, 8, s2
10704 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, 0xffff, s3
10705 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
10706 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s9, s7, 16
10707 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v1, s3, v1
10708 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[2:3], s[6:7], 56
10709 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s9, 0x80000
10710 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s2, s2, 16
10711 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, 0xffff, s3
10712 ; GFX8-NOHSA-NEXT:    s_or_b32 s2, s3, s2
10713 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s7, 0x80000
10714 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v4, 8, s7
10715 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, 0xffff, s3
10716 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
10717 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v6, s3, v4
10718 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s6, 0x80000
10719 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v4, 8, s6
10720 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s8, s6, 16
10721 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, 0xffff, s3
10722 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
10723 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v4, s3, v4
10724 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s8, 0x80000
10725 ; GFX8-NOHSA-NEXT:    s_and_b32 s5, 0xffff, s5
10726 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, 0xffff, s3
10727 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v5, 8, s8
10728 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
10729 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s2
10730 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
10731 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v5, s3, v5
10732 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
10733 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
10734 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s2
10735 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
10736 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
10737 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s5, v0
10738 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
10739 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
10740 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10741 ; GFX8-NOHSA-NEXT:    s_endpgm
10743 ; EG-LABEL: constant_sextload_v16i8_to_v16i16:
10744 ; EG:       ; %bb.0:
10745 ; EG-NEXT:    ALU 1, @10, KC0[CB0:0-32], KC1[]
10746 ; EG-NEXT:    TEX 0 @8
10747 ; EG-NEXT:    ALU 104, @12, KC0[], KC1[]
10748 ; EG-NEXT:    ALU 46, @117, KC0[CB0:0-32], KC1[]
10749 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T22.X, 0
10750 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T21.X, 1
10751 ; EG-NEXT:    CF_END
10752 ; EG-NEXT:    PAD
10753 ; EG-NEXT:    Fetch clause starting at 8:
10754 ; EG-NEXT:     VTX_READ_128 T19.XYZW, T19.X, 0, #1
10755 ; EG-NEXT:    ALU clause starting at 10:
10756 ; EG-NEXT:     MOV * T0.Y, T16.X,
10757 ; EG-NEXT:     MOV * T19.X, KC0[2].Z,
10758 ; EG-NEXT:    ALU clause starting at 12:
10759 ; EG-NEXT:     BFE_INT * T0.W, T19.X, 0.0, literal.x,
10760 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10761 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
10762 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
10763 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
10764 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
10765 ; EG-NEXT:     MOV * T16.X, PV.W,
10766 ; EG-NEXT:     MOV T0.Y, PV.X,
10767 ; EG-NEXT:     LSHR * T0.W, T19.X, literal.x,
10768 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10769 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10770 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10771 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10772 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10773 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10774 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10775 ; EG-NEXT:     MOV T16.X, PV.W,
10776 ; EG-NEXT:     MOV T0.Y, T17.X,
10777 ; EG-NEXT:     LSHR * T0.W, T19.X, literal.x, BS:VEC_120/SCL_212
10778 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10779 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10780 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10781 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10782 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10783 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10784 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10785 ; EG-NEXT:     MOV * T17.X, PV.W,
10786 ; EG-NEXT:     MOV T0.Y, PV.X,
10787 ; EG-NEXT:     ASHR * T0.W, T19.X, literal.x,
10788 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10789 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10790 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10791 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10792 ; EG-NEXT:     OR_INT * T20.Y, PV.W, PS,
10793 ; EG-NEXT:     MOV T17.X, PV.Y,
10794 ; EG-NEXT:     MOV T0.Y, T12.X,
10795 ; EG-NEXT:     BFE_INT * T0.W, T19.Y, 0.0, literal.x,
10796 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10797 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10798 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10799 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10800 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10801 ; EG-NEXT:     MOV * T12.X, PV.W,
10802 ; EG-NEXT:     MOV T0.Y, PV.X,
10803 ; EG-NEXT:     LSHR * T0.W, T19.Y, literal.x,
10804 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10805 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10806 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10807 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10808 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10809 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10810 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10811 ; EG-NEXT:     MOV T12.X, PV.W,
10812 ; EG-NEXT:     MOV T0.Y, T13.X,
10813 ; EG-NEXT:     LSHR * T0.W, T19.Y, literal.x,
10814 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10815 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10816 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10817 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10818 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10819 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10820 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10821 ; EG-NEXT:     MOV * T13.X, PV.W,
10822 ; EG-NEXT:     MOV T0.Y, PV.X,
10823 ; EG-NEXT:     ASHR * T0.W, T19.Y, literal.x,
10824 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10825 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10826 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10827 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10828 ; EG-NEXT:     OR_INT * T20.W, PV.W, PS,
10829 ; EG-NEXT:     MOV T13.X, PV.W,
10830 ; EG-NEXT:     MOV T0.Y, T8.X,
10831 ; EG-NEXT:     BFE_INT * T0.W, T19.Z, 0.0, literal.x,
10832 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10833 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10834 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10835 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10836 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10837 ; EG-NEXT:     MOV * T8.X, PV.W,
10838 ; EG-NEXT:     MOV T0.Y, PV.X,
10839 ; EG-NEXT:     LSHR * T0.W, T19.Z, literal.x,
10840 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10841 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10842 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10843 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10844 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10845 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10846 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10847 ; EG-NEXT:     MOV T8.X, PV.W,
10848 ; EG-NEXT:     MOV T0.Y, T9.X,
10849 ; EG-NEXT:     LSHR * T0.W, T19.Z, literal.x,
10850 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10851 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10852 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10853 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10854 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10855 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10856 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10857 ; EG-NEXT:     MOV * T9.X, PV.W,
10858 ; EG-NEXT:     MOV T0.Y, PV.X,
10859 ; EG-NEXT:     ASHR * T0.W, T19.Z, literal.x,
10860 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10861 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10862 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10863 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10864 ; EG-NEXT:    ALU clause starting at 117:
10865 ; EG-NEXT:     OR_INT * T19.Y, T1.W, T0.W,
10866 ; EG-NEXT:     MOV T9.X, PV.Y,
10867 ; EG-NEXT:     MOV T0.Y, T4.X,
10868 ; EG-NEXT:     BFE_INT * T0.W, T19.W, 0.0, literal.x,
10869 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10870 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10871 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10872 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10873 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10874 ; EG-NEXT:     MOV * T4.X, PV.W,
10875 ; EG-NEXT:     MOV T0.Y, PV.X,
10876 ; EG-NEXT:     LSHR * T0.W, T19.W, literal.x,
10877 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10878 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10879 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10880 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10881 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10882 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10883 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10884 ; EG-NEXT:     MOV T4.X, PV.W,
10885 ; EG-NEXT:     MOV T0.Y, T5.X,
10886 ; EG-NEXT:     LSHR * T0.W, T19.W, literal.x,
10887 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10888 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10889 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10890 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10891 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10892 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10893 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10894 ; EG-NEXT:     MOV * T5.X, PV.W,
10895 ; EG-NEXT:     MOV T0.Y, PV.X,
10896 ; EG-NEXT:     ASHR T0.W, T19.W, literal.x,
10897 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
10898 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
10899 ; EG-NEXT:     LSHR T21.X, PS, literal.x,
10900 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.y,
10901 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.z,
10902 ; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
10903 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10904 ; EG-NEXT:     LSHR T22.X, KC0[2].Y, literal.x,
10905 ; EG-NEXT:     OR_INT * T19.W, PV.W, PS,
10906 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
10907 ; EG-NEXT:     MOV T5.X, PV.W,
10908 ; EG-NEXT:     MOV * T20.X, T16.X,
10909 ; EG-NEXT:     MOV * T20.Z, T12.X,
10910 ; EG-NEXT:     MOV T19.X, T8.X,
10911 ; EG-NEXT:     MOV * T19.Z, T4.X, BS:VEC_120/SCL_212
10913 ; GFX12-LABEL: constant_sextload_v16i8_to_v16i16:
10914 ; GFX12:       ; %bb.0:
10915 ; GFX12-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
10916 ; GFX12-NEXT:    s_wait_kmcnt 0x0
10917 ; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x0
10918 ; GFX12-NEXT:    s_wait_kmcnt 0x0
10919 ; GFX12-NEXT:    s_lshr_b32 s8, s6, 16
10920 ; GFX12-NEXT:    v_ashrrev_i16 v5, 8, s6
10921 ; GFX12-NEXT:    s_bfe_i32 s6, s6, 0x80000
10922 ; GFX12-NEXT:    s_lshr_b32 s10, s4, 16
10923 ; GFX12-NEXT:    s_lshr_b32 s11, s5, 16
10924 ; GFX12-NEXT:    v_ashrrev_i16 v1, 8, s4
10925 ; GFX12-NEXT:    s_bfe_i32 s4, s4, 0x80000
10926 ; GFX12-NEXT:    v_ashrrev_i16 v0, 8, s5
10927 ; GFX12-NEXT:    s_bfe_i32 s5, s5, 0x80000
10928 ; GFX12-NEXT:    s_bfe_i32 s12, s7, 0x80000
10929 ; GFX12-NEXT:    s_ashr_i64 s[2:3], s[6:7], 56
10930 ; GFX12-NEXT:    v_and_b32_e64 v12, 0xffff, s6
10931 ; GFX12-NEXT:    s_bfe_i32 s6, s8, 0x80000
10932 ; GFX12-NEXT:    s_lshr_b32 s9, s7, 16
10933 ; GFX12-NEXT:    v_and_b32_e64 v7, 0xffff, s4
10934 ; GFX12-NEXT:    s_bfe_i32 s3, s11, 0x80000
10935 ; GFX12-NEXT:    s_bfe_i32 s4, s10, 0x80000
10936 ; GFX12-NEXT:    v_ashrrev_i16 v2, 8, s7
10937 ; GFX12-NEXT:    v_and_b32_e64 v4, 0xffff, s5
10938 ; GFX12-NEXT:    v_and_b32_e64 v11, 0xffff, s12
10939 ; GFX12-NEXT:    v_ashrrev_i16 v13, 8, s8
10940 ; GFX12-NEXT:    v_and_b32_e64 v16, 0xffff, s6
10941 ; GFX12-NEXT:    v_ashrrev_i16 v9, 8, s11
10942 ; GFX12-NEXT:    v_ashrrev_i16 v10, 8, s10
10943 ; GFX12-NEXT:    s_bfe_i32 s5, s9, 0x80000
10944 ; GFX12-NEXT:    v_and_b32_e64 v14, 0xffff, s3
10945 ; GFX12-NEXT:    v_and_b32_e64 v15, 0xffff, s4
10946 ; GFX12-NEXT:    s_pack_ll_b32_b16 s2, s5, s2
10947 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
10948 ; GFX12-NEXT:    v_dual_mov_b32 v8, 0 :: v_dual_mov_b32 v3, s2
10949 ; GFX12-NEXT:    v_lshl_or_b32 v6, v0, 16, v4
10950 ; GFX12-NEXT:    v_lshl_or_b32 v4, v1, 16, v7
10951 ; GFX12-NEXT:    v_lshl_or_b32 v2, v2, 16, v11
10952 ; GFX12-NEXT:    v_lshl_or_b32 v0, v5, 16, v12
10953 ; GFX12-NEXT:    v_lshl_or_b32 v1, v13, 16, v16
10954 ; GFX12-NEXT:    v_lshl_or_b32 v7, v9, 16, v14
10955 ; GFX12-NEXT:    v_lshl_or_b32 v5, v10, 16, v15
10956 ; GFX12-NEXT:    s_clause 0x1
10957 ; GFX12-NEXT:    global_store_b128 v8, v[0:3], s[0:1] offset:16
10958 ; GFX12-NEXT:    global_store_b128 v8, v[4:7], s[0:1]
10959 ; GFX12-NEXT:    s_nop 0
10960 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
10961 ; GFX12-NEXT:    s_endpgm
10962   %load = load <16 x i8>, ptr addrspace(4) %in
10963   %ext = sext <16 x i8> %load to <16 x i16>
10964   store <16 x i16> %ext, ptr addrspace(1) %out
10965   ret void
10968 define amdgpu_kernel void @constant_zextload_v32i8_to_v32i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
10969 ; GFX6-NOHSA-LABEL: constant_zextload_v32i8_to_v32i16:
10970 ; GFX6-NOHSA:       ; %bb.0:
10971 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x9
10972 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10973 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
10974 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, 0xf000
10975 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, -1
10976 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10977 ; GFX6-NOHSA-NEXT:    s_and_b32 s12, s6, 0xff00
10978 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s13, s6, 24
10979 ; GFX6-NOHSA-NEXT:    s_and_b32 s14, s7, 0xff00
10980 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s15, s7, 24
10981 ; GFX6-NOHSA-NEXT:    s_and_b32 s16, s4, 0xff00
10982 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s17, s4, 24
10983 ; GFX6-NOHSA-NEXT:    s_and_b32 s18, s5, 0xff00
10984 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s19, s5, 24
10985 ; GFX6-NOHSA-NEXT:    s_and_b32 s20, s2, 0xff00
10986 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s21, s2, 24
10987 ; GFX6-NOHSA-NEXT:    s_and_b32 s22, s3, 0xff00
10988 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s23, s3, 24
10989 ; GFX6-NOHSA-NEXT:    s_and_b32 s24, s0, 0xff00
10990 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s25, s0, 24
10991 ; GFX6-NOHSA-NEXT:    s_and_b32 s26, s1, 0xff00
10992 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s27, s1, 24
10993 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s1
10994 ; GFX6-NOHSA-NEXT:    s_and_b32 s1, s1, 0xff
10995 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s0
10996 ; GFX6-NOHSA-NEXT:    s_and_b32 s0, s0, 0xff
10997 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s3
10998 ; GFX6-NOHSA-NEXT:    s_and_b32 s3, s3, 0xff
10999 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s2
11000 ; GFX6-NOHSA-NEXT:    s_and_b32 s2, s2, 0xff
11001 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s5
11002 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xff
11003 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s4
11004 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
11005 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s7
11006 ; GFX6-NOHSA-NEXT:    s_and_b32 s7, s7, 0xff
11007 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s6
11008 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s6, 0xff
11009 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v0, s27, v0, 16
11010 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s26, s26, 8
11011 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v1, s25, v1, 16
11012 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s24, s24, 8
11013 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v2, s23, v2, 16
11014 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s22, s22, 8
11015 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v8, s21, v3, 16
11016 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s20, s20, 8
11017 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v4, s19, v4, 16
11018 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s18, s18, 8
11019 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v9, s17, v5, 16
11020 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s16, s16, 8
11021 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v6, s15, v6, 16
11022 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s14, s14, 8
11023 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v10, s13, v7, 16
11024 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s12, s12, 8
11025 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
11026 ; GFX6-NOHSA-NEXT:    s_or_b32 s1, s1, s26
11027 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v1
11028 ; GFX6-NOHSA-NEXT:    s_or_b32 s0, s0, s24
11029 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v7, 0xff00ff, v2
11030 ; GFX6-NOHSA-NEXT:    s_or_b32 s3, s3, s22
11031 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v5, 0xff00ff, v8
11032 ; GFX6-NOHSA-NEXT:    s_or_b32 s2, s2, s20
11033 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v11, 0xff00ff, v4
11034 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s18
11035 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v9, 0xff00ff, v9
11036 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s16
11037 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v15, 0xff00ff, v6
11038 ; GFX6-NOHSA-NEXT:    s_or_b32 s7, s7, s14
11039 ; GFX6-NOHSA-NEXT:    s_or_b32 s6, s6, s12
11040 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v13, 0xff00ff, v10
11041 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s6
11042 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s7
11043 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[8:11], 0 offset:48
11044 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
11045 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s5
11046 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[8:11], 0 offset:32
11047 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
11048 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s3
11049 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[8:11], 0 offset:16
11050 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
11051 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s1
11052 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
11053 ; GFX6-NOHSA-NEXT:    s_endpgm
11055 ; GFX7-HSA-LABEL: constant_zextload_v32i8_to_v32i16:
11056 ; GFX7-HSA:       ; %bb.0:
11057 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[8:11], s[6:7], 0x0
11058 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
11059 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
11060 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
11061 ; GFX7-HSA-NEXT:    s_lshr_b32 s25, s1, 24
11062 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s1
11063 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s25, v0, 16
11064 ; GFX7-HSA-NEXT:    s_lshr_b32 s23, s0, 24
11065 ; GFX7-HSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
11066 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
11067 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s23, v0, 16
11068 ; GFX7-HSA-NEXT:    s_lshr_b32 s21, s3, 24
11069 ; GFX7-HSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v0
11070 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
11071 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s21, v0, 16
11072 ; GFX7-HSA-NEXT:    s_lshr_b32 s19, s2, 24
11073 ; GFX7-HSA-NEXT:    s_and_b32 s24, s1, 0xff00
11074 ; GFX7-HSA-NEXT:    v_and_b32_e32 v7, 0xff00ff, v0
11075 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
11076 ; GFX7-HSA-NEXT:    s_and_b32 s22, s0, 0xff00
11077 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xff
11078 ; GFX7-HSA-NEXT:    s_lshl_b32 s24, s24, 8
11079 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s19, v0, 16
11080 ; GFX7-HSA-NEXT:    s_lshr_b32 s17, s5, 24
11081 ; GFX7-HSA-NEXT:    s_and_b32 s20, s3, 0xff00
11082 ; GFX7-HSA-NEXT:    s_or_b32 s24, s1, s24
11083 ; GFX7-HSA-NEXT:    s_and_b32 s0, s0, 0xff
11084 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s22, 8
11085 ; GFX7-HSA-NEXT:    v_and_b32_e32 v5, 0xff00ff, v0
11086 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
11087 ; GFX7-HSA-NEXT:    s_and_b32 s18, s2, 0xff00
11088 ; GFX7-HSA-NEXT:    s_or_b32 s22, s0, s1
11089 ; GFX7-HSA-NEXT:    s_and_b32 s0, s3, 0xff
11090 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s20, 8
11091 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s17, v0, 16
11092 ; GFX7-HSA-NEXT:    s_lshr_b32 s15, s4, 24
11093 ; GFX7-HSA-NEXT:    s_and_b32 s16, s5, 0xff00
11094 ; GFX7-HSA-NEXT:    s_or_b32 s3, s0, s1
11095 ; GFX7-HSA-NEXT:    s_and_b32 s0, s2, 0xff
11096 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s18, 8
11097 ; GFX7-HSA-NEXT:    v_and_b32_e32 v11, 0xff00ff, v0
11098 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
11099 ; GFX7-HSA-NEXT:    s_and_b32 s14, s4, 0xff00
11100 ; GFX7-HSA-NEXT:    s_or_b32 s2, s0, s1
11101 ; GFX7-HSA-NEXT:    s_and_b32 s0, s5, 0xff
11102 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s16, 8
11103 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s15, v0, 16
11104 ; GFX7-HSA-NEXT:    s_and_b32 s12, s7, 0xff00
11105 ; GFX7-HSA-NEXT:    s_lshr_b32 s13, s7, 24
11106 ; GFX7-HSA-NEXT:    s_or_b32 s5, s0, s1
11107 ; GFX7-HSA-NEXT:    v_and_b32_e32 v9, 0xff00ff, v0
11108 ; GFX7-HSA-NEXT:    s_and_b32 s0, s4, 0xff
11109 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s14, 8
11110 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
11111 ; GFX7-HSA-NEXT:    s_and_b32 s10, s6, 0xff00
11112 ; GFX7-HSA-NEXT:    s_or_b32 s4, s0, s1
11113 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s13, v0, 16
11114 ; GFX7-HSA-NEXT:    s_and_b32 s0, s7, 0xff
11115 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s12, 8
11116 ; GFX7-HSA-NEXT:    s_lshr_b32 s11, s6, 24
11117 ; GFX7-HSA-NEXT:    v_and_b32_e32 v15, 0xff00ff, v0
11118 ; GFX7-HSA-NEXT:    s_or_b32 s0, s0, s1
11119 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
11120 ; GFX7-HSA-NEXT:    s_and_b32 s1, s6, 0xff
11121 ; GFX7-HSA-NEXT:    s_lshl_b32 s6, s10, 8
11122 ; GFX7-HSA-NEXT:    s_or_b32 s1, s1, s6
11123 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v14, s0
11124 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 48
11125 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v12, s1
11126 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
11127 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v17, s1
11128 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s11, v0, 16
11129 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v16, s0
11130 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 32
11131 ; GFX7-HSA-NEXT:    v_and_b32_e32 v13, 0xff00ff, v0
11132 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
11133 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
11134 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s4
11135 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v13, s1
11136 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v12, s0
11137 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 16
11138 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v10, s5
11139 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
11140 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
11141 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
11142 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s1
11143 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s3
11144 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s0
11145 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
11146 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s22
11147 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s8
11148 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s24
11149 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s9
11150 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
11151 ; GFX7-HSA-NEXT:    s_endpgm
11153 ; GFX8-NOHSA-LABEL: constant_zextload_v32i8_to_v32i16:
11154 ; GFX8-NOHSA:       ; %bb.0:
11155 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x24
11156 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
11157 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
11158 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
11159 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s14, s1, 24
11160 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s0
11161 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s14, s14, 16
11162 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s15, s1, 0x80010
11163 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s13, s0, 24
11164 ; GFX8-NOHSA-NEXT:    s_or_b32 s14, s15, s14
11165 ; GFX8-NOHSA-NEXT:    s_and_b32 s15, s1, 0xff
11166 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s1, 8
11167 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s0
11168 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s0, 0xff
11169 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
11170 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s1, 0xff0000
11171 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s0, v0
11172 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s3, 24
11173 ; GFX8-NOHSA-NEXT:    s_or_b32 s15, s15, s1
11174 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s0, s0, 16
11175 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s3, 0x80010
11176 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v1, s13, v1, 16
11177 ; GFX8-NOHSA-NEXT:    s_or_b32 s13, s1, s0
11178 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s3, 8
11179 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s2
11180 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s3, 0xff
11181 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s1, 0xff0000
11182 ; GFX8-NOHSA-NEXT:    s_or_b32 s3, s0, s1
11183 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s2, 0xff
11184 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
11185 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s0, v2
11186 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s5, 24
11187 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s0, s0, 16
11188 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s5, 0x80010
11189 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s12, s2, 24
11190 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s2
11191 ; GFX8-NOHSA-NEXT:    s_or_b32 s2, s1, s0
11192 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s5, 8
11193 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s4
11194 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s5, 0xff
11195 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s1, 0xff0000
11196 ; GFX8-NOHSA-NEXT:    s_or_b32 s5, s0, s1
11197 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s4, 0xff
11198 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
11199 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v4, s0, v4
11200 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s7, 24
11201 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s11, s4, 24
11202 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s4
11203 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s0, s0, 16
11204 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s7, 0x80010
11205 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s4, s7, 8
11206 ; GFX8-NOHSA-NEXT:    s_or_b32 s0, s1, s0
11207 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s7, 0xff
11208 ; GFX8-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff0000
11209 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s6, 24
11210 ; GFX8-NOHSA-NEXT:    s_or_b32 s1, s1, s4
11211 ; GFX8-NOHSA-NEXT:    s_and_b32 s4, s6, 0xff
11212 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s0
11213 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 48
11214 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s1
11215 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
11216 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s6
11217 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s6
11218 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s1
11219 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v7, s10, v7, 16
11220 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
11221 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s0
11222 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 32
11223 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v7, 0xff00ff, v7
11224 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v6, s4, v6
11225 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
11226 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
11227 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v5, s11, v5, 16
11228 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s1
11229 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s0
11230 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 16
11231 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v5, 0xff00ff, v5
11232 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s5
11233 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s2
11234 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
11235 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v3, s12, v3, 16
11236 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
11237 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v3
11238 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s1
11239 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s3
11240 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s13
11241 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s0
11242 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
11243 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v1
11244 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
11245 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
11246 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s14
11247 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
11248 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
11249 ; GFX8-NOHSA-NEXT:    s_endpgm
11251 ; EG-LABEL: constant_zextload_v32i8_to_v32i16:
11252 ; EG:       ; %bb.0:
11253 ; EG-NEXT:    ALU 1, @14, KC0[CB0:0-32], KC1[]
11254 ; EG-NEXT:    TEX 1 @10
11255 ; EG-NEXT:    ALU 103, @16, KC0[], KC1[]
11256 ; EG-NEXT:    ALU 104, @120, KC0[], KC1[]
11257 ; EG-NEXT:    ALU 41, @225, KC0[CB0:0-32], KC1[]
11258 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T42.X, 0
11259 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T41.X, 0
11260 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T40.X, 0
11261 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T39.X, 1
11262 ; EG-NEXT:    CF_END
11263 ; EG-NEXT:    Fetch clause starting at 10:
11264 ; EG-NEXT:     VTX_READ_128 T37.XYZW, T35.X, 16, #1
11265 ; EG-NEXT:     VTX_READ_128 T35.XYZW, T35.X, 0, #1
11266 ; EG-NEXT:    ALU clause starting at 14:
11267 ; EG-NEXT:     MOV * T0.Y, T16.X,
11268 ; EG-NEXT:     MOV * T35.X, KC0[2].Z,
11269 ; EG-NEXT:    ALU clause starting at 16:
11270 ; EG-NEXT:     AND_INT T0.W, T37.X, literal.x,
11271 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
11272 ; EG-NEXT:    255(3.573311e-43), -65536(nan)
11273 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
11274 ; EG-NEXT:     MOV * T16.X, PV.W,
11275 ; EG-NEXT:     MOV T0.Y, PV.X,
11276 ; EG-NEXT:     LSHL * T0.W, T37.X, literal.x,
11277 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11278 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
11279 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
11280 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11281 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
11282 ; EG-NEXT:     MOV T16.X, PV.W,
11283 ; EG-NEXT:     MOV T0.Y, T17.X,
11284 ; EG-NEXT:     MOV * T0.W, literal.x,
11285 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11286 ; EG-NEXT:     BFE_UINT T1.W, T37.X, literal.x, PV.W,
11287 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.y,
11288 ; EG-NEXT:    16(2.242078e-44), -65536(nan)
11289 ; EG-NEXT:     OR_INT * T1.W, PS, PV.W,
11290 ; EG-NEXT:     MOV * T17.X, PV.W,
11291 ; EG-NEXT:     MOV T0.Y, PV.X,
11292 ; EG-NEXT:     LSHR * T1.W, T37.X, literal.x,
11293 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11294 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11295 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11296 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11297 ; EG-NEXT:     OR_INT * T36.Y, PV.W, PS,
11298 ; EG-NEXT:     MOV T17.X, PV.Y,
11299 ; EG-NEXT:     MOV * T0.Y, T12.X,
11300 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
11301 ; EG-NEXT:     AND_INT * T2.W, T37.Y, literal.y,
11302 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
11303 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11304 ; EG-NEXT:     MOV * T12.X, PV.W,
11305 ; EG-NEXT:     MOV T0.Y, PV.X,
11306 ; EG-NEXT:     LSHL * T1.W, T37.Y, literal.x,
11307 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11308 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11309 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11310 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11311 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11312 ; EG-NEXT:     MOV T12.X, PV.W,
11313 ; EG-NEXT:     MOV T0.Y, T13.X,
11314 ; EG-NEXT:     BFE_UINT * T1.W, T37.Y, literal.x, T0.W,
11315 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
11316 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
11317 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
11318 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
11319 ; EG-NEXT:     MOV * T13.X, PV.W,
11320 ; EG-NEXT:     MOV T0.Y, PV.X,
11321 ; EG-NEXT:     LSHR * T1.W, T37.Y, literal.x,
11322 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11323 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11324 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11325 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11326 ; EG-NEXT:     OR_INT * T36.W, PV.W, PS,
11327 ; EG-NEXT:     MOV T13.X, PV.W,
11328 ; EG-NEXT:     MOV * T0.Y, T8.X,
11329 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
11330 ; EG-NEXT:     AND_INT * T2.W, T37.Z, literal.y,
11331 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
11332 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11333 ; EG-NEXT:     MOV * T8.X, PV.W,
11334 ; EG-NEXT:     MOV T0.Y, PV.X,
11335 ; EG-NEXT:     LSHL * T1.W, T37.Z, literal.x,
11336 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11337 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11338 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11339 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11340 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11341 ; EG-NEXT:     MOV T8.X, PV.W,
11342 ; EG-NEXT:     MOV T0.Y, T9.X,
11343 ; EG-NEXT:     BFE_UINT * T1.W, T37.Z, literal.x, T0.W,
11344 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
11345 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
11346 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
11347 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
11348 ; EG-NEXT:     MOV * T9.X, PV.W,
11349 ; EG-NEXT:     MOV T0.Y, PV.X,
11350 ; EG-NEXT:     LSHR * T1.W, T37.Z, literal.x,
11351 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11352 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11353 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11354 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11355 ; EG-NEXT:     OR_INT * T37.Y, PV.W, PS,
11356 ; EG-NEXT:     MOV T9.X, PV.Y,
11357 ; EG-NEXT:     MOV * T0.Y, T4.X,
11358 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
11359 ; EG-NEXT:     AND_INT * T2.W, T37.W, literal.y,
11360 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
11361 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11362 ; EG-NEXT:     MOV * T4.X, PV.W,
11363 ; EG-NEXT:     MOV T0.Y, PV.X,
11364 ; EG-NEXT:     LSHL * T1.W, T37.W, literal.x,
11365 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11366 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11367 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11368 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11369 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11370 ; EG-NEXT:     MOV T4.X, PV.W,
11371 ; EG-NEXT:     MOV T0.Y, T5.X,
11372 ; EG-NEXT:     BFE_UINT * T1.W, T37.W, literal.x, T0.W,
11373 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
11374 ; EG-NEXT:    ALU clause starting at 120:
11375 ; EG-NEXT:     AND_INT * T2.W, T0.Y, literal.x,
11376 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
11377 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
11378 ; EG-NEXT:     MOV * T5.X, PV.W,
11379 ; EG-NEXT:     MOV T0.Y, PV.X,
11380 ; EG-NEXT:     LSHR * T1.W, T37.W, literal.x,
11381 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11382 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11383 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11384 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11385 ; EG-NEXT:     OR_INT * T37.W, PV.W, PS,
11386 ; EG-NEXT:     MOV T5.X, PV.W,
11387 ; EG-NEXT:     MOV * T0.Y, T32.X,
11388 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
11389 ; EG-NEXT:     AND_INT * T2.W, T35.X, literal.y,
11390 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
11391 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11392 ; EG-NEXT:     MOV * T32.X, PV.W,
11393 ; EG-NEXT:     MOV T0.Y, PV.X,
11394 ; EG-NEXT:     LSHL * T1.W, T35.X, literal.x,
11395 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11396 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11397 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11398 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11399 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11400 ; EG-NEXT:     MOV T32.X, PV.W,
11401 ; EG-NEXT:     MOV T0.Y, T33.X,
11402 ; EG-NEXT:     BFE_UINT * T1.W, T35.X, literal.x, T0.W, BS:VEC_120/SCL_212
11403 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
11404 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
11405 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
11406 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
11407 ; EG-NEXT:     MOV * T33.X, PV.W,
11408 ; EG-NEXT:     MOV T0.Y, PV.X,
11409 ; EG-NEXT:     LSHR * T1.W, T35.X, literal.x,
11410 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11411 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11412 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11413 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11414 ; EG-NEXT:     OR_INT * T38.Y, PV.W, PS,
11415 ; EG-NEXT:     MOV T33.X, PV.Y,
11416 ; EG-NEXT:     MOV * T0.Y, T28.X,
11417 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
11418 ; EG-NEXT:     AND_INT * T2.W, T35.Y, literal.y,
11419 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
11420 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11421 ; EG-NEXT:     MOV * T28.X, PV.W,
11422 ; EG-NEXT:     MOV T0.Y, PV.X,
11423 ; EG-NEXT:     LSHL * T1.W, T35.Y, literal.x,
11424 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11425 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11426 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11427 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11428 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11429 ; EG-NEXT:     MOV T28.X, PV.W,
11430 ; EG-NEXT:     MOV T0.Y, T29.X,
11431 ; EG-NEXT:     BFE_UINT * T1.W, T35.Y, literal.x, T0.W,
11432 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
11433 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
11434 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
11435 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
11436 ; EG-NEXT:     MOV * T29.X, PV.W,
11437 ; EG-NEXT:     MOV T0.Y, PV.X,
11438 ; EG-NEXT:     LSHR * T1.W, T35.Y, literal.x,
11439 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11440 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11441 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11442 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11443 ; EG-NEXT:     OR_INT * T38.W, PV.W, PS,
11444 ; EG-NEXT:     MOV T29.X, PV.W,
11445 ; EG-NEXT:     MOV * T0.Y, T24.X,
11446 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
11447 ; EG-NEXT:     AND_INT * T2.W, T35.Z, literal.y,
11448 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
11449 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11450 ; EG-NEXT:     MOV * T24.X, PV.W,
11451 ; EG-NEXT:     MOV T0.Y, PV.X,
11452 ; EG-NEXT:     LSHL * T1.W, T35.Z, literal.x,
11453 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11454 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11455 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11456 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11457 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11458 ; EG-NEXT:     MOV T24.X, PV.W,
11459 ; EG-NEXT:     MOV T0.Y, T25.X,
11460 ; EG-NEXT:     BFE_UINT * T1.W, T35.Z, literal.x, T0.W,
11461 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
11462 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
11463 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
11464 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
11465 ; EG-NEXT:     MOV * T25.X, PV.W,
11466 ; EG-NEXT:     MOV T0.Y, PV.X,
11467 ; EG-NEXT:     LSHR * T1.W, T35.Z, literal.x,
11468 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11469 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11470 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11471 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11472 ; EG-NEXT:     OR_INT * T35.Y, PV.W, PS,
11473 ; EG-NEXT:     MOV T25.X, PV.Y,
11474 ; EG-NEXT:     MOV * T0.Y, T20.X,
11475 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
11476 ; EG-NEXT:     AND_INT * T2.W, T35.W, literal.y,
11477 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
11478 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11479 ; EG-NEXT:     MOV * T20.X, PV.W,
11480 ; EG-NEXT:    ALU clause starting at 225:
11481 ; EG-NEXT:     MOV T0.Y, T20.X,
11482 ; EG-NEXT:     LSHL * T1.W, T35.W, literal.x,
11483 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11484 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
11485 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
11486 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
11487 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
11488 ; EG-NEXT:     MOV T20.X, PV.W,
11489 ; EG-NEXT:     MOV T0.Y, T21.X,
11490 ; EG-NEXT:     BFE_UINT * T0.W, T35.W, literal.x, T0.W,
11491 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
11492 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.x,
11493 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
11494 ; EG-NEXT:     OR_INT * T0.W, PV.W, T0.W,
11495 ; EG-NEXT:     MOV * T21.X, PV.W,
11496 ; EG-NEXT:     MOV T0.Y, PV.X,
11497 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
11498 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
11499 ; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
11500 ; EG-NEXT:     LSHR * T40.X, KC0[2].Y, literal.x,
11501 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
11502 ; EG-NEXT:     LSHR T0.W, T35.W, literal.x,
11503 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
11504 ; EG-NEXT:    8(1.121039e-44), 48(6.726233e-44)
11505 ; EG-NEXT:     LSHR T41.X, PS, literal.x,
11506 ; EG-NEXT:     AND_INT T0.Z, T0.Y, literal.y,
11507 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.z,
11508 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
11509 ; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
11510 ; EG-NEXT:    16711680(2.341805e-38), 32(4.484155e-44)
11511 ; EG-NEXT:     LSHR T42.X, PS, literal.x,
11512 ; EG-NEXT:     OR_INT * T35.W, PV.Z, PV.W,
11513 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
11514 ; EG-NEXT:     MOV T21.X, PV.W,
11515 ; EG-NEXT:     MOV * T36.X, T16.X,
11516 ; EG-NEXT:     MOV * T36.Z, T12.X,
11517 ; EG-NEXT:     MOV T37.X, T8.X,
11518 ; EG-NEXT:     MOV T37.Z, T4.X, BS:VEC_120/SCL_212
11519 ; EG-NEXT:     MOV * T38.X, T32.X,
11520 ; EG-NEXT:     MOV * T38.Z, T28.X,
11521 ; EG-NEXT:     MOV T35.X, T24.X,
11522 ; EG-NEXT:     MOV * T35.Z, T20.X, BS:VEC_120/SCL_212
11524 ; GFX12-LABEL: constant_zextload_v32i8_to_v32i16:
11525 ; GFX12:       ; %bb.0:
11526 ; GFX12-NEXT:    s_load_b128 s[8:11], s[2:3], 0x24
11527 ; GFX12-NEXT:    s_wait_kmcnt 0x0
11528 ; GFX12-NEXT:    s_load_b256 s[0:7], s[10:11], 0x0
11529 ; GFX12-NEXT:    s_wait_kmcnt 0x0
11530 ; GFX12-NEXT:    s_lshr_b32 s25, s1, 16
11531 ; GFX12-NEXT:    s_lshr_b32 s21, s3, 16
11532 ; GFX12-NEXT:    s_lshr_b32 s23, s0, 16
11533 ; GFX12-NEXT:    v_and_b32_e64 v6, 0xff, s1
11534 ; GFX12-NEXT:    v_and_b32_e64 v10, 0xff, s3
11535 ; GFX12-NEXT:    v_and_b32_e64 v11, 0xff, s2
11536 ; GFX12-NEXT:    v_and_b32_e64 v12, 0xff, s5
11537 ; GFX12-NEXT:    v_and_b32_e64 v13, 0xff, s4
11538 ; GFX12-NEXT:    v_and_b32_e64 v14, 0xff, s25
11539 ; GFX12-NEXT:    v_and_b32_e64 v7, 0xff, s0
11540 ; GFX12-NEXT:    v_and_b32_e64 v15, 0xff, s23
11541 ; GFX12-NEXT:    v_and_b32_e64 v17, 0xff, s21
11542 ; GFX12-NEXT:    s_lshr_b32 s17, s5, 16
11543 ; GFX12-NEXT:    v_lshrrev_b16 v8, 8, s4
11544 ; GFX12-NEXT:    v_lshrrev_b16 v9, 8, s5
11545 ; GFX12-NEXT:    v_lshrrev_b16 v3, 8, s2
11546 ; GFX12-NEXT:    v_lshrrev_b16 v4, 8, s3
11547 ; GFX12-NEXT:    v_lshrrev_b16 v2, 8, s1
11548 ; GFX12-NEXT:    v_and_b32_e64 v19, 0xff, s17
11549 ; GFX12-NEXT:    v_and_b32_e32 v6, 0xffff, v6
11550 ; GFX12-NEXT:    v_and_b32_e32 v10, 0xffff, v10
11551 ; GFX12-NEXT:    v_and_b32_e32 v11, 0xffff, v11
11552 ; GFX12-NEXT:    v_and_b32_e32 v12, 0xffff, v12
11553 ; GFX12-NEXT:    v_and_b32_e32 v13, 0xffff, v13
11554 ; GFX12-NEXT:    v_and_b32_e32 v14, 0xffff, v14
11555 ; GFX12-NEXT:    v_dual_mov_b32 v16, 0 :: v_dual_and_b32 v7, 0xffff, v7
11556 ; GFX12-NEXT:    v_lshrrev_b16 v0, 8, s0
11557 ; GFX12-NEXT:    v_and_b32_e32 v20, 0xffff, v15
11558 ; GFX12-NEXT:    v_and_b32_e32 v15, 0xffff, v17
11559 ; GFX12-NEXT:    s_lshr_b32 s11, s6, 16
11560 ; GFX12-NEXT:    s_lshr_b32 s13, s7, 16
11561 ; GFX12-NEXT:    s_lshr_b32 s24, s1, 24
11562 ; GFX12-NEXT:    s_lshr_b32 s15, s4, 16
11563 ; GFX12-NEXT:    s_lshr_b32 s20, s3, 24
11564 ; GFX12-NEXT:    s_lshr_b32 s19, s2, 16
11565 ; GFX12-NEXT:    v_and_b32_e32 v17, 0xffff, v19
11566 ; GFX12-NEXT:    v_lshl_or_b32 v2, v2, 16, v6
11567 ; GFX12-NEXT:    v_lshl_or_b32 v6, v4, 16, v10
11568 ; GFX12-NEXT:    v_lshl_or_b32 v4, v3, 16, v11
11569 ; GFX12-NEXT:    v_lshl_or_b32 v3, s24, 16, v14
11570 ; GFX12-NEXT:    v_lshl_or_b32 v10, v9, 16, v12
11571 ; GFX12-NEXT:    v_lshl_or_b32 v8, v8, 16, v13
11572 ; GFX12-NEXT:    v_and_b32_e64 v9, 0xff, s7
11573 ; GFX12-NEXT:    v_and_b32_e64 v12, 0xff, s6
11574 ; GFX12-NEXT:    v_and_b32_e64 v13, 0xff, s13
11575 ; GFX12-NEXT:    v_and_b32_e64 v14, 0xff, s11
11576 ; GFX12-NEXT:    v_lshl_or_b32 v0, v0, 16, v7
11577 ; GFX12-NEXT:    v_lshl_or_b32 v7, s20, 16, v15
11578 ; GFX12-NEXT:    v_and_b32_e64 v15, 0xff, s15
11579 ; GFX12-NEXT:    v_and_b32_e64 v18, 0xff, s19
11580 ; GFX12-NEXT:    s_lshr_b32 s16, s5, 24
11581 ; GFX12-NEXT:    v_lshrrev_b16 v1, 8, s6
11582 ; GFX12-NEXT:    v_lshrrev_b16 v5, 8, s7
11583 ; GFX12-NEXT:    v_lshl_or_b32 v11, s16, 16, v17
11584 ; GFX12-NEXT:    v_and_b32_e32 v9, 0xffff, v9
11585 ; GFX12-NEXT:    v_and_b32_e32 v12, 0xffff, v12
11586 ; GFX12-NEXT:    v_and_b32_e32 v13, 0xffff, v13
11587 ; GFX12-NEXT:    v_and_b32_e32 v17, 0xffff, v14
11588 ; GFX12-NEXT:    v_and_b32_e32 v19, 0xffff, v15
11589 ; GFX12-NEXT:    v_and_b32_e32 v18, 0xffff, v18
11590 ; GFX12-NEXT:    s_lshr_b32 s10, s6, 24
11591 ; GFX12-NEXT:    s_lshr_b32 s12, s7, 24
11592 ; GFX12-NEXT:    s_lshr_b32 s14, s4, 24
11593 ; GFX12-NEXT:    s_lshr_b32 s18, s2, 24
11594 ; GFX12-NEXT:    v_lshl_or_b32 v14, v5, 16, v9
11595 ; GFX12-NEXT:    v_lshl_or_b32 v12, v1, 16, v12
11596 ; GFX12-NEXT:    v_lshl_or_b32 v15, s12, 16, v13
11597 ; GFX12-NEXT:    v_lshl_or_b32 v13, s10, 16, v17
11598 ; GFX12-NEXT:    s_lshr_b32 s22, s0, 24
11599 ; GFX12-NEXT:    v_lshl_or_b32 v9, s14, 16, v19
11600 ; GFX12-NEXT:    v_lshl_or_b32 v5, s18, 16, v18
11601 ; GFX12-NEXT:    v_lshl_or_b32 v1, s22, 16, v20
11602 ; GFX12-NEXT:    s_clause 0x3
11603 ; GFX12-NEXT:    global_store_b128 v16, v[12:15], s[8:9] offset:48
11604 ; GFX12-NEXT:    global_store_b128 v16, v[8:11], s[8:9] offset:32
11605 ; GFX12-NEXT:    global_store_b128 v16, v[4:7], s[8:9] offset:16
11606 ; GFX12-NEXT:    global_store_b128 v16, v[0:3], s[8:9]
11607 ; GFX12-NEXT:    s_nop 0
11608 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
11609 ; GFX12-NEXT:    s_endpgm
11610   %load = load <32 x i8>, ptr addrspace(4) %in
11611   %ext = zext <32 x i8> %load to <32 x i16>
11612   store <32 x i16> %ext, ptr addrspace(1) %out
11613   ret void
11616 define amdgpu_kernel void @constant_sextload_v32i8_to_v32i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
11617 ; GFX6-NOHSA-LABEL: constant_sextload_v32i8_to_v32i16:
11618 ; GFX6-NOHSA:       ; %bb.0:
11619 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x9
11620 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
11621 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
11622 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, 0xf000
11623 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, -1
11624 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
11625 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s12, s1, 24
11626 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s13, s1, 0x80010
11627 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s14, s1, 0x80008
11628 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s1, s1
11629 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s15, s0, 24
11630 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s16, s0, 0x80010
11631 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s17, s0, 0x80008
11632 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s0, s0
11633 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s18, s3, 24
11634 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s19, s3, 0x80010
11635 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s20, s3, 0x80008
11636 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s3, s3
11637 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s21, s2, 24
11638 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s22, s2, 0x80010
11639 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s23, s2, 0x80008
11640 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
11641 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s24, s5, 24
11642 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s25, s5, 0x80010
11643 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s26, s5, 0x80008
11644 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
11645 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s27, s4, 24
11646 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s28, s4, 0x80010
11647 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s29, s4, 0x80008
11648 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
11649 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s30, s7, 24
11650 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s31, s7, 0x80010
11651 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s33, s7, 0x80008
11652 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
11653 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s34, s6, 24
11654 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s35, s6, 0x80010
11655 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s36, s6, 0x80008
11656 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
11657 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s12, s12, 16
11658 ; GFX6-NOHSA-NEXT:    s_and_b32 s13, s13, 0xffff
11659 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s14, s14, 16
11660 ; GFX6-NOHSA-NEXT:    s_and_b32 s1, s1, 0xffff
11661 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s15, s15, 16
11662 ; GFX6-NOHSA-NEXT:    s_and_b32 s16, s16, 0xffff
11663 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s17, s17, 16
11664 ; GFX6-NOHSA-NEXT:    s_and_b32 s0, s0, 0xffff
11665 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s18, s18, 16
11666 ; GFX6-NOHSA-NEXT:    s_and_b32 s19, s19, 0xffff
11667 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s20, s20, 16
11668 ; GFX6-NOHSA-NEXT:    s_and_b32 s3, s3, 0xffff
11669 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s21, s21, 16
11670 ; GFX6-NOHSA-NEXT:    s_and_b32 s22, s22, 0xffff
11671 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s23, s23, 16
11672 ; GFX6-NOHSA-NEXT:    s_and_b32 s2, s2, 0xffff
11673 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s24, s24, 16
11674 ; GFX6-NOHSA-NEXT:    s_and_b32 s25, s25, 0xffff
11675 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s26, s26, 16
11676 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xffff
11677 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s27, s27, 16
11678 ; GFX6-NOHSA-NEXT:    s_and_b32 s28, s28, 0xffff
11679 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s29, s29, 16
11680 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xffff
11681 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s30, s30, 16
11682 ; GFX6-NOHSA-NEXT:    s_and_b32 s31, s31, 0xffff
11683 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s33, s33, 16
11684 ; GFX6-NOHSA-NEXT:    s_and_b32 s7, s7, 0xffff
11685 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s34, s34, 16
11686 ; GFX6-NOHSA-NEXT:    s_and_b32 s35, s35, 0xffff
11687 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s36, s36, 16
11688 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s6, 0xffff
11689 ; GFX6-NOHSA-NEXT:    s_or_b32 s12, s13, s12
11690 ; GFX6-NOHSA-NEXT:    s_or_b32 s1, s1, s14
11691 ; GFX6-NOHSA-NEXT:    s_or_b32 s13, s16, s15
11692 ; GFX6-NOHSA-NEXT:    s_or_b32 s0, s0, s17
11693 ; GFX6-NOHSA-NEXT:    s_or_b32 s14, s19, s18
11694 ; GFX6-NOHSA-NEXT:    s_or_b32 s3, s3, s20
11695 ; GFX6-NOHSA-NEXT:    s_or_b32 s15, s22, s21
11696 ; GFX6-NOHSA-NEXT:    s_or_b32 s2, s2, s23
11697 ; GFX6-NOHSA-NEXT:    s_or_b32 s16, s25, s24
11698 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s26
11699 ; GFX6-NOHSA-NEXT:    s_or_b32 s17, s28, s27
11700 ; GFX6-NOHSA-NEXT:    s_or_b32 s18, s31, s30
11701 ; GFX6-NOHSA-NEXT:    s_or_b32 s7, s7, s33
11702 ; GFX6-NOHSA-NEXT:    s_or_b32 s19, s35, s34
11703 ; GFX6-NOHSA-NEXT:    s_or_b32 s6, s6, s36
11704 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s29
11705 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
11706 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s19
11707 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
11708 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
11709 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:48
11710 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
11711 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
11712 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s17
11713 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
11714 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s16
11715 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:32
11716 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
11717 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
11718 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s15
11719 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s3
11720 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s14
11721 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16
11722 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
11723 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
11724 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s13
11725 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s1
11726 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s12
11727 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
11728 ; GFX6-NOHSA-NEXT:    s_endpgm
11730 ; GFX7-HSA-LABEL: constant_sextload_v32i8_to_v32i16:
11731 ; GFX7-HSA:       ; %bb.0:
11732 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[8:11], s[6:7], 0x0
11733 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
11734 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
11735 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
11736 ; GFX7-HSA-NEXT:    s_ashr_i32 s10, s1, 24
11737 ; GFX7-HSA-NEXT:    s_bfe_i32 s11, s1, 0x80010
11738 ; GFX7-HSA-NEXT:    s_bfe_i32 s12, s1, 0x80008
11739 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s1
11740 ; GFX7-HSA-NEXT:    s_lshl_b32 s10, s10, 16
11741 ; GFX7-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
11742 ; GFX7-HSA-NEXT:    s_lshl_b32 s12, s12, 16
11743 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
11744 ; GFX7-HSA-NEXT:    s_ashr_i32 s13, s0, 24
11745 ; GFX7-HSA-NEXT:    s_or_b32 s10, s11, s10
11746 ; GFX7-HSA-NEXT:    s_or_b32 s11, s1, s12
11747 ; GFX7-HSA-NEXT:    s_bfe_i32 s12, s0, 0x80010
11748 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s13, 16
11749 ; GFX7-HSA-NEXT:    s_and_b32 s12, s12, 0xffff
11750 ; GFX7-HSA-NEXT:    s_or_b32 s12, s12, s1
11751 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s0, 0x80008
11752 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s0, s0
11753 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s1, 16
11754 ; GFX7-HSA-NEXT:    s_and_b32 s0, s0, 0xffff
11755 ; GFX7-HSA-NEXT:    s_or_b32 s13, s0, s1
11756 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s3, 24
11757 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s3, 0x80010
11758 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
11759 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
11760 ; GFX7-HSA-NEXT:    s_or_b32 s14, s1, s0
11761 ; GFX7-HSA-NEXT:    s_bfe_i32 s0, s3, 0x80008
11762 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s3
11763 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
11764 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
11765 ; GFX7-HSA-NEXT:    s_or_b32 s3, s1, s0
11766 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s2, 24
11767 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s2, 0x80010
11768 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
11769 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
11770 ; GFX7-HSA-NEXT:    s_or_b32 s15, s1, s0
11771 ; GFX7-HSA-NEXT:    s_bfe_i32 s0, s2, 0x80008
11772 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s2
11773 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
11774 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
11775 ; GFX7-HSA-NEXT:    s_or_b32 s2, s1, s0
11776 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s5, 24
11777 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s5, 0x80010
11778 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
11779 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
11780 ; GFX7-HSA-NEXT:    s_or_b32 s16, s1, s0
11781 ; GFX7-HSA-NEXT:    s_bfe_i32 s0, s5, 0x80008
11782 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s5
11783 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
11784 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
11785 ; GFX7-HSA-NEXT:    s_or_b32 s5, s1, s0
11786 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s4, 24
11787 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s4, 0x80010
11788 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
11789 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
11790 ; GFX7-HSA-NEXT:    s_or_b32 s17, s1, s0
11791 ; GFX7-HSA-NEXT:    s_bfe_i32 s0, s4, 0x80008
11792 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s4
11793 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
11794 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
11795 ; GFX7-HSA-NEXT:    s_or_b32 s4, s1, s0
11796 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s7, 24
11797 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s7, 0x80010
11798 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
11799 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
11800 ; GFX7-HSA-NEXT:    s_or_b32 s0, s1, s0
11801 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s7, 0x80008
11802 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s7
11803 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s1, 16
11804 ; GFX7-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
11805 ; GFX7-HSA-NEXT:    s_or_b32 s1, s7, s1
11806 ; GFX7-HSA-NEXT:    s_ashr_i32 s7, s6, 24
11807 ; GFX7-HSA-NEXT:    s_bfe_i32 s18, s6, 0x80010
11808 ; GFX7-HSA-NEXT:    s_lshl_b32 s7, s7, 16
11809 ; GFX7-HSA-NEXT:    s_and_b32 s18, s18, 0xffff
11810 ; GFX7-HSA-NEXT:    s_or_b32 s7, s18, s7
11811 ; GFX7-HSA-NEXT:    s_bfe_i32 s18, s6, 0x80008
11812 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s6, s6
11813 ; GFX7-HSA-NEXT:    s_lshl_b32 s18, s18, 16
11814 ; GFX7-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
11815 ; GFX7-HSA-NEXT:    s_or_b32 s6, s6, s18
11816 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
11817 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 48
11818 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s1
11819 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
11820 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
11821 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
11822 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 32
11823 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
11824 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s7
11825 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
11826 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
11827 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
11828 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
11829 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 16
11830 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
11831 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
11832 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
11833 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s16
11834 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
11835 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
11836 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
11837 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
11838 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s15
11839 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
11840 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s14
11841 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
11842 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
11843 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s8
11844 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s13
11845 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s12
11846 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s11
11847 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s10
11848 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s9
11849 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
11850 ; GFX7-HSA-NEXT:    s_endpgm
11852 ; GFX8-NOHSA-LABEL: constant_sextload_v32i8_to_v32i16:
11853 ; GFX8-NOHSA:       ; %bb.0:
11854 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x24
11855 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
11856 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
11857 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
11858 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s18, s1, 0x80000
11859 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v0, 8, s1
11860 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s17, s1, 16
11861 ; GFX8-NOHSA-NEXT:    s_and_b32 s18, 0xffff, s18
11862 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
11863 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s16, s0, 16
11864 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s18, v0
11865 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s0, 0x80000
11866 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v0, 8, s0
11867 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s17, 0x80000
11868 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v1, 8, s17
11869 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11870 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
11871 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v3, s0, v1
11872 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s16, 0x80000
11873 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v1, 8, s16
11874 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11875 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
11876 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v1, s0, v1
11877 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s3, 0x80000
11878 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v4, 8, s3
11879 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11880 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
11881 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v6, s0, v4
11882 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s2, 0x80000
11883 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v4, 8, s2
11884 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s15, s3, 16
11885 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11886 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
11887 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v4, s0, v4
11888 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s15, 0x80000
11889 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v5, 8, s15
11890 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s14, s2, 16
11891 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11892 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
11893 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v7, s0, v5
11894 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s14, 0x80000
11895 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v5, 8, s14
11896 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, 0xffff, s1
11897 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
11898 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11899 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
11900 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s13, s5, 16
11901 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s1, v0
11902 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v5, s0, v5
11903 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[0:1], s[4:5], 56
11904 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s13, 0x80000
11905 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s0, s0, 16
11906 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, 0xffff, s1
11907 ; GFX8-NOHSA-NEXT:    s_or_b32 s2, s1, s0
11908 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s5, 0x80000
11909 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v8, 8, s5
11910 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11911 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
11912 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v10, s0, v8
11913 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s4, 0x80000
11914 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v8, 8, s4
11915 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s12, s4, 16
11916 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11917 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
11918 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v8, s0, v8
11919 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s12, 0x80000
11920 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v9, 8, s12
11921 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11922 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
11923 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v9, s0, v9
11924 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s7, 0x80000
11925 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v11, 8, s7
11926 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11927 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
11928 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v13, s0, v11
11929 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s6, 0x80000
11930 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v11, 8, s6
11931 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s11, s7, 16
11932 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11933 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
11934 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v11, s0, v11
11935 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s11, 0x80000
11936 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v12, 8, s11
11937 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s6, 16
11938 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11939 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
11940 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v14, s0, v12
11941 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s10, 0x80000
11942 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v12, 8, s10
11943 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
11944 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
11945 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v12, s0, v12
11946 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 48
11947 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
11948 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s1
11949 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s0
11950 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 32
11951 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
11952 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[15:16], v[11:14]
11953 ; GFX8-NOHSA-NEXT:    s_nop 0
11954 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s1
11955 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s0
11956 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 16
11957 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s2
11958 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
11959 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
11960 ; GFX8-NOHSA-NEXT:    s_nop 0
11961 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s1
11962 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s0
11963 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
11964 ; GFX8-NOHSA-NEXT:    s_nop 0
11965 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
11966 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
11967 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
11968 ; GFX8-NOHSA-NEXT:    s_endpgm
11970 ; EG-LABEL: constant_sextload_v32i8_to_v32i16:
11971 ; EG:       ; %bb.0:
11972 ; EG-NEXT:    ALU 1, @14, KC0[CB0:0-32], KC1[]
11973 ; EG-NEXT:    TEX 1 @10
11974 ; EG-NEXT:    ALU 104, @16, KC0[], KC1[]
11975 ; EG-NEXT:    ALU 104, @121, KC0[], KC1[]
11976 ; EG-NEXT:    ALU 95, @226, KC0[CB0:0-32], KC1[]
11977 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T42.X, 0
11978 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T41.X, 0
11979 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T40.X, 0
11980 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T39.X, 1
11981 ; EG-NEXT:    CF_END
11982 ; EG-NEXT:    Fetch clause starting at 10:
11983 ; EG-NEXT:     VTX_READ_128 T37.XYZW, T35.X, 16, #1
11984 ; EG-NEXT:     VTX_READ_128 T35.XYZW, T35.X, 0, #1
11985 ; EG-NEXT:    ALU clause starting at 14:
11986 ; EG-NEXT:     MOV * T0.Y, T16.X,
11987 ; EG-NEXT:     MOV * T35.X, KC0[2].Z,
11988 ; EG-NEXT:    ALU clause starting at 16:
11989 ; EG-NEXT:     BFE_INT * T0.W, T37.X, 0.0, literal.x,
11990 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11991 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
11992 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
11993 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
11994 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
11995 ; EG-NEXT:     MOV * T16.X, PV.W,
11996 ; EG-NEXT:     MOV T0.Y, PV.X,
11997 ; EG-NEXT:     LSHR * T0.W, T37.X, literal.x,
11998 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
11999 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12000 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12001 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
12002 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
12003 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12004 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12005 ; EG-NEXT:     MOV T16.X, PV.W,
12006 ; EG-NEXT:     MOV T0.Y, T17.X,
12007 ; EG-NEXT:     LSHR * T0.W, T37.X, literal.x, BS:VEC_120/SCL_212
12008 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12009 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12010 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12011 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
12012 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
12013 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
12014 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12015 ; EG-NEXT:     MOV * T17.X, PV.W,
12016 ; EG-NEXT:     MOV T0.Y, PV.X,
12017 ; EG-NEXT:     ASHR * T0.W, T37.X, literal.x,
12018 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
12019 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12020 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
12021 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
12022 ; EG-NEXT:     OR_INT * T36.Y, PV.W, PS,
12023 ; EG-NEXT:     MOV T17.X, PV.Y,
12024 ; EG-NEXT:     MOV T0.Y, T12.X,
12025 ; EG-NEXT:     BFE_INT * T0.W, T37.Y, 0.0, literal.x,
12026 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12027 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12028 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
12029 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
12030 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
12031 ; EG-NEXT:     MOV * T12.X, PV.W,
12032 ; EG-NEXT:     MOV T0.Y, PV.X,
12033 ; EG-NEXT:     LSHR * T0.W, T37.Y, literal.x,
12034 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12035 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12036 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12037 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
12038 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
12039 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12040 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12041 ; EG-NEXT:     MOV T12.X, PV.W,
12042 ; EG-NEXT:     MOV T0.Y, T13.X,
12043 ; EG-NEXT:     LSHR * T0.W, T37.Y, literal.x,
12044 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12045 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12046 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12047 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
12048 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
12049 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
12050 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12051 ; EG-NEXT:     MOV * T13.X, PV.W,
12052 ; EG-NEXT:     MOV T0.Y, PV.X,
12053 ; EG-NEXT:     ASHR * T0.W, T37.Y, literal.x,
12054 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
12055 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12056 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
12057 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
12058 ; EG-NEXT:     OR_INT * T36.W, PV.W, PS,
12059 ; EG-NEXT:     MOV T13.X, PV.W,
12060 ; EG-NEXT:     MOV T0.Y, T8.X,
12061 ; EG-NEXT:     BFE_INT * T0.W, T37.Z, 0.0, literal.x,
12062 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12063 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12064 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
12065 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
12066 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
12067 ; EG-NEXT:     MOV * T8.X, PV.W,
12068 ; EG-NEXT:     MOV T0.Y, PV.X,
12069 ; EG-NEXT:     LSHR * T0.W, T37.Z, literal.x,
12070 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12071 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12072 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12073 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
12074 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
12075 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12076 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12077 ; EG-NEXT:     MOV T8.X, PV.W,
12078 ; EG-NEXT:     MOV T0.Y, T9.X,
12079 ; EG-NEXT:     LSHR * T0.W, T37.Z, literal.x,
12080 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12081 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12082 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12083 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
12084 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
12085 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
12086 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12087 ; EG-NEXT:     MOV * T9.X, PV.W,
12088 ; EG-NEXT:     MOV T0.Y, PV.X,
12089 ; EG-NEXT:     ASHR * T0.W, T37.Z, literal.x,
12090 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
12091 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12092 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
12093 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
12094 ; EG-NEXT:    ALU clause starting at 121:
12095 ; EG-NEXT:     OR_INT * T37.Y, T1.W, T0.W,
12096 ; EG-NEXT:     MOV T9.X, PV.Y,
12097 ; EG-NEXT:     MOV T0.Y, T4.X,
12098 ; EG-NEXT:     BFE_INT * T0.W, T37.W, 0.0, literal.x,
12099 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12100 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12101 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
12102 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
12103 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
12104 ; EG-NEXT:     MOV * T4.X, PV.W,
12105 ; EG-NEXT:     MOV T0.Y, PV.X,
12106 ; EG-NEXT:     LSHR * T0.W, T37.W, literal.x,
12107 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12108 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12109 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12110 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
12111 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
12112 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12113 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12114 ; EG-NEXT:     MOV T4.X, PV.W,
12115 ; EG-NEXT:     MOV T0.Y, T5.X,
12116 ; EG-NEXT:     LSHR * T0.W, T37.W, literal.x,
12117 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12118 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12119 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12120 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
12121 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
12122 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
12123 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12124 ; EG-NEXT:     MOV * T5.X, PV.W,
12125 ; EG-NEXT:     MOV T0.Y, PV.X,
12126 ; EG-NEXT:     ASHR * T0.W, T37.W, literal.x,
12127 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
12128 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12129 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
12130 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
12131 ; EG-NEXT:     OR_INT * T37.W, PV.W, PS,
12132 ; EG-NEXT:     MOV T5.X, PV.W,
12133 ; EG-NEXT:     MOV T0.Y, T32.X,
12134 ; EG-NEXT:     BFE_INT * T0.W, T35.X, 0.0, literal.x, BS:VEC_120/SCL_212
12135 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12136 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12137 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
12138 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
12139 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
12140 ; EG-NEXT:     MOV * T32.X, PV.W,
12141 ; EG-NEXT:     MOV T0.Y, PV.X,
12142 ; EG-NEXT:     LSHR * T0.W, T35.X, literal.x,
12143 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12144 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12145 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12146 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
12147 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
12148 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12149 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12150 ; EG-NEXT:     MOV T32.X, PV.W,
12151 ; EG-NEXT:     MOV T0.Y, T33.X,
12152 ; EG-NEXT:     LSHR * T0.W, T35.X, literal.x, BS:VEC_120/SCL_212
12153 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12154 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12155 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12156 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
12157 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
12158 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
12159 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12160 ; EG-NEXT:     MOV * T33.X, PV.W,
12161 ; EG-NEXT:     MOV T0.Y, PV.X,
12162 ; EG-NEXT:     ASHR * T0.W, T35.X, literal.x,
12163 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
12164 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12165 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
12166 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
12167 ; EG-NEXT:     OR_INT * T38.Y, PV.W, PS,
12168 ; EG-NEXT:     MOV T33.X, PV.Y,
12169 ; EG-NEXT:     MOV T0.Y, T28.X,
12170 ; EG-NEXT:     BFE_INT * T0.W, T35.Y, 0.0, literal.x,
12171 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12172 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12173 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
12174 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
12175 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
12176 ; EG-NEXT:     MOV * T28.X, PV.W,
12177 ; EG-NEXT:     MOV T0.Y, PV.X,
12178 ; EG-NEXT:     LSHR * T0.W, T35.Y, literal.x,
12179 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12180 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12181 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12182 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
12183 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
12184 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12185 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12186 ; EG-NEXT:     MOV T28.X, PV.W,
12187 ; EG-NEXT:     MOV T0.Y, T29.X,
12188 ; EG-NEXT:     LSHR * T0.W, T35.Y, literal.x,
12189 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12190 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12191 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12192 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
12193 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
12194 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
12195 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12196 ; EG-NEXT:     MOV * T29.X, PV.W,
12197 ; EG-NEXT:     MOV T0.Y, PV.X,
12198 ; EG-NEXT:     ASHR * T0.W, T35.Y, literal.x,
12199 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
12200 ; EG-NEXT:    ALU clause starting at 226:
12201 ; EG-NEXT:     AND_INT T1.W, T0.Y, literal.x,
12202 ; EG-NEXT:     LSHL * T0.W, T0.W, literal.y,
12203 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
12204 ; EG-NEXT:     OR_INT * T38.W, PV.W, PS,
12205 ; EG-NEXT:     MOV T29.X, PV.W,
12206 ; EG-NEXT:     MOV T0.Y, T24.X,
12207 ; EG-NEXT:     BFE_INT * T0.W, T35.Z, 0.0, literal.x,
12208 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12209 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12210 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
12211 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
12212 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
12213 ; EG-NEXT:     MOV * T24.X, PV.W,
12214 ; EG-NEXT:     MOV T0.Y, PV.X,
12215 ; EG-NEXT:     LSHR * T0.W, T35.Z, literal.x,
12216 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12217 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12218 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12219 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
12220 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
12221 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12222 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12223 ; EG-NEXT:     MOV T24.X, PV.W,
12224 ; EG-NEXT:     MOV T0.Y, T25.X,
12225 ; EG-NEXT:     LSHR * T0.W, T35.Z, literal.x,
12226 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12227 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12228 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12229 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
12230 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
12231 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
12232 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12233 ; EG-NEXT:     MOV * T25.X, PV.W,
12234 ; EG-NEXT:     MOV T0.Y, PV.X,
12235 ; EG-NEXT:     ASHR * T0.W, T35.Z, literal.x,
12236 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
12237 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12238 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
12239 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
12240 ; EG-NEXT:     OR_INT * T35.Y, PV.W, PS,
12241 ; EG-NEXT:     MOV T25.X, PV.Y,
12242 ; EG-NEXT:     MOV T0.Y, T20.X,
12243 ; EG-NEXT:     BFE_INT * T0.W, T35.W, 0.0, literal.x,
12244 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12245 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
12246 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
12247 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
12248 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
12249 ; EG-NEXT:     MOV * T20.X, PV.W,
12250 ; EG-NEXT:     MOV T0.Y, PV.X,
12251 ; EG-NEXT:     LSHR * T0.W, T35.W, literal.x,
12252 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
12253 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12254 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12255 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
12256 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
12257 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12258 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12259 ; EG-NEXT:     MOV T20.X, PV.W,
12260 ; EG-NEXT:     MOV T0.Y, T21.X,
12261 ; EG-NEXT:     LSHR * T0.W, T35.W, literal.x,
12262 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12263 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
12264 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
12265 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
12266 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
12267 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
12268 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
12269 ; EG-NEXT:     MOV * T21.X, PV.W,
12270 ; EG-NEXT:     MOV T0.Y, PV.X,
12271 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
12272 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
12273 ; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
12274 ; EG-NEXT:     LSHR * T40.X, KC0[2].Y, literal.x,
12275 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
12276 ; EG-NEXT:     ASHR T0.W, T35.W, literal.x,
12277 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
12278 ; EG-NEXT:    24(3.363116e-44), 48(6.726233e-44)
12279 ; EG-NEXT:     LSHR T41.X, PS, literal.x,
12280 ; EG-NEXT:     AND_INT T0.Z, T0.Y, literal.y,
12281 ; EG-NEXT:     LSHL T0.W, PV.W, literal.z,
12282 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
12283 ; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
12284 ; EG-NEXT:    16(2.242078e-44), 32(4.484155e-44)
12285 ; EG-NEXT:     LSHR T42.X, PS, literal.x,
12286 ; EG-NEXT:     OR_INT * T35.W, PV.Z, PV.W,
12287 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
12288 ; EG-NEXT:     MOV T21.X, PV.W,
12289 ; EG-NEXT:     MOV * T36.X, T16.X,
12290 ; EG-NEXT:     MOV * T36.Z, T12.X,
12291 ; EG-NEXT:     MOV T37.X, T8.X,
12292 ; EG-NEXT:     MOV T37.Z, T4.X, BS:VEC_120/SCL_212
12293 ; EG-NEXT:     MOV * T38.X, T32.X,
12294 ; EG-NEXT:     MOV * T38.Z, T28.X,
12295 ; EG-NEXT:     MOV T35.X, T24.X,
12296 ; EG-NEXT:     MOV * T35.Z, T20.X, BS:VEC_120/SCL_212
12298 ; GFX12-LABEL: constant_sextload_v32i8_to_v32i16:
12299 ; GFX12:       ; %bb.0:
12300 ; GFX12-NEXT:    s_load_b128 s[8:11], s[2:3], 0x24
12301 ; GFX12-NEXT:    s_wait_kmcnt 0x0
12302 ; GFX12-NEXT:    s_load_b256 s[0:7], s[10:11], 0x0
12303 ; GFX12-NEXT:    s_wait_kmcnt 0x0
12304 ; GFX12-NEXT:    s_lshr_b32 s12, s4, 16
12305 ; GFX12-NEXT:    s_lshr_b32 s14, s2, 16
12306 ; GFX12-NEXT:    v_ashrrev_i16 v4, 8, s2
12307 ; GFX12-NEXT:    s_bfe_i32 s2, s2, 0x80000
12308 ; GFX12-NEXT:    s_bfe_i32 s20, s5, 0x80000
12309 ; GFX12-NEXT:    v_ashrrev_i16 v7, 8, s4
12310 ; GFX12-NEXT:    s_bfe_i32 s4, s4, 0x80000
12311 ; GFX12-NEXT:    s_lshr_b32 s17, s1, 16
12312 ; GFX12-NEXT:    s_lshr_b32 s15, s3, 16
12313 ; GFX12-NEXT:    s_lshr_b32 s16, s0, 16
12314 ; GFX12-NEXT:    v_ashrrev_i16 v0, 8, s1
12315 ; GFX12-NEXT:    s_bfe_i32 s18, s1, 0x80000
12316 ; GFX12-NEXT:    v_ashrrev_i16 v1, 8, s0
12317 ; GFX12-NEXT:    s_bfe_i32 s19, s0, 0x80000
12318 ; GFX12-NEXT:    v_ashrrev_i16 v5, 8, s5
12319 ; GFX12-NEXT:    s_ashr_i64 s[0:1], s[4:5], 56
12320 ; GFX12-NEXT:    v_and_b32_e64 v10, 0xffff, s2
12321 ; GFX12-NEXT:    v_and_b32_e64 v12, 0xffff, s20
12322 ; GFX12-NEXT:    s_bfe_i32 s1, s17, 0x80000
12323 ; GFX12-NEXT:    v_ashrrev_i16 v3, 8, s3
12324 ; GFX12-NEXT:    s_bfe_i32 s3, s3, 0x80000
12325 ; GFX12-NEXT:    s_bfe_i32 s2, s15, 0x80000
12326 ; GFX12-NEXT:    v_and_b32_e64 v14, 0xffff, s1
12327 ; GFX12-NEXT:    s_bfe_i32 s1, s12, 0x80000
12328 ; GFX12-NEXT:    v_and_b32_e64 v2, 0xffff, s18
12329 ; GFX12-NEXT:    v_and_b32_e64 v6, 0xffff, s19
12330 ; GFX12-NEXT:    v_and_b32_e64 v8, 0xffff, s3
12331 ; GFX12-NEXT:    v_ashrrev_i16 v11, 8, s15
12332 ; GFX12-NEXT:    v_and_b32_e64 v13, 0xffff, s4
12333 ; GFX12-NEXT:    v_and_b32_e64 v15, 0xffff, s2
12334 ; GFX12-NEXT:    v_lshl_or_b32 v4, v4, 16, v10
12335 ; GFX12-NEXT:    v_lshl_or_b32 v10, v5, 16, v12
12336 ; GFX12-NEXT:    v_and_b32_e64 v5, 0xffff, s1
12337 ; GFX12-NEXT:    s_bfe_i32 s1, s7, 0x80000
12338 ; GFX12-NEXT:    s_lshr_b32 s11, s7, 16
12339 ; GFX12-NEXT:    v_and_b32_e64 v12, 0xffff, s1
12340 ; GFX12-NEXT:    s_bfe_i32 s1, s6, 0x80000
12341 ; GFX12-NEXT:    s_lshr_b32 s10, s6, 16
12342 ; GFX12-NEXT:    v_lshl_or_b32 v2, v0, 16, v2
12343 ; GFX12-NEXT:    v_lshl_or_b32 v0, v1, 16, v6
12344 ; GFX12-NEXT:    v_lshl_or_b32 v6, v3, 16, v8
12345 ; GFX12-NEXT:    v_lshl_or_b32 v8, v7, 16, v13
12346 ; GFX12-NEXT:    v_lshl_or_b32 v7, v11, 16, v15
12347 ; GFX12-NEXT:    v_and_b32_e64 v15, 0xffff, s1
12348 ; GFX12-NEXT:    s_bfe_i32 s1, s11, 0x80000
12349 ; GFX12-NEXT:    s_lshr_b32 s13, s5, 16
12350 ; GFX12-NEXT:    v_and_b32_e64 v22, 0xffff, s1
12351 ; GFX12-NEXT:    s_bfe_i32 s1, s10, 0x80000
12352 ; GFX12-NEXT:    v_ashrrev_i16 v9, 8, s17
12353 ; GFX12-NEXT:    s_bfe_i32 s3, s14, 0x80000
12354 ; GFX12-NEXT:    v_ashrrev_i16 v11, 8, s7
12355 ; GFX12-NEXT:    v_ashrrev_i16 v13, 8, s6
12356 ; GFX12-NEXT:    v_ashrrev_i16 v21, 8, s11
12357 ; GFX12-NEXT:    v_ashrrev_i16 v23, 8, s10
12358 ; GFX12-NEXT:    v_and_b32_e64 v24, 0xffff, s1
12359 ; GFX12-NEXT:    s_bfe_i32 s5, s16, 0x80000
12360 ; GFX12-NEXT:    v_ashrrev_i16 v1, 8, s12
12361 ; GFX12-NEXT:    v_ashrrev_i16 v18, 8, s14
12362 ; GFX12-NEXT:    s_bfe_i32 s4, s13, 0x80000
12363 ; GFX12-NEXT:    v_and_b32_e64 v20, 0xffff, s3
12364 ; GFX12-NEXT:    v_ashrrev_i16 v17, 8, s16
12365 ; GFX12-NEXT:    v_and_b32_e64 v19, 0xffff, s5
12366 ; GFX12-NEXT:    s_pack_ll_b32_b16 s0, s4, s0
12367 ; GFX12-NEXT:    v_mov_b32_e32 v16, 0
12368 ; GFX12-NEXT:    v_lshl_or_b32 v3, v9, 16, v14
12369 ; GFX12-NEXT:    v_lshl_or_b32 v14, v11, 16, v12
12370 ; GFX12-NEXT:    v_mov_b32_e32 v11, s0
12371 ; GFX12-NEXT:    v_lshl_or_b32 v12, v13, 16, v15
12372 ; GFX12-NEXT:    v_lshl_or_b32 v15, v21, 16, v22
12373 ; GFX12-NEXT:    v_lshl_or_b32 v13, v23, 16, v24
12374 ; GFX12-NEXT:    v_lshl_or_b32 v9, v1, 16, v5
12375 ; GFX12-NEXT:    v_lshl_or_b32 v5, v18, 16, v20
12376 ; GFX12-NEXT:    v_lshl_or_b32 v1, v17, 16, v19
12377 ; GFX12-NEXT:    s_clause 0x3
12378 ; GFX12-NEXT:    global_store_b128 v16, v[12:15], s[8:9] offset:48
12379 ; GFX12-NEXT:    global_store_b128 v16, v[8:11], s[8:9] offset:32
12380 ; GFX12-NEXT:    global_store_b128 v16, v[4:7], s[8:9] offset:16
12381 ; GFX12-NEXT:    global_store_b128 v16, v[0:3], s[8:9]
12382 ; GFX12-NEXT:    s_nop 0
12383 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
12384 ; GFX12-NEXT:    s_endpgm
12385   %load = load <32 x i8>, ptr addrspace(4) %in
12386   %ext = sext <32 x i8> %load to <32 x i16>
12387   store <32 x i16> %ext, ptr addrspace(1) %out
12388   ret void
12391 ; XFUNC-LABEL: {{^}}constant_zextload_v64i8_to_v64i16:
12392 ; define amdgpu_kernel void @constant_zextload_v64i8_to_v64i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
12393 ;   %load = load <64 x i8>, ptr addrspace(4) %in
12394 ;   %ext = zext <64 x i8> %load to <64 x i16>
12395 ;   store <64 x i16> %ext, ptr addrspace(1) %out
12396 ;   ret void
12397 ; }
12399 ; XFUNC-LABEL: {{^}}constant_sextload_v64i8_to_v64i16:
12400 ; define amdgpu_kernel void @constant_sextload_v64i8_to_v64i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
12401 ;   %load = load <64 x i8>, ptr addrspace(4) %in
12402 ;   %ext = sext <64 x i8> %load to <64 x i16>
12403 ;   store <64 x i16> %ext, ptr addrspace(1) %out
12404 ;   ret void
12405 ; }
12407 attributes #0 = { nounwind }