[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / load-constant-i8.ll
blob66fc322e5e04b57ac536515e36e872b807dfd5e0
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 -march=r600 -mcpu=redwood -verify-machineinstrs < %s | FileCheck -check-prefix=EG %s
7 ; TODO: NOT AND
8 define amdgpu_kernel void @constant_load_i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9 ; GFX6-NOHSA-LABEL: constant_load_i8:
10 ; GFX6-NOHSA:       ; %bb.0: ; %entry
11 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
12 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
13 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
14 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
15 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
16 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
17 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
18 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
19 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
20 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
21 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
22 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
23 ; GFX6-NOHSA-NEXT:    buffer_store_byte v0, off, s[4:7], 0
24 ; GFX6-NOHSA-NEXT:    s_endpgm
26 ; GFX7-HSA-LABEL: constant_load_i8:
27 ; GFX7-HSA:       ; %bb.0: ; %entry
28 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
29 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
30 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
31 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
32 ; GFX7-HSA-NEXT:    flat_load_ubyte v2, v[0:1]
33 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
34 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
35 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
36 ; GFX7-HSA-NEXT:    flat_store_byte v[0:1], v2
37 ; GFX7-HSA-NEXT:    s_endpgm
39 ; GFX8-NOHSA-LABEL: constant_load_i8:
40 ; GFX8-NOHSA:       ; %bb.0: ; %entry
41 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
42 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
43 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
44 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
45 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
46 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
47 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
48 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
49 ; GFX8-NOHSA-NEXT:    flat_store_byte v[0:1], v2
50 ; GFX8-NOHSA-NEXT:    s_endpgm
52 ; EG-LABEL: constant_load_i8:
53 ; EG:       ; %bb.0: ; %entry
54 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
55 ; EG-NEXT:    TEX 0 @6
56 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
57 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
58 ; EG-NEXT:    CF_END
59 ; EG-NEXT:    PAD
60 ; EG-NEXT:    Fetch clause starting at 6:
61 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
62 ; EG-NEXT:    ALU clause starting at 8:
63 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
64 ; EG-NEXT:    ALU clause starting at 9:
65 ; EG-NEXT:     AND_INT T0.W, KC0[2].Y, literal.x,
66 ; EG-NEXT:     AND_INT * T1.W, T0.X, literal.y,
67 ; EG-NEXT:    3(4.203895e-45), 255(3.573311e-43)
68 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
69 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
70 ; EG-NEXT:     LSHL T0.X, T1.W, PV.W,
71 ; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
72 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
73 ; EG-NEXT:     MOV T0.Y, 0.0,
74 ; EG-NEXT:     MOV * T0.Z, 0.0,
75 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
76 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
77 entry:
78   %ld = load i8, ptr addrspace(4) %in
79   store i8 %ld, ptr addrspace(1) %out
80   ret void
83 define amdgpu_kernel void @constant_load_v2i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
84 ; GFX6-NOHSA-LABEL: constant_load_v2i8:
85 ; GFX6-NOHSA:       ; %bb.0: ; %entry
86 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
87 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
88 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
89 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
90 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
91 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
92 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
93 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
94 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
95 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
96 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
97 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
98 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[4:7], 0
99 ; GFX6-NOHSA-NEXT:    s_endpgm
101 ; GFX7-HSA-LABEL: constant_load_v2i8:
102 ; GFX7-HSA:       ; %bb.0: ; %entry
103 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
104 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
105 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
106 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
107 ; GFX7-HSA-NEXT:    flat_load_ushort v2, v[0:1]
108 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
109 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
110 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
111 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v2
112 ; GFX7-HSA-NEXT:    s_endpgm
114 ; GFX8-NOHSA-LABEL: constant_load_v2i8:
115 ; GFX8-NOHSA:       ; %bb.0: ; %entry
116 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
117 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
118 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
119 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
120 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
121 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
122 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
123 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
124 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v2
125 ; GFX8-NOHSA-NEXT:    s_endpgm
127 ; EG-LABEL: constant_load_v2i8:
128 ; EG:       ; %bb.0: ; %entry
129 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
130 ; EG-NEXT:    TEX 0 @6
131 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
132 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
133 ; EG-NEXT:    CF_END
134 ; EG-NEXT:    PAD
135 ; EG-NEXT:    Fetch clause starting at 6:
136 ; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
137 ; EG-NEXT:    ALU clause starting at 8:
138 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
139 ; EG-NEXT:    ALU clause starting at 9:
140 ; EG-NEXT:     AND_INT T0.W, KC0[2].Y, literal.x,
141 ; EG-NEXT:     AND_INT * T1.W, T0.X, literal.y,
142 ; EG-NEXT:    3(4.203895e-45), 65535(9.183409e-41)
143 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
144 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
145 ; EG-NEXT:     LSHL T0.X, T1.W, PV.W,
146 ; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
147 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
148 ; EG-NEXT:     MOV T0.Y, 0.0,
149 ; EG-NEXT:     MOV * T0.Z, 0.0,
150 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
151 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
152 entry:
153   %ld = load <2 x i8>, ptr addrspace(4) %in
154   store <2 x i8> %ld, ptr addrspace(1) %out
155   ret void
158 define amdgpu_kernel void @constant_load_v3i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
159 ; GFX6-NOHSA-LABEL: constant_load_v3i8:
160 ; GFX6-NOHSA:       ; %bb.0: ; %entry
161 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
162 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
163 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
164 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
165 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
166 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s5, s4, 16
167 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
168 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
169 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
170 ; GFX6-NOHSA-NEXT:    buffer_store_byte v1, off, s[0:3], 0 offset:2
171 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[0:3], 0
172 ; GFX6-NOHSA-NEXT:    s_endpgm
174 ; GFX7-HSA-LABEL: constant_load_v3i8:
175 ; GFX7-HSA:       ; %bb.0: ; %entry
176 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
177 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
178 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
179 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
180 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
181 ; GFX7-HSA-NEXT:    s_add_u32 s0, s0, 2
182 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s1, 0
183 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
184 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
185 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
186 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
187 ; GFX7-HSA-NEXT:    s_lshr_b32 s0, s2, 16
188 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v4
189 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
190 ; GFX7-HSA-NEXT:    flat_store_byte v[2:3], v0
191 ; GFX7-HSA-NEXT:    s_endpgm
193 ; GFX8-NOHSA-LABEL: constant_load_v3i8:
194 ; GFX8-NOHSA:       ; %bb.0: ; %entry
195 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
196 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
197 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
198 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
199 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
200 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s0, 2
201 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s1, 0
202 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s1
203 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s0
204 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
205 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
206 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s2, 16
207 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v4
208 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
209 ; GFX8-NOHSA-NEXT:    flat_store_byte v[2:3], v0
210 ; GFX8-NOHSA-NEXT:    s_endpgm
212 ; EG-LABEL: constant_load_v3i8:
213 ; EG:       ; %bb.0: ; %entry
214 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
215 ; EG-NEXT:    TEX 0 @6
216 ; EG-NEXT:    ALU 27, @9, KC0[CB0:0-32], KC1[]
217 ; EG-NEXT:    MEM_RAT MSKOR T6.XW, T8.X
218 ; EG-NEXT:    MEM_RAT MSKOR T5.XW, T7.X
219 ; EG-NEXT:    CF_END
220 ; EG-NEXT:    Fetch clause starting at 6:
221 ; EG-NEXT:     VTX_READ_32 T5.X, T5.X, 0, #1
222 ; EG-NEXT:    ALU clause starting at 8:
223 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
224 ; EG-NEXT:    ALU clause starting at 9:
225 ; EG-NEXT:     MOV * T2.X, T5.X,
226 ; EG-NEXT:     MOV T0.Y, PV.X,
227 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
228 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
229 ; EG-NEXT:     AND_INT T1.W, PV.W, literal.x,
230 ; EG-NEXT:     MOV * T2.W, literal.y,
231 ; EG-NEXT:    3(4.203895e-45), 8(1.121039e-44)
232 ; EG-NEXT:     BFE_UINT T2.W, T0.Y, literal.x, PS,
233 ; EG-NEXT:     LSHL * T1.W, PV.W, literal.y,
234 ; EG-NEXT:    16(2.242078e-44), 3(4.203895e-45)
235 ; EG-NEXT:     LSHL T6.X, PV.W, PS,
236 ; EG-NEXT:     LSHL * T6.W, literal.x, PS,
237 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
238 ; EG-NEXT:     MOV T6.Y, 0.0,
239 ; EG-NEXT:     AND_INT T1.W, KC0[2].Y, literal.x,
240 ; EG-NEXT:     AND_INT * T2.W, T5.X, literal.y,
241 ; EG-NEXT:    3(4.203895e-45), 65535(9.183409e-41)
242 ; EG-NEXT:     LSHL * T1.W, PV.W, literal.x,
243 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
244 ; EG-NEXT:     LSHL T5.X, T2.W, PV.W,
245 ; EG-NEXT:     LSHL * T5.W, literal.x, PV.W,
246 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
247 ; EG-NEXT:     MOV T5.Y, 0.0,
248 ; EG-NEXT:     MOV T6.Z, 0.0,
249 ; EG-NEXT:     MOV * T5.Z, 0.0,
250 ; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
251 ; EG-NEXT:     LSHR * T8.X, T0.W, literal.x,
252 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
253 entry:
254   %ld = load <3 x i8>, ptr addrspace(4) %in
255   store <3 x i8> %ld, ptr addrspace(1) %out
256   ret void
259 define amdgpu_kernel void @constant_load_v4i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
260 ; GFX6-NOHSA-LABEL: constant_load_v4i8:
261 ; GFX6-NOHSA:       ; %bb.0: ; %entry
262 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
263 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
264 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
265 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
266 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
267 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
268 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
269 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[0:3], 0
270 ; GFX6-NOHSA-NEXT:    s_endpgm
272 ; GFX7-HSA-LABEL: constant_load_v4i8:
273 ; GFX7-HSA:       ; %bb.0: ; %entry
274 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
275 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
276 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
277 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
278 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
279 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
280 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
281 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
282 ; GFX7-HSA-NEXT:    s_endpgm
284 ; GFX8-NOHSA-LABEL: constant_load_v4i8:
285 ; GFX8-NOHSA:       ; %bb.0: ; %entry
286 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
287 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
288 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
289 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
290 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
291 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
292 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s2
293 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
294 ; GFX8-NOHSA-NEXT:    s_endpgm
296 ; EG-LABEL: constant_load_v4i8:
297 ; EG:       ; %bb.0: ; %entry
298 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
299 ; EG-NEXT:    TEX 0 @6
300 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
301 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
302 ; EG-NEXT:    CF_END
303 ; EG-NEXT:    PAD
304 ; EG-NEXT:    Fetch clause starting at 6:
305 ; EG-NEXT:     VTX_READ_32 T0.X, T0.X, 0, #1
306 ; EG-NEXT:    ALU clause starting at 8:
307 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
308 ; EG-NEXT:    ALU clause starting at 9:
309 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
310 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
311 entry:
312   %ld = load <4 x i8>, ptr addrspace(4) %in
313   store <4 x i8> %ld, ptr addrspace(1) %out
314   ret void
317 define amdgpu_kernel void @constant_load_v8i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
318 ; GFX6-NOHSA-LABEL: constant_load_v8i8:
319 ; GFX6-NOHSA:       ; %bb.0: ; %entry
320 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
321 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
322 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
323 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
324 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
325 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
326 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
327 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
328 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
329 ; GFX6-NOHSA-NEXT:    s_endpgm
331 ; GFX7-HSA-LABEL: constant_load_v8i8:
332 ; GFX7-HSA:       ; %bb.0: ; %entry
333 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
334 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
335 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
336 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
337 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
338 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
339 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
340 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s3
341 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
342 ; GFX7-HSA-NEXT:    s_endpgm
344 ; GFX8-NOHSA-LABEL: constant_load_v8i8:
345 ; GFX8-NOHSA:       ; %bb.0: ; %entry
346 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
347 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
348 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
349 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
350 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
351 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
352 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s2
353 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s3
354 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
355 ; GFX8-NOHSA-NEXT:    s_endpgm
357 ; EG-LABEL: constant_load_v8i8:
358 ; EG:       ; %bb.0: ; %entry
359 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
360 ; EG-NEXT:    TEX 0 @6
361 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
362 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
363 ; EG-NEXT:    CF_END
364 ; EG-NEXT:    PAD
365 ; EG-NEXT:    Fetch clause starting at 6:
366 ; EG-NEXT:     VTX_READ_64 T0.XY, T0.X, 0, #1
367 ; EG-NEXT:    ALU clause starting at 8:
368 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
369 ; EG-NEXT:    ALU clause starting at 9:
370 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
371 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
372 entry:
373   %ld = load <8 x i8>, ptr addrspace(4) %in
374   store <8 x i8> %ld, ptr addrspace(1) %out
375   ret void
378 define amdgpu_kernel void @constant_load_v16i8(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
379 ; GFX6-NOHSA-LABEL: constant_load_v16i8:
380 ; GFX6-NOHSA:       ; %bb.0: ; %entry
381 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
382 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
383 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
384 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
385 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
386 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
387 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
388 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
389 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
390 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s7
391 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
392 ; GFX6-NOHSA-NEXT:    s_endpgm
394 ; GFX7-HSA-LABEL: constant_load_v16i8:
395 ; GFX7-HSA:       ; %bb.0: ; %entry
396 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
397 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
398 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
399 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
400 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
401 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
402 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
403 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s5
404 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
405 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s7
406 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
407 ; GFX7-HSA-NEXT:    s_endpgm
409 ; GFX8-NOHSA-LABEL: constant_load_v16i8:
410 ; GFX8-NOHSA:       ; %bb.0: ; %entry
411 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
412 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
413 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
414 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
415 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
416 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
417 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
418 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
419 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
420 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s7
421 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
422 ; GFX8-NOHSA-NEXT:    s_endpgm
424 ; EG-LABEL: constant_load_v16i8:
425 ; EG:       ; %bb.0: ; %entry
426 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
427 ; EG-NEXT:    TEX 0 @6
428 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
429 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
430 ; EG-NEXT:    CF_END
431 ; EG-NEXT:    PAD
432 ; EG-NEXT:    Fetch clause starting at 6:
433 ; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
434 ; EG-NEXT:    ALU clause starting at 8:
435 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
436 ; EG-NEXT:    ALU clause starting at 9:
437 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
438 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
439 entry:
440   %ld = load <16 x i8>, ptr addrspace(4) %in
441   store <16 x i8> %ld, ptr addrspace(1) %out
442   ret void
445 define amdgpu_kernel void @constant_zextload_i8_to_i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
446 ; GFX6-NOHSA-LABEL: constant_zextload_i8_to_i32:
447 ; GFX6-NOHSA:       ; %bb.0:
448 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
449 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
450 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
451 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
452 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
453 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
454 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
455 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
456 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
457 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
458 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
459 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
460 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
461 ; GFX6-NOHSA-NEXT:    s_endpgm
463 ; GFX7-HSA-LABEL: constant_zextload_i8_to_i32:
464 ; GFX7-HSA:       ; %bb.0:
465 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
466 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
467 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
468 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
469 ; GFX7-HSA-NEXT:    flat_load_ubyte v2, v[0:1]
470 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
471 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
472 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
473 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
474 ; GFX7-HSA-NEXT:    s_endpgm
476 ; GFX8-NOHSA-LABEL: constant_zextload_i8_to_i32:
477 ; GFX8-NOHSA:       ; %bb.0:
478 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
479 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
480 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
481 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
482 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
483 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
484 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
485 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
486 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
487 ; GFX8-NOHSA-NEXT:    s_endpgm
489 ; EG-LABEL: constant_zextload_i8_to_i32:
490 ; EG:       ; %bb.0:
491 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
492 ; EG-NEXT:    TEX 0 @6
493 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
494 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
495 ; EG-NEXT:    CF_END
496 ; EG-NEXT:    PAD
497 ; EG-NEXT:    Fetch clause starting at 6:
498 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
499 ; EG-NEXT:    ALU clause starting at 8:
500 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
501 ; EG-NEXT:    ALU clause starting at 9:
502 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
503 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
504   %a = load i8, ptr addrspace(4) %in
505   %ext = zext i8 %a to i32
506   store i32 %ext, ptr addrspace(1) %out
507   ret void
510 define amdgpu_kernel void @constant_sextload_i8_to_i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
511 ; GFX6-NOHSA-LABEL: constant_sextload_i8_to_i32:
512 ; GFX6-NOHSA:       ; %bb.0:
513 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
514 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
515 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
516 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
517 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
518 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
519 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
520 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
521 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
522 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
523 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
524 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
525 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
526 ; GFX6-NOHSA-NEXT:    s_endpgm
528 ; GFX7-HSA-LABEL: constant_sextload_i8_to_i32:
529 ; GFX7-HSA:       ; %bb.0:
530 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
531 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
532 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
533 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
534 ; GFX7-HSA-NEXT:    flat_load_sbyte v2, v[0:1]
535 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
536 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
537 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
538 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
539 ; GFX7-HSA-NEXT:    s_endpgm
541 ; GFX8-NOHSA-LABEL: constant_sextload_i8_to_i32:
542 ; GFX8-NOHSA:       ; %bb.0:
543 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
544 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
545 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
546 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
547 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
548 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
549 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
550 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
551 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
552 ; GFX8-NOHSA-NEXT:    s_endpgm
554 ; EG-LABEL: constant_sextload_i8_to_i32:
555 ; EG:       ; %bb.0:
556 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
557 ; EG-NEXT:    TEX 0 @6
558 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
559 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
560 ; EG-NEXT:    CF_END
561 ; EG-NEXT:    PAD
562 ; EG-NEXT:    Fetch clause starting at 6:
563 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
564 ; EG-NEXT:    ALU clause starting at 8:
565 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
566 ; EG-NEXT:    ALU clause starting at 9:
567 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
568 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
569 ; EG-NEXT:    8(1.121039e-44), 2(2.802597e-45)
570   %ld = load i8, ptr addrspace(4) %in
571   %ext = sext i8 %ld to i32
572   store i32 %ext, ptr addrspace(1) %out
573   ret void
576 define amdgpu_kernel void @constant_zextload_v1i8_to_v1i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
577 ; GFX6-NOHSA-LABEL: constant_zextload_v1i8_to_v1i32:
578 ; GFX6-NOHSA:       ; %bb.0:
579 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
580 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
581 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
582 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
583 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
584 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
585 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
586 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
587 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
588 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
589 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
590 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
591 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
592 ; GFX6-NOHSA-NEXT:    s_endpgm
594 ; GFX7-HSA-LABEL: constant_zextload_v1i8_to_v1i32:
595 ; GFX7-HSA:       ; %bb.0:
596 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
597 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
598 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
599 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
600 ; GFX7-HSA-NEXT:    flat_load_ubyte v2, v[0:1]
601 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
602 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
603 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
604 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
605 ; GFX7-HSA-NEXT:    s_endpgm
607 ; GFX8-NOHSA-LABEL: constant_zextload_v1i8_to_v1i32:
608 ; GFX8-NOHSA:       ; %bb.0:
609 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
610 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
611 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
612 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
613 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
614 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
615 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
616 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
617 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
618 ; GFX8-NOHSA-NEXT:    s_endpgm
620 ; EG-LABEL: constant_zextload_v1i8_to_v1i32:
621 ; EG:       ; %bb.0:
622 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
623 ; EG-NEXT:    TEX 0 @6
624 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
625 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
626 ; EG-NEXT:    CF_END
627 ; EG-NEXT:    PAD
628 ; EG-NEXT:    Fetch clause starting at 6:
629 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
630 ; EG-NEXT:    ALU clause starting at 8:
631 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
632 ; EG-NEXT:    ALU clause starting at 9:
633 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
634 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
635   %load = load <1 x i8>, ptr addrspace(4) %in
636   %ext = zext <1 x i8> %load to <1 x i32>
637   store <1 x i32> %ext, ptr addrspace(1) %out
638   ret void
641 define amdgpu_kernel void @constant_sextload_v1i8_to_v1i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
642 ; GFX6-NOHSA-LABEL: constant_sextload_v1i8_to_v1i32:
643 ; GFX6-NOHSA:       ; %bb.0:
644 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
645 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
646 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
647 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
648 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
649 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
650 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
651 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
652 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
653 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
654 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
655 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
656 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
657 ; GFX6-NOHSA-NEXT:    s_endpgm
659 ; GFX7-HSA-LABEL: constant_sextload_v1i8_to_v1i32:
660 ; GFX7-HSA:       ; %bb.0:
661 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
662 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
663 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
664 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
665 ; GFX7-HSA-NEXT:    flat_load_sbyte v2, v[0:1]
666 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
667 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
668 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
669 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
670 ; GFX7-HSA-NEXT:    s_endpgm
672 ; GFX8-NOHSA-LABEL: constant_sextload_v1i8_to_v1i32:
673 ; GFX8-NOHSA:       ; %bb.0:
674 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
675 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
676 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
677 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
678 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
679 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
680 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
681 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
682 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
683 ; GFX8-NOHSA-NEXT:    s_endpgm
685 ; EG-LABEL: constant_sextload_v1i8_to_v1i32:
686 ; EG:       ; %bb.0:
687 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
688 ; EG-NEXT:    TEX 0 @6
689 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
690 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
691 ; EG-NEXT:    CF_END
692 ; EG-NEXT:    PAD
693 ; EG-NEXT:    Fetch clause starting at 6:
694 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
695 ; EG-NEXT:    ALU clause starting at 8:
696 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
697 ; EG-NEXT:    ALU clause starting at 9:
698 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
699 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
700 ; EG-NEXT:    8(1.121039e-44), 2(2.802597e-45)
701   %load = load <1 x i8>, ptr addrspace(4) %in
702   %ext = sext <1 x i8> %load to <1 x i32>
703   store <1 x i32> %ext, ptr addrspace(1) %out
704   ret void
707 ; TODO: This should use DST, but for some there are redundant MOVs
708 define amdgpu_kernel void @constant_zextload_v2i8_to_v2i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
709 ; GFX6-NOHSA-LABEL: constant_zextload_v2i8_to_v2i32:
710 ; GFX6-NOHSA:       ; %bb.0:
711 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
712 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
713 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
714 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
715 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
716 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
717 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
718 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
719 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
720 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
721 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
722 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
723 ; GFX6-NOHSA-NEXT:    v_lshrrev_b32_e32 v1, 8, v0
724 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v0, 0xff, v0
725 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
726 ; GFX6-NOHSA-NEXT:    s_endpgm
728 ; GFX7-HSA-LABEL: constant_zextload_v2i8_to_v2i32:
729 ; GFX7-HSA:       ; %bb.0:
730 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
731 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
732 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
733 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
734 ; GFX7-HSA-NEXT:    flat_load_ushort v2, v[0:1]
735 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
736 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
737 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
738 ; GFX7-HSA-NEXT:    v_lshrrev_b32_e32 v3, 8, v2
739 ; GFX7-HSA-NEXT:    v_and_b32_e32 v2, 0xff, v2
740 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
741 ; GFX7-HSA-NEXT:    s_endpgm
743 ; GFX8-NOHSA-LABEL: constant_zextload_v2i8_to_v2i32:
744 ; GFX8-NOHSA:       ; %bb.0:
745 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
746 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
747 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
748 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
749 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
750 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
751 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
752 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
753 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e32 v3, 8, v2
754 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v2, 0xff, v2
755 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
756 ; GFX8-NOHSA-NEXT:    s_endpgm
758 ; EG-LABEL: constant_zextload_v2i8_to_v2i32:
759 ; EG:       ; %bb.0:
760 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
761 ; EG-NEXT:    TEX 0 @6
762 ; EG-NEXT:    ALU 12, @10, KC0[CB0:0-32], KC1[]
763 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XY, T5.X, 1
764 ; EG-NEXT:    CF_END
765 ; EG-NEXT:    PAD
766 ; EG-NEXT:    Fetch clause starting at 6:
767 ; EG-NEXT:     VTX_READ_16 T4.X, T4.X, 0, #1
768 ; EG-NEXT:    ALU clause starting at 8:
769 ; EG-NEXT:     MOV * T0.Y, T2.X,
770 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
771 ; EG-NEXT:    ALU clause starting at 10:
772 ; EG-NEXT:     AND_INT T0.W, T4.X, literal.x,
773 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
774 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
775 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
776 ; EG-NEXT:     MOV * T2.X, PV.W,
777 ; EG-NEXT:     MOV T0.Y, PV.X,
778 ; EG-NEXT:     MOV * T1.W, literal.x,
779 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
780 ; EG-NEXT:     BFE_UINT * T4.Y, PV.Y, literal.x, PV.W,
781 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
782 ; EG-NEXT:     AND_INT T4.X, T0.W, literal.x,
783 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
784 ; EG-NEXT:    255(3.573311e-43), 2(2.802597e-45)
785   %load = load <2 x i8>, ptr addrspace(4) %in
786   %ext = zext <2 x i8> %load to <2 x i32>
787   store <2 x i32> %ext, ptr addrspace(1) %out
788   ret void
791 ; TODO: These should use DST, but for some there are redundant MOVs
792 define amdgpu_kernel void @constant_sextload_v2i8_to_v2i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
793 ; GFX6-NOHSA-LABEL: constant_sextload_v2i8_to_v2i32:
794 ; GFX6-NOHSA:       ; %bb.0:
795 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
796 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
797 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
798 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
799 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
800 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
801 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
802 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
803 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
804 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
805 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
806 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
807 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v1, v0, 8, 8
808 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v0, v0, 0, 8
809 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
810 ; GFX6-NOHSA-NEXT:    s_endpgm
812 ; GFX7-HSA-LABEL: constant_sextload_v2i8_to_v2i32:
813 ; GFX7-HSA:       ; %bb.0:
814 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
815 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
816 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
817 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
818 ; GFX7-HSA-NEXT:    flat_load_ushort v2, v[0:1]
819 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
820 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
821 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
822 ; GFX7-HSA-NEXT:    v_bfe_i32 v3, v2, 8, 8
823 ; GFX7-HSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
824 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
825 ; GFX7-HSA-NEXT:    s_endpgm
827 ; GFX8-NOHSA-LABEL: constant_sextload_v2i8_to_v2i32:
828 ; GFX8-NOHSA:       ; %bb.0:
829 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
830 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
831 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
832 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
833 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
834 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
835 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
836 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
837 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e32 v3, 8, v2
838 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
839 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v3, v3, 0, 8
840 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
841 ; GFX8-NOHSA-NEXT:    s_endpgm
843 ; EG-LABEL: constant_sextload_v2i8_to_v2i32:
844 ; EG:       ; %bb.0:
845 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
846 ; EG-NEXT:    TEX 0 @6
847 ; EG-NEXT:    ALU 11, @10, KC0[CB0:0-32], KC1[]
848 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XY, T5.X, 1
849 ; EG-NEXT:    CF_END
850 ; EG-NEXT:    PAD
851 ; EG-NEXT:    Fetch clause starting at 6:
852 ; EG-NEXT:     VTX_READ_16 T4.X, T4.X, 0, #1
853 ; EG-NEXT:    ALU clause starting at 8:
854 ; EG-NEXT:     MOV * T0.Y, T2.X,
855 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
856 ; EG-NEXT:    ALU clause starting at 10:
857 ; EG-NEXT:     AND_INT T0.W, T4.X, literal.x,
858 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
859 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
860 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
861 ; EG-NEXT:     MOV * T2.X, PV.W,
862 ; EG-NEXT:     MOV * T0.Y, PV.X,
863 ; EG-NEXT:     BFE_INT T4.X, T0.W, 0.0, literal.x,
864 ; EG-NEXT:     LSHR T0.W, PV.Y, literal.x,
865 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
866 ; EG-NEXT:    8(1.121039e-44), 2(2.802597e-45)
867 ; EG-NEXT:     BFE_INT * T4.Y, PV.W, 0.0, literal.x,
868 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
869   %load = load <2 x i8>, ptr addrspace(4) %in
870   %ext = sext <2 x i8> %load to <2 x i32>
871   store <2 x i32> %ext, ptr addrspace(1) %out
872   ret void
875 ; TODO: These should use DST, but for some there are redundant MOVs
876 define amdgpu_kernel void @constant_zextload_v3i8_to_v3i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
877 ; GFX6-NOHSA-LABEL: constant_zextload_v3i8_to_v3i32:
878 ; GFX6-NOHSA:       ; %bb.0: ; %entry
879 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
880 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
881 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
882 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
883 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
884 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
885 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s4, 0x80008
886 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s4, 0x80010
887 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
888 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
889 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:8
890 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
891 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
892 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
893 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
894 ; GFX6-NOHSA-NEXT:    s_endpgm
896 ; GFX7-HSA-LABEL: constant_zextload_v3i8_to_v3i32:
897 ; GFX7-HSA:       ; %bb.0: ; %entry
898 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
899 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
900 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
901 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
902 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s1
903 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
904 ; GFX7-HSA-NEXT:    s_bfe_u32 s0, s2, 0x80008
905 ; GFX7-HSA-NEXT:    s_and_b32 s1, s2, 0xff
906 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
907 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s1
908 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s0
909 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
910 ; GFX7-HSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
911 ; GFX7-HSA-NEXT:    s_endpgm
913 ; GFX8-NOHSA-LABEL: constant_zextload_v3i8_to_v3i32:
914 ; GFX8-NOHSA:       ; %bb.0: ; %entry
915 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
916 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
917 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
918 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
919 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s1
920 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
921 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s2, 0xff
922 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s2, 0x80010
923 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s2
924 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
925 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s1
926 ; GFX8-NOHSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
927 ; GFX8-NOHSA-NEXT:    s_endpgm
929 ; EG-LABEL: constant_zextload_v3i8_to_v3i32:
930 ; EG:       ; %bb.0: ; %entry
931 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
932 ; EG-NEXT:    TEX 0 @6
933 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
934 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.X, T7.X, 0
935 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XY, T6.X, 1
936 ; EG-NEXT:    CF_END
937 ; EG-NEXT:    Fetch clause starting at 6:
938 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
939 ; EG-NEXT:    ALU clause starting at 8:
940 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
941 ; EG-NEXT:    ALU clause starting at 9:
942 ; EG-NEXT:     MOV * T0.W, literal.x,
943 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
944 ; EG-NEXT:     BFE_UINT * T5.Y, T4.X, literal.x, PV.W,
945 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
946 ; EG-NEXT:     AND_INT T5.X, T4.X, literal.x,
947 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.y,
948 ; EG-NEXT:    255(3.573311e-43), 2(2.802597e-45)
949 ; EG-NEXT:     BFE_UINT T4.X, T4.X, literal.x, T0.W,
950 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
951 ; EG-NEXT:    16(2.242078e-44), 8(1.121039e-44)
952 ; EG-NEXT:     LSHR * T7.X, PV.W, literal.x,
953 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
954 entry:
955   %ld = load <3 x i8>, ptr addrspace(4) %in
956   %ext = zext <3 x i8> %ld to <3 x i32>
957   store <3 x i32> %ext, ptr addrspace(1) %out
958   ret void
961 ; TODO: These should use DST, but for some there are redundant MOVs
962 define amdgpu_kernel void @constant_sextload_v3i8_to_v3i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
963 ; GFX6-NOHSA-LABEL: constant_sextload_v3i8_to_v3i32:
964 ; GFX6-NOHSA:       ; %bb.0: ; %entry
965 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
966 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
967 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
968 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
969 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
970 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
971 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s5, s4, 0x80008
972 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s6, s4, 0x80010
973 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
974 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
975 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:8
976 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
977 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
978 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
979 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
980 ; GFX6-NOHSA-NEXT:    s_endpgm
982 ; GFX7-HSA-LABEL: constant_sextload_v3i8_to_v3i32:
983 ; GFX7-HSA:       ; %bb.0: ; %entry
984 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
985 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
986 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
987 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
988 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s1
989 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
990 ; GFX7-HSA-NEXT:    s_bfe_i32 s0, s2, 0x80010
991 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s2, 0x80008
992 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s2, s2
993 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
994 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
995 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
996 ; GFX7-HSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
997 ; GFX7-HSA-NEXT:    s_endpgm
999 ; GFX8-NOHSA-LABEL: constant_sextload_v3i8_to_v3i32:
1000 ; GFX8-NOHSA:       ; %bb.0: ; %entry
1001 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1002 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1003 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1004 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
1005 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s1
1006 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1007 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s2
1008 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s2, 0x80010
1009 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s1, s2
1010 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v0, 0, 8
1011 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s1
1012 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s0
1013 ; GFX8-NOHSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1014 ; GFX8-NOHSA-NEXT:    s_endpgm
1016 ; EG-LABEL: constant_sextload_v3i8_to_v3i32:
1017 ; EG:       ; %bb.0: ; %entry
1018 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1019 ; EG-NEXT:    TEX 0 @6
1020 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
1021 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.X, T4.X, 0
1022 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XY, T5.X, 1
1023 ; EG-NEXT:    CF_END
1024 ; EG-NEXT:    Fetch clause starting at 6:
1025 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1026 ; EG-NEXT:    ALU clause starting at 8:
1027 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1028 ; EG-NEXT:    ALU clause starting at 9:
1029 ; EG-NEXT:     LSHR T5.X, KC0[2].Y, literal.x,
1030 ; EG-NEXT:     LSHR * T0.W, T4.X, literal.y,
1031 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1032 ; EG-NEXT:     BFE_INT * T6.X, PV.W, 0.0, literal.x,
1033 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1034 ; EG-NEXT:     BFE_INT T7.X, T4.X, 0.0, literal.x,
1035 ; EG-NEXT:     LSHR T0.W, T4.X, literal.x,
1036 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.x,
1037 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1038 ; EG-NEXT:     LSHR T4.X, PS, literal.x,
1039 ; EG-NEXT:     BFE_INT * T7.Y, PV.W, 0.0, literal.y,
1040 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1041 entry:
1042   %ld = load <3 x i8>, ptr addrspace(4) %in
1043   %ext = sext <3 x i8> %ld to <3 x i32>
1044   store <3 x i32> %ext, ptr addrspace(1) %out
1045   ret void
1048 ; TODO: These should use DST, but for some there are redundant MOVs
1049 define amdgpu_kernel void @constant_zextload_v4i8_to_v4i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1050 ; GFX6-NOHSA-LABEL: constant_zextload_v4i8_to_v4i32:
1051 ; GFX6-NOHSA:       ; %bb.0:
1052 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1053 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1054 ; GFX6-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1055 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1056 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1057 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s4, s2, 24
1058 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s2, 0x80008
1059 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s2, 0xff
1060 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s2, 0x80010
1061 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1062 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
1063 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
1064 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
1065 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s4
1066 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1067 ; GFX6-NOHSA-NEXT:    s_endpgm
1069 ; GFX7-HSA-LABEL: constant_zextload_v4i8_to_v4i32:
1070 ; GFX7-HSA:       ; %bb.0:
1071 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1072 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1073 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1074 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1075 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1076 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1077 ; GFX7-HSA-NEXT:    s_lshr_b32 s0, s2, 24
1078 ; GFX7-HSA-NEXT:    s_bfe_u32 s1, s2, 0x80008
1079 ; GFX7-HSA-NEXT:    s_and_b32 s3, s2, 0xff
1080 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
1081 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
1082 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
1083 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
1084 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
1085 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1086 ; GFX7-HSA-NEXT:    s_endpgm
1088 ; GFX8-NOHSA-LABEL: constant_zextload_v4i8_to_v4i32:
1089 ; GFX8-NOHSA:       ; %bb.0:
1090 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1091 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1092 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1093 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1094 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1095 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1096 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s2, 24
1097 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s2, 0xff
1098 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s2
1099 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
1100 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s1
1101 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s2
1102 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
1103 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1104 ; GFX8-NOHSA-NEXT:    s_endpgm
1106 ; EG-LABEL: constant_zextload_v4i8_to_v4i32:
1107 ; EG:       ; %bb.0:
1108 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1109 ; EG-NEXT:    TEX 0 @6
1110 ; EG-NEXT:    ALU 9, @9, KC0[CB0:0-32], KC1[]
1111 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
1112 ; EG-NEXT:    CF_END
1113 ; EG-NEXT:    PAD
1114 ; EG-NEXT:    Fetch clause starting at 6:
1115 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1116 ; EG-NEXT:    ALU clause starting at 8:
1117 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1118 ; EG-NEXT:    ALU clause starting at 9:
1119 ; EG-NEXT:     MOV * T0.W, literal.x,
1120 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1121 ; EG-NEXT:     BFE_UINT * T4.Z, T4.X, literal.x, PV.W,
1122 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1123 ; EG-NEXT:     BFE_UINT T4.Y, T4.X, literal.x, T0.W,
1124 ; EG-NEXT:     LSHR * T4.W, T4.X, literal.y,
1125 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
1126 ; EG-NEXT:     AND_INT T4.X, T4.X, literal.x,
1127 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
1128 ; EG-NEXT:    255(3.573311e-43), 2(2.802597e-45)
1129   %load = load <4 x i8>, ptr addrspace(4) %in
1130   %ext = zext <4 x i8> %load to <4 x i32>
1131   store <4 x i32> %ext, ptr addrspace(1) %out
1132   ret void
1135 ; TODO: These should use DST, but for some there are redundant MOVs
1136 define amdgpu_kernel void @constant_sextload_v4i8_to_v4i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1137 ; GFX6-NOHSA-LABEL: constant_sextload_v4i8_to_v4i32:
1138 ; GFX6-NOHSA:       ; %bb.0:
1139 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1140 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1141 ; GFX6-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1142 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1143 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1144 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s4, s2, 24
1145 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s5, s2, 0x80010
1146 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s6, s2, 0x80008
1147 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s2
1148 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1149 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
1150 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s6
1151 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
1152 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s4
1153 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1154 ; GFX6-NOHSA-NEXT:    s_endpgm
1156 ; GFX7-HSA-LABEL: constant_sextload_v4i8_to_v4i32:
1157 ; GFX7-HSA:       ; %bb.0:
1158 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1159 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1160 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1161 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1162 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1163 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1164 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s2, 24
1165 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s2, 0x80010
1166 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, 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, s3
1170 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s1
1171 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
1172 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1173 ; GFX7-HSA-NEXT:    s_endpgm
1175 ; GFX8-NOHSA-LABEL: constant_sextload_v4i8_to_v4i32:
1176 ; GFX8-NOHSA:       ; %bb.0:
1177 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1178 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1179 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
1180 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1181 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1182 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1183 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s2
1184 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s0, s2, 24
1185 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s2, 0x80010
1186 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
1187 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v0, 0, 8
1188 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
1189 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s1
1190 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
1191 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1192 ; GFX8-NOHSA-NEXT:    s_endpgm
1194 ; EG-LABEL: constant_sextload_v4i8_to_v4i32:
1195 ; EG:       ; %bb.0:
1196 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1197 ; EG-NEXT:    TEX 0 @6
1198 ; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
1199 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T4.X, 1
1200 ; EG-NEXT:    CF_END
1201 ; EG-NEXT:    PAD
1202 ; EG-NEXT:    Fetch clause starting at 6:
1203 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1204 ; EG-NEXT:    ALU clause starting at 8:
1205 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1206 ; EG-NEXT:    ALU clause starting at 9:
1207 ; EG-NEXT:     BFE_INT T5.X, T4.X, 0.0, literal.x,
1208 ; EG-NEXT:     LSHR * T0.W, T4.X, literal.y,
1209 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
1210 ; EG-NEXT:     BFE_INT T5.W, PV.W, 0.0, literal.x,
1211 ; EG-NEXT:     LSHR * T0.W, T4.X, literal.y,
1212 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
1213 ; EG-NEXT:     BFE_INT T5.Z, PS, 0.0, literal.x,
1214 ; EG-NEXT:     LSHR * T0.W, T4.X, literal.x,
1215 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1216 ; EG-NEXT:     LSHR T4.X, KC0[2].Y, literal.x,
1217 ; EG-NEXT:     BFE_INT * T5.Y, PV.W, 0.0, literal.y,
1218 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1219   %load = load <4 x i8>, ptr addrspace(4) %in
1220   %ext = sext <4 x i8> %load to <4 x i32>
1221   store <4 x i32> %ext, ptr addrspace(1) %out
1222   ret void
1225 ; TODO: These should use DST, but for some there are redundant MOVs
1226 define amdgpu_kernel void @constant_zextload_v8i8_to_v8i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1227 ; GFX6-NOHSA-LABEL: constant_zextload_v8i8_to_v8i32:
1228 ; GFX6-NOHSA:       ; %bb.0:
1229 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1230 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1231 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1232 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1233 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1234 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1235 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s4, 24
1236 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s4, 0x80008
1237 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s5, 24
1238 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s9, s5, 0x80008
1239 ; GFX6-NOHSA-NEXT:    s_and_b32 s10, s4, 0xff
1240 ; GFX6-NOHSA-NEXT:    s_and_b32 s11, s5, 0xff
1241 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
1242 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
1243 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
1244 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
1245 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
1246 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
1247 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1248 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1249 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
1250 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s7
1251 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
1252 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s6
1253 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1254 ; GFX6-NOHSA-NEXT:    s_endpgm
1256 ; GFX7-HSA-LABEL: constant_zextload_v8i8_to_v8i32:
1257 ; GFX7-HSA:       ; %bb.0:
1258 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1259 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1260 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1261 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1262 ; GFX7-HSA-NEXT:    s_lshr_b32 s4, s2, 24
1263 ; GFX7-HSA-NEXT:    s_bfe_u32 s5, s2, 0x80008
1264 ; GFX7-HSA-NEXT:    s_lshr_b32 s6, s3, 24
1265 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s3, 0x80008
1266 ; GFX7-HSA-NEXT:    s_and_b32 s8, s2, 0xff
1267 ; GFX7-HSA-NEXT:    s_bfe_u32 s9, s2, 0x80010
1268 ; GFX7-HSA-NEXT:    s_and_b32 s2, s3, 0xff
1269 ; GFX7-HSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
1270 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
1271 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
1272 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
1273 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1274 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1275 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s7
1276 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s6
1277 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1278 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1279 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1280 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
1281 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s5
1282 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s9
1283 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s4
1284 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1285 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1286 ; GFX7-HSA-NEXT:    s_endpgm
1288 ; GFX8-NOHSA-LABEL: constant_zextload_v8i8_to_v8i32:
1289 ; GFX8-NOHSA:       ; %bb.0:
1290 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1291 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1292 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1293 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s1
1294 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s0
1295 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1296 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s4, s3, 24
1297 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s5, s2, 24
1298 ; GFX8-NOHSA-NEXT:    s_and_b32 s6, s3, 0xff
1299 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s3
1300 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
1301 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s2
1302 ; GFX8-NOHSA-NEXT:    s_and_b32 s7, s2, 0xff
1303 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
1304 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s0, 16
1305 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
1306 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
1307 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s5
1308 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s1, 0
1309 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
1310 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
1311 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1312 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s3
1313 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s4
1314 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1315 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1316 ; GFX8-NOHSA-NEXT:    s_endpgm
1318 ; EG-LABEL: constant_zextload_v8i8_to_v8i32:
1319 ; EG:       ; %bb.0:
1320 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1321 ; EG-NEXT:    TEX 0 @6
1322 ; EG-NEXT:    ALU 20, @9, KC0[CB0:0-32], KC1[]
1323 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T8.X, 0
1324 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T5.X, 1
1325 ; EG-NEXT:    CF_END
1326 ; EG-NEXT:    Fetch clause starting at 6:
1327 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1328 ; EG-NEXT:    ALU clause starting at 8:
1329 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
1330 ; EG-NEXT:    ALU clause starting at 9:
1331 ; EG-NEXT:     MOV * T0.W, literal.x,
1332 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1333 ; EG-NEXT:     BFE_UINT * T6.Z, T5.X, literal.x, PV.W,
1334 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1335 ; EG-NEXT:     BFE_UINT T6.Y, T5.X, literal.x, T0.W,
1336 ; EG-NEXT:     BFE_UINT T7.Z, T5.Y, literal.y, T0.W,
1337 ; EG-NEXT:     LSHR * T6.W, T5.X, literal.z,
1338 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
1339 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
1340 ; EG-NEXT:     AND_INT T6.X, T5.X, literal.x,
1341 ; EG-NEXT:     BFE_UINT T7.Y, T5.Y, literal.y, T0.W,
1342 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.z,
1343 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
1344 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1345 ; EG-NEXT:     LSHR * T7.W, T5.Y, literal.x,
1346 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
1347 ; EG-NEXT:     AND_INT T7.X, T5.Y, literal.x,
1348 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1349 ; EG-NEXT:    255(3.573311e-43), 16(2.242078e-44)
1350 ; EG-NEXT:     LSHR * T8.X, PV.W, literal.x,
1351 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1352   %load = load <8 x i8>, ptr addrspace(4) %in
1353   %ext = zext <8 x i8> %load to <8 x i32>
1354   store <8 x i32> %ext, ptr addrspace(1) %out
1355   ret void
1358 ; TODO: These should use DST, but for some there are redundant MOVs
1359 define amdgpu_kernel void @constant_sextload_v8i8_to_v8i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1360 ; GFX6-NOHSA-LABEL: constant_sextload_v8i8_to_v8i32:
1361 ; GFX6-NOHSA:       ; %bb.0:
1362 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1363 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1364 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1365 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1366 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1367 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1368 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s6, s4, 24
1369 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s7, s4, 0x80010
1370 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s8, s4, 0x80008
1371 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s9, s5, 24
1372 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s10, s5, 0x80010
1373 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s11, s5, 0x80008
1374 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
1375 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
1376 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
1377 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
1378 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
1379 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s9
1380 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1381 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1382 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
1383 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s8
1384 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
1385 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s6
1386 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1387 ; GFX6-NOHSA-NEXT:    s_endpgm
1389 ; GFX7-HSA-LABEL: constant_sextload_v8i8_to_v8i32:
1390 ; GFX7-HSA:       ; %bb.0:
1391 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1392 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1393 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1394 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1395 ; GFX7-HSA-NEXT:    s_ashr_i32 s4, s2, 24
1396 ; GFX7-HSA-NEXT:    s_bfe_i32 s5, s2, 0x80010
1397 ; GFX7-HSA-NEXT:    s_bfe_i32 s6, s2, 0x80008
1398 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s2
1399 ; GFX7-HSA-NEXT:    s_ashr_i32 s2, s3, 24
1400 ; GFX7-HSA-NEXT:    s_bfe_i32 s8, s3, 0x80010
1401 ; GFX7-HSA-NEXT:    s_bfe_i32 s9, s3, 0x80008
1402 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s3, s3
1403 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
1404 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
1405 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
1406 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1407 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1408 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s9
1409 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s8
1410 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1411 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1412 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1413 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
1414 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s6
1415 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
1416 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s4
1417 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1418 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1419 ; GFX7-HSA-NEXT:    s_endpgm
1421 ; GFX8-NOHSA-LABEL: constant_sextload_v8i8_to_v8i32:
1422 ; GFX8-NOHSA:       ; %bb.0:
1423 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1424 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1425 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1426 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s1
1427 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s0
1428 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1429 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s4, s3, 24
1430 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s5, s3, 0x80010
1431 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s6, s2, 24
1432 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s7, s2, 0x80010
1433 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s2
1434 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
1435 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s0, 16
1436 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v3, v0, 0, 8
1437 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s2
1438 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s7
1439 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s6
1440 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s1, 0
1441 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s3
1442 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s3, s3
1443 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
1444 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v1, 0, 8
1445 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1446 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s3
1447 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
1448 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s4
1449 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1450 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1451 ; GFX8-NOHSA-NEXT:    s_endpgm
1453 ; EG-LABEL: constant_sextload_v8i8_to_v8i32:
1454 ; EG:       ; %bb.0:
1455 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1456 ; EG-NEXT:    TEX 0 @6
1457 ; EG-NEXT:    ALU 23, @9, KC0[CB0:0-32], KC1[]
1458 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T8.X, 0
1459 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T5.X, 1
1460 ; EG-NEXT:    CF_END
1461 ; EG-NEXT:    Fetch clause starting at 6:
1462 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1463 ; EG-NEXT:    ALU clause starting at 8:
1464 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
1465 ; EG-NEXT:    ALU clause starting at 9:
1466 ; EG-NEXT:     BFE_INT T6.X, T5.X, 0.0, literal.x,
1467 ; EG-NEXT:     LSHR * T0.W, T5.X, literal.y,
1468 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
1469 ; EG-NEXT:     BFE_INT T7.X, T5.Y, 0.0, literal.x,
1470 ; EG-NEXT:     LSHR T0.Z, T5.Y, literal.y,
1471 ; EG-NEXT:     BFE_INT T6.W, PV.W, 0.0, literal.x,
1472 ; EG-NEXT:     LSHR * T0.W, T5.X, literal.z,
1473 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
1474 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1475 ; EG-NEXT:     LSHR T0.Y, T5.Y, literal.x,
1476 ; EG-NEXT:     BFE_INT T6.Z, PS, 0.0, literal.y,
1477 ; EG-NEXT:     BFE_INT T7.W, PV.Z, 0.0, literal.y,
1478 ; EG-NEXT:     LSHR * T0.W, T5.X, literal.y,
1479 ; EG-NEXT:    16(2.242078e-44), 8(1.121039e-44)
1480 ; EG-NEXT:     LSHR T5.X, KC0[2].Y, literal.x,
1481 ; EG-NEXT:     BFE_INT T6.Y, PS, 0.0, literal.y,
1482 ; EG-NEXT:     BFE_INT T7.Z, PV.Y, 0.0, literal.y,
1483 ; EG-NEXT:     LSHR T0.W, T5.Y, literal.y,
1484 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
1485 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1486 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1487 ; EG-NEXT:     LSHR T8.X, PS, literal.x,
1488 ; EG-NEXT:     BFE_INT * T7.Y, PV.W, 0.0, literal.y,
1489 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1490   %load = load <8 x i8>, ptr addrspace(4) %in
1491   %ext = sext <8 x i8> %load to <8 x i32>
1492   store <8 x i32> %ext, ptr addrspace(1) %out
1493   ret void
1496 ; TODO: These should use DST, but for some there are redundant MOVs
1497 define amdgpu_kernel void @constant_zextload_v16i8_to_v16i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1498 ; GFX6-NOHSA-LABEL: constant_zextload_v16i8_to_v16i32:
1499 ; GFX6-NOHSA:       ; %bb.0:
1500 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1501 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1502 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1503 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1504 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1505 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1506 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s4, 24
1507 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s9, s4, 0x80008
1508 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s10, s5, 24
1509 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s11, s5, 0x80008
1510 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s12, s6, 24
1511 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s13, s6, 0x80008
1512 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s7, 24
1513 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s15, s7, 0x80008
1514 ; GFX6-NOHSA-NEXT:    s_and_b32 s16, s4, 0xff
1515 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
1516 ; GFX6-NOHSA-NEXT:    s_and_b32 s17, s5, 0xff
1517 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
1518 ; GFX6-NOHSA-NEXT:    s_and_b32 s18, s6, 0xff
1519 ; GFX6-NOHSA-NEXT:    s_and_b32 s19, s7, 0xff
1520 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
1521 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
1522 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s19
1523 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s15
1524 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
1525 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s14
1526 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
1527 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1528 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s18
1529 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s13
1530 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
1531 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s12
1532 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
1533 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1534 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s17
1535 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
1536 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
1537 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s10
1538 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1539 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1540 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s16
1541 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
1542 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
1543 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
1544 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1545 ; GFX6-NOHSA-NEXT:    s_endpgm
1547 ; GFX7-HSA-LABEL: constant_zextload_v16i8_to_v16i32:
1548 ; GFX7-HSA:       ; %bb.0:
1549 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1550 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1551 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1552 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1553 ; GFX7-HSA-NEXT:    s_lshr_b32 s8, s4, 24
1554 ; GFX7-HSA-NEXT:    s_bfe_u32 s9, s4, 0x80008
1555 ; GFX7-HSA-NEXT:    s_lshr_b32 s10, s5, 24
1556 ; GFX7-HSA-NEXT:    s_bfe_u32 s11, s5, 0x80008
1557 ; GFX7-HSA-NEXT:    s_lshr_b32 s12, s6, 24
1558 ; GFX7-HSA-NEXT:    s_bfe_u32 s13, s6, 0x80008
1559 ; GFX7-HSA-NEXT:    s_lshr_b32 s2, s7, 24
1560 ; GFX7-HSA-NEXT:    s_bfe_u32 s3, s7, 0x80008
1561 ; GFX7-HSA-NEXT:    s_and_b32 s14, s4, 0xff
1562 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
1563 ; GFX7-HSA-NEXT:    s_and_b32 s15, s5, 0xff
1564 ; GFX7-HSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
1565 ; GFX7-HSA-NEXT:    s_and_b32 s16, s6, 0xff
1566 ; GFX7-HSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
1567 ; GFX7-HSA-NEXT:    s_and_b32 s17, s7, 0xff
1568 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
1569 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
1570 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
1571 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
1572 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1573 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1574 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1575 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
1576 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s17
1577 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s7
1578 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1579 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1580 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1581 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1582 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
1583 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s16
1584 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s13
1585 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
1586 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s12
1587 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1588 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1589 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1590 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s15
1591 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s11
1592 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
1593 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s10
1594 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1595 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1596 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1597 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s14
1598 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s9
1599 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
1600 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s8
1601 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1602 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1603 ; GFX7-HSA-NEXT:    s_endpgm
1605 ; GFX8-NOHSA-LABEL: constant_zextload_v16i8_to_v16i32:
1606 ; GFX8-NOHSA:       ; %bb.0:
1607 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1608 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1609 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1610 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1611 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s8, s4, 24
1612 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s9, s5, 24
1613 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s6, 24
1614 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s2, s7, 24
1615 ; GFX8-NOHSA-NEXT:    s_and_b32 s11, s4, 0xff
1616 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s4
1617 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
1618 ; GFX8-NOHSA-NEXT:    s_and_b32 s12, s5, 0xff
1619 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s5
1620 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
1621 ; GFX8-NOHSA-NEXT:    s_and_b32 s13, s6, 0xff
1622 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s6
1623 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
1624 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, s7, 0xff
1625 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s7
1626 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
1627 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s2
1628 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 48
1629 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s3
1630 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
1631 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s3
1632 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s2
1633 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 32
1634 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s7
1635 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
1636 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
1637 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s13
1638 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
1639 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s2
1640 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
1641 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s6
1642 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s10
1643 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
1644 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
1645 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s12
1646 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s3
1647 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s5
1648 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
1649 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
1650 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
1651 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
1652 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1653 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
1654 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
1655 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1656 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1657 ; GFX8-NOHSA-NEXT:    s_endpgm
1659 ; EG-LABEL: constant_zextload_v16i8_to_v16i32:
1660 ; EG:       ; %bb.0:
1661 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
1662 ; EG-NEXT:    TEX 0 @8
1663 ; EG-NEXT:    ALU 39, @11, KC0[CB0:0-32], KC1[]
1664 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T14.X, 0
1665 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T13.X, 0
1666 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T11.X, 0
1667 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1
1668 ; EG-NEXT:    CF_END
1669 ; EG-NEXT:    Fetch clause starting at 8:
1670 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
1671 ; EG-NEXT:    ALU clause starting at 10:
1672 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
1673 ; EG-NEXT:    ALU clause starting at 11:
1674 ; EG-NEXT:     MOV * T0.W, literal.x,
1675 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1676 ; EG-NEXT:     BFE_UINT * T8.Z, T7.X, literal.x, PV.W,
1677 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1678 ; EG-NEXT:     BFE_UINT T8.Y, T7.X, literal.x, T0.W,
1679 ; EG-NEXT:     BFE_UINT T9.Z, T7.Y, literal.y, T0.W,
1680 ; EG-NEXT:     LSHR * T8.W, T7.X, literal.z,
1681 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
1682 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
1683 ; EG-NEXT:     AND_INT T8.X, T7.X, literal.x,
1684 ; EG-NEXT:     BFE_UINT T9.Y, T7.Y, literal.y, T0.W,
1685 ; EG-NEXT:     LSHR * T7.X, KC0[2].Y, literal.z,
1686 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
1687 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1688 ; EG-NEXT:     BFE_UINT T10.Z, T7.Z, literal.x, T0.W,
1689 ; EG-NEXT:     LSHR * T9.W, T7.Y, literal.y,
1690 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
1691 ; EG-NEXT:     AND_INT T9.X, T7.Y, literal.x,
1692 ; EG-NEXT:     BFE_UINT T10.Y, T7.Z, literal.y, T0.W,
1693 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
1694 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
1695 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1696 ; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
1697 ; EG-NEXT:     BFE_UINT T12.Z, T7.W, literal.y, T0.W,
1698 ; EG-NEXT:     LSHR T10.W, T7.Z, literal.z,
1699 ; EG-NEXT:     AND_INT * T10.X, T7.Z, literal.w,
1700 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1701 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
1702 ; EG-NEXT:     BFE_UINT T12.Y, T7.W, literal.x, T0.W,
1703 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1704 ; EG-NEXT:    8(1.121039e-44), 32(4.484155e-44)
1705 ; EG-NEXT:     LSHR T13.X, PV.W, literal.x,
1706 ; EG-NEXT:     LSHR T12.W, T7.W, literal.y,
1707 ; EG-NEXT:     AND_INT * T12.X, T7.W, literal.z,
1708 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
1709 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
1710 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
1711 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
1712 ; EG-NEXT:     LSHR * T14.X, PV.W, literal.x,
1713 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1714   %load = load <16 x i8>, ptr addrspace(4) %in
1715   %ext = zext <16 x i8> %load to <16 x i32>
1716   store <16 x i32> %ext, ptr addrspace(1) %out
1717   ret void
1720 ; TODO: These should use DST, but for some there are redundant MOVs
1721 define amdgpu_kernel void @constant_sextload_v16i8_to_v16i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1722 ; GFX6-NOHSA-LABEL: constant_sextload_v16i8_to_v16i32:
1723 ; GFX6-NOHSA:       ; %bb.0:
1724 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1725 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1726 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1727 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1728 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1729 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1730 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s8, s4, 24
1731 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s9, s4, 0x80010
1732 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s10, s4, 0x80008
1733 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
1734 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s11, s5, 24
1735 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s12, s5, 0x80010
1736 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s13, s5, 0x80008
1737 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
1738 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s14, s6, 24
1739 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s15, s6, 0x80010
1740 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s16, s6, 0x80008
1741 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s17, s7, 24
1742 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s18, s7, 0x80010
1743 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s19, s7, 0x80008
1744 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
1745 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
1746 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
1747 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s19
1748 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s18
1749 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s17
1750 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
1751 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1752 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
1753 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s16
1754 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
1755 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s14
1756 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
1757 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1758 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
1759 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s13
1760 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s12
1761 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s11
1762 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1763 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
1764 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
1765 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s10
1766 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
1767 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
1768 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1769 ; GFX6-NOHSA-NEXT:    s_endpgm
1771 ; GFX7-HSA-LABEL: constant_sextload_v16i8_to_v16i32:
1772 ; GFX7-HSA:       ; %bb.0:
1773 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1774 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1775 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1776 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1777 ; GFX7-HSA-NEXT:    s_ashr_i32 s8, s4, 24
1778 ; GFX7-HSA-NEXT:    s_bfe_i32 s9, s4, 0x80010
1779 ; GFX7-HSA-NEXT:    s_bfe_i32 s10, s4, 0x80008
1780 ; GFX7-HSA-NEXT:    s_ashr_i32 s11, s5, 24
1781 ; GFX7-HSA-NEXT:    s_bfe_i32 s12, s5, 0x80010
1782 ; GFX7-HSA-NEXT:    s_bfe_i32 s13, s5, 0x80008
1783 ; GFX7-HSA-NEXT:    s_ashr_i32 s14, s6, 24
1784 ; GFX7-HSA-NEXT:    s_bfe_i32 s15, s6, 0x80010
1785 ; GFX7-HSA-NEXT:    s_bfe_i32 s16, s6, 0x80008
1786 ; GFX7-HSA-NEXT:    s_ashr_i32 s2, s7, 24
1787 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s7, 0x80010
1788 ; GFX7-HSA-NEXT:    s_bfe_i32 s17, s7, 0x80008
1789 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
1790 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
1791 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
1792 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1793 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1794 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s7
1795 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1796 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
1797 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
1798 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
1799 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1800 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1801 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1802 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s6, s6
1803 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1804 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
1805 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
1806 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s16
1807 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s15
1808 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s14
1809 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
1810 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s5, s5
1811 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1812 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
1813 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
1814 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s13
1815 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s12
1816 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s11
1817 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
1818 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s4, s4
1819 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1820 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
1821 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
1822 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s10
1823 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s9
1824 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s8
1825 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
1826 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1827 ; GFX7-HSA-NEXT:    s_endpgm
1829 ; GFX8-NOHSA-LABEL: constant_sextload_v16i8_to_v16i32:
1830 ; GFX8-NOHSA:       ; %bb.0:
1831 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1832 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1833 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1834 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1835 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s8, s4, 24
1836 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s9, s4, 0x80010
1837 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s10, s5, 24
1838 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s11, s5, 0x80010
1839 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s12, s6, 24
1840 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s13, s6, 0x80010
1841 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s2, s7, 24
1842 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s7, 0x80010
1843 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s2
1844 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 48
1845 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s3
1846 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
1847 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s3
1848 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s7
1849 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
1850 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s2
1851 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 32
1852 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v7, v0, 0, 8
1853 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s7
1854 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
1855 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
1856 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s6
1857 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
1858 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
1859 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s2
1860 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
1861 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v5, v2, 0, 8
1862 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s6
1863 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s13
1864 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s12
1865 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
1866 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s5
1867 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
1868 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
1869 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v3, v3, 0, 8
1870 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s3
1871 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
1872 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s11
1873 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s10
1874 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
1875 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s4
1876 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
1877 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
1878 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v1, 0, 8
1879 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
1880 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
1881 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
1882 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
1883 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
1884 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1885 ; GFX8-NOHSA-NEXT:    s_endpgm
1887 ; EG-LABEL: constant_sextload_v16i8_to_v16i32:
1888 ; EG:       ; %bb.0:
1889 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
1890 ; EG-NEXT:    TEX 0 @8
1891 ; EG-NEXT:    ALU 47, @11, KC0[CB0:0-32], KC1[]
1892 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T14.X, 0
1893 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T13.X, 0
1894 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T7.X, 0
1895 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T8.X, 1
1896 ; EG-NEXT:    CF_END
1897 ; EG-NEXT:    Fetch clause starting at 8:
1898 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
1899 ; EG-NEXT:    ALU clause starting at 10:
1900 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
1901 ; EG-NEXT:    ALU clause starting at 11:
1902 ; EG-NEXT:     LSHR T8.X, KC0[2].Y, literal.x,
1903 ; EG-NEXT:     LSHR T0.W, T7.W, literal.y,
1904 ; EG-NEXT:     LSHR * T1.W, T7.Z, literal.z,
1905 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1906 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1907 ; EG-NEXT:     BFE_INT T9.X, T7.X, 0.0, literal.x,
1908 ; EG-NEXT:     LSHR T0.Y, T7.W, literal.y,
1909 ; EG-NEXT:     LSHR T0.Z, T7.Z, literal.z,
1910 ; EG-NEXT:     LSHR T2.W, T7.Y, literal.x,
1911 ; EG-NEXT:     LSHR * T3.W, T7.X, literal.y,
1912 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
1913 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1914 ; EG-NEXT:     BFE_INT T10.X, T7.Y, 0.0, literal.x,
1915 ; EG-NEXT:     LSHR T1.Y, T7.Z, literal.y,
1916 ; EG-NEXT:     LSHR T1.Z, T7.Y, literal.y,
1917 ; EG-NEXT:     BFE_INT T9.W, PS, 0.0, literal.x,
1918 ; EG-NEXT:     LSHR * T3.W, T7.X, literal.z,
1919 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
1920 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1921 ; EG-NEXT:     BFE_INT T11.X, T7.Z, 0.0, literal.x,
1922 ; EG-NEXT:     LSHR T2.Y, T7.Y, literal.y,
1923 ; EG-NEXT:     BFE_INT T9.Z, PS, 0.0, literal.x,
1924 ; EG-NEXT:     BFE_INT T10.W, PV.Z, 0.0, literal.x,
1925 ; EG-NEXT:     LSHR * T3.W, T7.X, literal.x,
1926 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
1927 ; EG-NEXT:     BFE_INT T12.X, T7.W, 0.0, literal.x,
1928 ; EG-NEXT:     BFE_INT T9.Y, PS, 0.0, literal.x,
1929 ; EG-NEXT:     BFE_INT T10.Z, PV.Y, 0.0, literal.x,
1930 ; EG-NEXT:     BFE_INT T11.W, T1.Y, 0.0, literal.x,
1931 ; EG-NEXT:     ADD_INT * T3.W, KC0[2].Y, literal.y,
1932 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
1933 ; EG-NEXT:     LSHR T7.X, PS, literal.x,
1934 ; EG-NEXT:     BFE_INT T10.Y, T2.W, 0.0, literal.y,
1935 ; EG-NEXT:     BFE_INT T11.Z, T0.Z, 0.0, literal.y,
1936 ; EG-NEXT:     BFE_INT T12.W, T0.Y, 0.0, literal.y,
1937 ; EG-NEXT:     ADD_INT * T2.W, KC0[2].Y, literal.z,
1938 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1939 ; EG-NEXT:    32(4.484155e-44), 0(0.000000e+00)
1940 ; EG-NEXT:     LSHR T13.X, PS, literal.x,
1941 ; EG-NEXT:     BFE_INT T11.Y, T1.W, 0.0, literal.y,
1942 ; EG-NEXT:     BFE_INT T12.Z, T0.W, 0.0, literal.y, BS:VEC_120/SCL_212
1943 ; EG-NEXT:     LSHR T0.W, T7.W, literal.y, BS:VEC_201
1944 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
1945 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1946 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
1947 ; EG-NEXT:     LSHR T14.X, PS, literal.x,
1948 ; EG-NEXT:     BFE_INT * T12.Y, PV.W, 0.0, literal.y,
1949 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
1950   %load = load <16 x i8>, ptr addrspace(4) %in
1951   %ext = sext <16 x i8> %load to <16 x i32>
1952   store <16 x i32> %ext, ptr addrspace(1) %out
1953   ret void
1956 ; TODO: These should use DST, but for some there are redundant MOVs
1957 define amdgpu_kernel void @constant_zextload_v32i8_to_v32i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
1958 ; GFX6-NOHSA-LABEL: constant_zextload_v32i8_to_v32i32:
1959 ; GFX6-NOHSA:       ; %bb.0:
1960 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1961 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1962 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1963 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
1964 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
1965 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
1966 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s12, s4, 24
1967 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s13, s4, 0x80008
1968 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s5, 24
1969 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s15, s5, 0x80008
1970 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s16, s6, 24
1971 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s17, s6, 0x80008
1972 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s18, s7, 24
1973 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s19, s7, 0x80008
1974 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s20, s8, 24
1975 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s21, s8, 0x80008
1976 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s22, s9, 24
1977 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s23, s9, 0x80008
1978 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s24, s10, 24
1979 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s25, s10, 0x80008
1980 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s26, s11, 24
1981 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s27, s11, 0x80008
1982 ; GFX6-NOHSA-NEXT:    s_and_b32 s28, s4, 0xff
1983 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
1984 ; GFX6-NOHSA-NEXT:    s_and_b32 s29, s5, 0xff
1985 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
1986 ; GFX6-NOHSA-NEXT:    s_and_b32 s30, s6, 0xff
1987 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
1988 ; GFX6-NOHSA-NEXT:    s_and_b32 s31, s7, 0xff
1989 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
1990 ; GFX6-NOHSA-NEXT:    s_and_b32 s33, s8, 0xff
1991 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
1992 ; GFX6-NOHSA-NEXT:    s_and_b32 s34, s9, 0xff
1993 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
1994 ; GFX6-NOHSA-NEXT:    s_and_b32 s35, s10, 0xff
1995 ; GFX6-NOHSA-NEXT:    s_and_b32 s36, s11, 0xff
1996 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s11, s11, 0x80010
1997 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
1998 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s36
1999 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s27
2000 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s11
2001 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s26
2002 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
2003 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2004 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s35
2005 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s25
2006 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
2007 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s24
2008 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
2009 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2010 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s34
2011 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s23
2012 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
2013 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s22
2014 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
2015 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2016 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s33
2017 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s21
2018 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s8
2019 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s20
2020 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
2021 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2022 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s31
2023 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s19
2024 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
2025 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
2026 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
2027 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2028 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s30
2029 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s17
2030 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
2031 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s16
2032 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2033 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2034 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s29
2035 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s15
2036 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
2037 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s14
2038 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
2039 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2040 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s28
2041 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s13
2042 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
2043 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s12
2044 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
2045 ; GFX6-NOHSA-NEXT:    s_endpgm
2047 ; GFX7-HSA-LABEL: constant_zextload_v32i8_to_v32i32:
2048 ; GFX7-HSA:       ; %bb.0:
2049 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
2050 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2051 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
2052 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2053 ; GFX7-HSA-NEXT:    s_lshr_b32 s12, s4, 24
2054 ; GFX7-HSA-NEXT:    s_bfe_u32 s13, s4, 0x80008
2055 ; GFX7-HSA-NEXT:    s_lshr_b32 s14, s5, 24
2056 ; GFX7-HSA-NEXT:    s_bfe_u32 s15, s5, 0x80008
2057 ; GFX7-HSA-NEXT:    s_lshr_b32 s16, s6, 24
2058 ; GFX7-HSA-NEXT:    s_bfe_u32 s17, s6, 0x80008
2059 ; GFX7-HSA-NEXT:    s_lshr_b32 s18, s7, 24
2060 ; GFX7-HSA-NEXT:    s_bfe_u32 s19, s7, 0x80008
2061 ; GFX7-HSA-NEXT:    s_lshr_b32 s20, s8, 24
2062 ; GFX7-HSA-NEXT:    s_bfe_u32 s21, s8, 0x80008
2063 ; GFX7-HSA-NEXT:    s_lshr_b32 s22, s9, 24
2064 ; GFX7-HSA-NEXT:    s_bfe_u32 s23, s9, 0x80008
2065 ; GFX7-HSA-NEXT:    s_lshr_b32 s24, s10, 24
2066 ; GFX7-HSA-NEXT:    s_bfe_u32 s25, s10, 0x80008
2067 ; GFX7-HSA-NEXT:    s_lshr_b32 s2, s11, 24
2068 ; GFX7-HSA-NEXT:    s_bfe_u32 s3, s11, 0x80008
2069 ; GFX7-HSA-NEXT:    s_and_b32 s26, s4, 0xff
2070 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
2071 ; GFX7-HSA-NEXT:    s_and_b32 s27, s5, 0xff
2072 ; GFX7-HSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
2073 ; GFX7-HSA-NEXT:    s_and_b32 s28, s6, 0xff
2074 ; GFX7-HSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
2075 ; GFX7-HSA-NEXT:    s_and_b32 s29, s7, 0xff
2076 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
2077 ; GFX7-HSA-NEXT:    s_and_b32 s30, s8, 0xff
2078 ; GFX7-HSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
2079 ; GFX7-HSA-NEXT:    s_and_b32 s31, s9, 0xff
2080 ; GFX7-HSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
2081 ; GFX7-HSA-NEXT:    s_and_b32 s33, s10, 0xff
2082 ; GFX7-HSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
2083 ; GFX7-HSA-NEXT:    s_and_b32 s34, s11, 0xff
2084 ; GFX7-HSA-NEXT:    s_bfe_u32 s11, s11, 0x80010
2085 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
2086 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x70
2087 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
2088 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2089 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2090 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2091 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x60
2092 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s34
2093 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s11
2094 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2095 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2096 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2097 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2098 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x50
2099 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s33
2100 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s25
2101 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s10
2102 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s24
2103 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2104 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2105 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2106 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2107 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 64
2108 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s31
2109 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s23
2110 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s9
2111 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s22
2112 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2113 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2114 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2115 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2116 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
2117 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s30
2118 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s21
2119 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s8
2120 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s20
2121 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2122 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2123 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2124 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2125 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
2126 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s29
2127 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s19
2128 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s7
2129 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s18
2130 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2131 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2132 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2133 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2134 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
2135 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s28
2136 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
2137 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
2138 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s16
2139 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2140 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2141 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2142 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s27
2143 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s15
2144 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
2145 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s14
2146 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2147 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2148 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
2149 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s26
2150 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s13
2151 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
2152 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s12
2153 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
2154 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2155 ; GFX7-HSA-NEXT:    s_endpgm
2157 ; GFX8-NOHSA-LABEL: constant_zextload_v32i8_to_v32i32:
2158 ; GFX8-NOHSA:       ; %bb.0:
2159 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x24
2160 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2161 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
2162 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2163 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s0, 24
2164 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s11, s1, 24
2165 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s12, s2, 24
2166 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s13, s3, 24
2167 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s14, s4, 24
2168 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s15, s5, 24
2169 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s16, s6, 24
2170 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s17, s7, 24
2171 ; GFX8-NOHSA-NEXT:    s_and_b32 s18, s0, 0xff
2172 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s0
2173 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s19, s0, 0x80010
2174 ; GFX8-NOHSA-NEXT:    s_and_b32 s20, s1, 0xff
2175 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s1
2176 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s21, s1, 0x80010
2177 ; GFX8-NOHSA-NEXT:    s_and_b32 s22, s2, 0xff
2178 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s2
2179 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
2180 ; GFX8-NOHSA-NEXT:    s_and_b32 s23, s3, 0xff
2181 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s3
2182 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
2183 ; GFX8-NOHSA-NEXT:    s_and_b32 s24, s4, 0xff
2184 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s4
2185 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
2186 ; GFX8-NOHSA-NEXT:    s_and_b32 s25, s5, 0xff
2187 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s26, s5, 0x80010
2188 ; GFX8-NOHSA-NEXT:    s_and_b32 s27, s6, 0xff
2189 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s28, s6, 0x80010
2190 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s7, 0xff
2191 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s7, 0x80010
2192 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s0
2193 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x70
2194 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s1
2195 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2196 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
2197 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
2198 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x60
2199 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s7
2200 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s17
2201 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2202 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
2203 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
2204 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
2205 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x50
2206 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s6
2207 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s27
2208 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s28
2209 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s16
2210 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2211 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
2212 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
2213 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
2214 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 64
2215 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s5
2216 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s25
2217 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s26
2218 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s15
2219 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2220 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
2221 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s24
2222 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s1
2223 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s0
2224 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 48
2225 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
2226 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s14
2227 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2228 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
2229 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s23
2230 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s1
2231 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s0
2232 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 32
2233 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s3
2234 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s13
2235 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2236 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
2237 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s22
2238 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s1
2239 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s0
2240 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 16
2241 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
2242 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s12
2243 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2244 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
2245 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s20
2246 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s1
2247 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s21
2248 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s11
2249 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s0
2250 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
2251 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s18
2252 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
2253 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
2254 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s10
2255 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
2256 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2257 ; GFX8-NOHSA-NEXT:    s_endpgm
2259 ; EG-LABEL: constant_zextload_v32i8_to_v32i32:
2260 ; EG:       ; %bb.0:
2261 ; EG-NEXT:    ALU 0, @16, KC0[CB0:0-32], KC1[]
2262 ; EG-NEXT:    TEX 1 @12
2263 ; EG-NEXT:    ALU 75, @17, KC0[CB0:0-32], KC1[]
2264 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T26.X, 0
2265 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T25.X, 0
2266 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T23.X, 0
2267 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T12.X, 0
2268 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T20.X, 0
2269 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T18.X, 0
2270 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T16.X, 0
2271 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T11.X, 1
2272 ; EG-NEXT:    CF_END
2273 ; EG-NEXT:    Fetch clause starting at 12:
2274 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
2275 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
2276 ; EG-NEXT:    ALU clause starting at 16:
2277 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
2278 ; EG-NEXT:    ALU clause starting at 17:
2279 ; EG-NEXT:     MOV * T0.W, literal.x,
2280 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
2281 ; EG-NEXT:     BFE_UINT * T13.Z, T11.X, literal.x, PV.W,
2282 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2283 ; EG-NEXT:     BFE_UINT T13.Y, T11.X, literal.x, T0.W,
2284 ; EG-NEXT:     BFE_UINT T14.Z, T11.Y, literal.y, T0.W,
2285 ; EG-NEXT:     LSHR * T13.W, T11.X, literal.z,
2286 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
2287 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
2288 ; EG-NEXT:     AND_INT T13.X, T11.X, literal.x,
2289 ; EG-NEXT:     BFE_UINT T14.Y, T11.Y, literal.y, T0.W,
2290 ; EG-NEXT:     LSHR * T11.X, KC0[2].Y, literal.z,
2291 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
2292 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2293 ; EG-NEXT:     BFE_UINT T15.Z, T11.Z, literal.x, T0.W,
2294 ; EG-NEXT:     LSHR * T14.W, T11.Y, literal.y,
2295 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
2296 ; EG-NEXT:     AND_INT T14.X, T11.Y, literal.x,
2297 ; EG-NEXT:     BFE_UINT T15.Y, T11.Z, literal.y, T0.W,
2298 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
2299 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
2300 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2301 ; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
2302 ; EG-NEXT:     BFE_UINT T17.Z, T11.W, literal.y, T0.W,
2303 ; EG-NEXT:     LSHR T15.W, T11.Z, literal.z,
2304 ; EG-NEXT:     AND_INT * T15.X, T11.Z, literal.w,
2305 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2306 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
2307 ; EG-NEXT:     BFE_UINT T17.Y, T11.W, literal.x, T0.W,
2308 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
2309 ; EG-NEXT:    8(1.121039e-44), 32(4.484155e-44)
2310 ; EG-NEXT:     LSHR T18.X, PV.W, literal.x,
2311 ; EG-NEXT:     BFE_UINT T19.Z, T12.X, literal.y, T0.W, BS:VEC_021/SCL_122
2312 ; EG-NEXT:     LSHR T17.W, T11.W, literal.z,
2313 ; EG-NEXT:     AND_INT * T17.X, T11.W, literal.w,
2314 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2315 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
2316 ; EG-NEXT:     BFE_UINT T19.Y, T12.X, literal.x, T0.W,
2317 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
2318 ; EG-NEXT:    8(1.121039e-44), 48(6.726233e-44)
2319 ; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
2320 ; EG-NEXT:     BFE_UINT T21.Z, T12.Y, literal.y, T0.W,
2321 ; EG-NEXT:     LSHR T19.W, T12.X, literal.z,
2322 ; EG-NEXT:     AND_INT * T19.X, T12.X, literal.w,
2323 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2324 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
2325 ; EG-NEXT:     BFE_UINT T21.Y, T12.Y, literal.x, T0.W,
2326 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
2327 ; EG-NEXT:    8(1.121039e-44), 64(8.968310e-44)
2328 ; EG-NEXT:     LSHR T12.X, PV.W, literal.x,
2329 ; EG-NEXT:     BFE_UINT T22.Z, T12.Z, literal.y, T0.W,
2330 ; EG-NEXT:     LSHR T21.W, T12.Y, literal.z,
2331 ; EG-NEXT:     AND_INT * T21.X, T12.Y, literal.w,
2332 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2333 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
2334 ; EG-NEXT:     BFE_UINT T22.Y, T12.Z, literal.x, T0.W,
2335 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
2336 ; EG-NEXT:    8(1.121039e-44), 80(1.121039e-43)
2337 ; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
2338 ; EG-NEXT:     BFE_UINT T24.Z, T12.W, literal.y, T0.W,
2339 ; EG-NEXT:     LSHR T22.W, T12.Z, literal.z,
2340 ; EG-NEXT:     AND_INT * T22.X, T12.Z, literal.w,
2341 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2342 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
2343 ; EG-NEXT:     BFE_UINT T24.Y, T12.W, literal.x, T0.W,
2344 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2345 ; EG-NEXT:    8(1.121039e-44), 96(1.345247e-43)
2346 ; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
2347 ; EG-NEXT:     LSHR T24.W, T12.W, literal.y,
2348 ; EG-NEXT:     AND_INT * T24.X, T12.W, literal.z,
2349 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
2350 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
2351 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
2352 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
2353 ; EG-NEXT:     LSHR * T26.X, PV.W, literal.x,
2354 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2355   %load = load <32 x i8>, ptr addrspace(4) %in
2356   %ext = zext <32 x i8> %load to <32 x i32>
2357   store <32 x i32> %ext, ptr addrspace(1) %out
2358   ret void
2361 ; TODO: These should use DST, but for some there are redundant MOVs
2362 define amdgpu_kernel void @constant_sextload_v32i8_to_v32i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
2363 ; GFX6-NOHSA-LABEL: constant_sextload_v32i8_to_v32i32:
2364 ; GFX6-NOHSA:       ; %bb.0:
2365 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
2366 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2367 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
2368 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
2369 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
2370 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2371 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s12, s4, 24
2372 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s13, s4, 0x80010
2373 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s14, s4, 0x80008
2374 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
2375 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s15, s5, 24
2376 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s16, s5, 0x80010
2377 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s17, s5, 0x80008
2378 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
2379 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s18, s6, 24
2380 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s19, s6, 0x80010
2381 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s20, s6, 0x80008
2382 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
2383 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s21, s7, 24
2384 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s22, s7, 0x80010
2385 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s23, s7, 0x80008
2386 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
2387 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s24, s8, 24
2388 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s25, s8, 0x80010
2389 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s26, s8, 0x80008
2390 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s8, s8
2391 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s27, s9, 24
2392 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s28, s9, 0x80010
2393 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s29, s9, 0x80008
2394 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s9, s9
2395 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s30, s10, 24
2396 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s31, s10, 0x80010
2397 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s33, s10, 0x80008
2398 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s34, s11, 24
2399 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s35, s11, 0x80010
2400 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s36, s11, 0x80008
2401 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s11, s11
2402 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s10, s10
2403 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
2404 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s36
2405 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s35
2406 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s34
2407 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
2408 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2409 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
2410 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s33
2411 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s31
2412 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s30
2413 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
2414 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2415 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s9
2416 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s29
2417 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s28
2418 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s27
2419 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
2420 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2421 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
2422 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s26
2423 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s25
2424 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s24
2425 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
2426 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2427 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
2428 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s23
2429 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s22
2430 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s21
2431 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
2432 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2433 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
2434 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s20
2435 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
2436 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
2437 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2438 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2439 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
2440 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s17
2441 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s16
2442 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s15
2443 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
2444 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2445 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
2446 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s14
2447 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s13
2448 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s12
2449 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
2450 ; GFX6-NOHSA-NEXT:    s_endpgm
2452 ; GFX7-HSA-LABEL: constant_sextload_v32i8_to_v32i32:
2453 ; GFX7-HSA:       ; %bb.0:
2454 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
2455 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2456 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
2457 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2458 ; GFX7-HSA-NEXT:    s_ashr_i32 s12, s4, 24
2459 ; GFX7-HSA-NEXT:    s_bfe_i32 s13, s4, 0x80010
2460 ; GFX7-HSA-NEXT:    s_bfe_i32 s14, s4, 0x80008
2461 ; GFX7-HSA-NEXT:    s_ashr_i32 s15, s5, 24
2462 ; GFX7-HSA-NEXT:    s_bfe_i32 s16, s5, 0x80010
2463 ; GFX7-HSA-NEXT:    s_bfe_i32 s17, s5, 0x80008
2464 ; GFX7-HSA-NEXT:    s_ashr_i32 s18, s6, 24
2465 ; GFX7-HSA-NEXT:    s_bfe_i32 s19, s6, 0x80010
2466 ; GFX7-HSA-NEXT:    s_bfe_i32 s20, s6, 0x80008
2467 ; GFX7-HSA-NEXT:    s_ashr_i32 s21, s7, 24
2468 ; GFX7-HSA-NEXT:    s_bfe_i32 s22, s7, 0x80010
2469 ; GFX7-HSA-NEXT:    s_bfe_i32 s23, s7, 0x80008
2470 ; GFX7-HSA-NEXT:    s_ashr_i32 s24, s8, 24
2471 ; GFX7-HSA-NEXT:    s_bfe_i32 s25, s8, 0x80010
2472 ; GFX7-HSA-NEXT:    s_bfe_i32 s26, s8, 0x80008
2473 ; GFX7-HSA-NEXT:    s_ashr_i32 s27, s9, 24
2474 ; GFX7-HSA-NEXT:    s_bfe_i32 s28, s9, 0x80010
2475 ; GFX7-HSA-NEXT:    s_bfe_i32 s29, s9, 0x80008
2476 ; GFX7-HSA-NEXT:    s_ashr_i32 s30, s10, 24
2477 ; GFX7-HSA-NEXT:    s_bfe_i32 s31, s10, 0x80010
2478 ; GFX7-HSA-NEXT:    s_bfe_i32 s33, s10, 0x80008
2479 ; GFX7-HSA-NEXT:    s_ashr_i32 s2, s11, 24
2480 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s11, 0x80010
2481 ; GFX7-HSA-NEXT:    s_bfe_i32 s34, s11, 0x80008
2482 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
2483 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x70
2484 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
2485 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2486 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2487 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s11, s11
2488 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2489 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x60
2490 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s11
2491 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s34
2492 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2493 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2494 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2495 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s10, s10
2496 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2497 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x50
2498 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
2499 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s33
2500 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s31
2501 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s30
2502 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2503 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2504 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2505 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s9, s9
2506 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2507 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 64
2508 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s9
2509 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s29
2510 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s28
2511 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s27
2512 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2513 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2514 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2515 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s8, s8
2516 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2517 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
2518 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
2519 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s26
2520 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s25
2521 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s24
2522 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2523 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2524 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2525 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s7
2526 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2527 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
2528 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
2529 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s23
2530 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s22
2531 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s21
2532 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2533 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2534 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2535 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s6, s6
2536 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2537 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
2538 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
2539 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s20
2540 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s19
2541 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s18
2542 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
2543 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s5, s5
2544 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2545 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
2546 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
2547 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
2548 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s16
2549 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s15
2550 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
2551 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s4, s4
2552 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2553 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
2554 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
2555 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s14
2556 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s13
2557 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s12
2558 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
2559 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2560 ; GFX7-HSA-NEXT:    s_endpgm
2562 ; GFX8-NOHSA-LABEL: constant_sextload_v32i8_to_v32i32:
2563 ; GFX8-NOHSA:       ; %bb.0:
2564 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x24
2565 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2566 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
2567 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2568 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s1
2569 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s0
2570 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s10, s0, 24
2571 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s11, s0, 0x80010
2572 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s12, s0
2573 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s13, s1, 24
2574 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s14, s1, 0x80010
2575 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s15, s1
2576 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s16, s2, 24
2577 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s17, s2, 0x80010
2578 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s18, s3, 24
2579 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s19, s3, 0x80010
2580 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s20, s4, 24
2581 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s21, s4, 0x80010
2582 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s22, s5, 24
2583 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s23, s5, 0x80010
2584 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s24, s6, 24
2585 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s25, s6, 0x80010
2586 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s0, s7, 24
2587 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s7, 0x80010
2588 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s0
2589 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x70
2590 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s1
2591 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2592 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
2593 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s7
2594 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
2595 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
2596 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x60
2597 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v11, v0, 0, 8
2598 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s7
2599 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2600 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
2601 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
2602 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s6
2603 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
2604 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
2605 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 0x50
2606 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v11, v2, 0, 8
2607 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s6
2608 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s25
2609 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s24
2610 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2611 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
2612 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s1
2613 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s5
2614 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
2615 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s0
2616 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 64
2617 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v11, v4, 0, 8
2618 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s5
2619 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s23
2620 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s22
2621 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2622 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
2623 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s4
2624 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s1
2625 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
2626 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s0
2627 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 48
2628 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v9, v6, 0, 8
2629 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
2630 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s21
2631 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s20
2632 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2633 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
2634 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s3
2635 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s1
2636 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s3, s3
2637 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s0
2638 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 32
2639 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v7, v7, 0, 8
2640 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s3
2641 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s19
2642 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s18
2643 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2644 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
2645 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s2
2646 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s1
2647 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
2648 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s0
2649 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 16
2650 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v5, v5, 0, 8
2651 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
2652 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s17
2653 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s16
2654 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
2655 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
2656 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v3, v3, 0, 8
2657 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s1
2658 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
2659 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s14
2660 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s13
2661 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s0
2662 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
2663 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v1, 0, 8
2664 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
2665 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s12
2666 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s11
2667 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s10
2668 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
2669 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2670 ; GFX8-NOHSA-NEXT:    s_endpgm
2672 ; EG-LABEL: constant_sextload_v32i8_to_v32i32:
2673 ; EG:       ; %bb.0:
2674 ; EG-NEXT:    ALU 0, @18, KC0[CB0:0-32], KC1[]
2675 ; EG-NEXT:    TEX 0 @14
2676 ; EG-NEXT:    ALU 18, @19, KC0[CB0:0-32], KC1[]
2677 ; EG-NEXT:    TEX 0 @16
2678 ; EG-NEXT:    ALU 75, @38, KC0[CB0:0-32], KC1[]
2679 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T26.X, 0
2680 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T25.X, 0
2681 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T12.X, 0
2682 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T17.X, 0
2683 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T16.X, 0
2684 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T15.X, 0
2685 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T14.X, 0
2686 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T13.X, 1
2687 ; EG-NEXT:    CF_END
2688 ; EG-NEXT:    Fetch clause starting at 14:
2689 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
2690 ; EG-NEXT:    Fetch clause starting at 16:
2691 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
2692 ; EG-NEXT:    ALU clause starting at 18:
2693 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
2694 ; EG-NEXT:    ALU clause starting at 19:
2695 ; EG-NEXT:     LSHR T13.X, KC0[2].Y, literal.x,
2696 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2697 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2698 ; EG-NEXT:     LSHR T14.X, PV.W, literal.x,
2699 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2700 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
2701 ; EG-NEXT:     LSHR T15.X, PV.W, literal.x,
2702 ; EG-NEXT:     LSHR T0.Z, T12.W, literal.y,
2703 ; EG-NEXT:     LSHR T0.W, T12.Z, literal.z,
2704 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
2705 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2706 ; EG-NEXT:    8(1.121039e-44), 48(6.726233e-44)
2707 ; EG-NEXT:     LSHR T16.X, PS, literal.x,
2708 ; EG-NEXT:     LSHR T0.Y, T12.W, literal.y,
2709 ; EG-NEXT:     LSHR T1.Z, T12.Z, literal.z,
2710 ; EG-NEXT:     LSHR T1.W, T12.Y, literal.w,
2711 ; EG-NEXT:     LSHR * T2.W, T12.Z, literal.y,
2712 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
2713 ; EG-NEXT:    16(2.242078e-44), 8(1.121039e-44)
2714 ; EG-NEXT:    ALU clause starting at 38:
2715 ; EG-NEXT:     ADD_INT * T3.W, KC0[2].Y, literal.x,
2716 ; EG-NEXT:    64(8.968310e-44), 0(0.000000e+00)
2717 ; EG-NEXT:     LSHR T17.X, PV.W, literal.x,
2718 ; EG-NEXT:     LSHR T1.Y, T12.Y, literal.y,
2719 ; EG-NEXT:     LSHR T2.Z, T12.Y, literal.z,
2720 ; EG-NEXT:     LSHR T3.W, T12.X, literal.y,
2721 ; EG-NEXT:     LSHR * T4.W, T12.X, literal.z,
2722 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2723 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
2724 ; EG-NEXT:     BFE_INT T18.X, T11.X, 0.0, literal.x,
2725 ; EG-NEXT:     LSHR T2.Y, T11.W, literal.y,
2726 ; EG-NEXT:     LSHR T3.Z, T11.W, literal.z,
2727 ; EG-NEXT:     LSHR T5.W, T11.Z, literal.y,
2728 ; EG-NEXT:     LSHR * T6.W, T11.X, literal.z,
2729 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
2730 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
2731 ; EG-NEXT:     BFE_INT T19.X, T11.Y, 0.0, literal.x,
2732 ; EG-NEXT:     LSHR T3.Y, T11.Z, literal.y,
2733 ; EG-NEXT:     LSHR T4.Z, T11.Y, literal.y,
2734 ; EG-NEXT:     BFE_INT T18.W, PS, 0.0, literal.x,
2735 ; EG-NEXT:     LSHR * T6.W, T11.X, literal.z,
2736 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
2737 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2738 ; EG-NEXT:     BFE_INT T20.X, T11.Z, 0.0, literal.x,
2739 ; EG-NEXT:     LSHR T4.Y, T11.Y, literal.y,
2740 ; EG-NEXT:     BFE_INT T18.Z, PS, 0.0, literal.x,
2741 ; EG-NEXT:     BFE_INT T19.W, PV.Z, 0.0, literal.x,
2742 ; EG-NEXT:     LSHR * T6.W, T11.X, literal.x,
2743 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
2744 ; EG-NEXT:     BFE_INT T21.X, T11.W, 0.0, literal.x,
2745 ; EG-NEXT:     BFE_INT T18.Y, PS, 0.0, literal.x,
2746 ; EG-NEXT:     BFE_INT T19.Z, PV.Y, 0.0, literal.x,
2747 ; EG-NEXT:     BFE_INT T20.W, T3.Y, 0.0, literal.x,
2748 ; EG-NEXT:     LSHR * T6.W, T11.Y, literal.x,
2749 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
2750 ; EG-NEXT:     BFE_INT T22.X, T12.X, 0.0, literal.x,
2751 ; EG-NEXT:     BFE_INT T19.Y, PS, 0.0, literal.x,
2752 ; EG-NEXT:     BFE_INT T20.Z, T5.W, 0.0, literal.x,
2753 ; EG-NEXT:     BFE_INT T21.W, T3.Z, 0.0, literal.x,
2754 ; EG-NEXT:     LSHR * T5.W, T11.Z, literal.x,
2755 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
2756 ; EG-NEXT:     BFE_INT T11.X, T12.Y, 0.0, literal.x,
2757 ; EG-NEXT:     BFE_INT T20.Y, PS, 0.0, literal.x,
2758 ; EG-NEXT:     BFE_INT T21.Z, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212
2759 ; EG-NEXT:     BFE_INT T22.W, T4.W, 0.0, literal.x,
2760 ; EG-NEXT:     LSHR * T4.W, T11.W, literal.x,
2761 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
2762 ; EG-NEXT:     BFE_INT T23.X, T12.Z, 0.0, literal.x,
2763 ; EG-NEXT:     BFE_INT T21.Y, PS, 0.0, literal.x,
2764 ; EG-NEXT:     BFE_INT T22.Z, T3.W, 0.0, literal.x,
2765 ; EG-NEXT:     BFE_INT T11.W, T2.Z, 0.0, literal.x, BS:VEC_120/SCL_212
2766 ; EG-NEXT:     LSHR * T3.W, T12.X, literal.x,
2767 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
2768 ; EG-NEXT:     BFE_INT T24.X, T12.W, 0.0, literal.x,
2769 ; EG-NEXT:     BFE_INT T22.Y, PS, 0.0, literal.x,
2770 ; EG-NEXT:     BFE_INT T11.Z, T1.Y, 0.0, literal.x,
2771 ; EG-NEXT:     BFE_INT T23.W, T2.W, 0.0, literal.x, BS:VEC_120/SCL_212
2772 ; EG-NEXT:     ADD_INT * T2.W, KC0[2].Y, literal.y,
2773 ; EG-NEXT:    8(1.121039e-44), 80(1.121039e-43)
2774 ; EG-NEXT:     LSHR T12.X, PS, literal.x,
2775 ; EG-NEXT:     BFE_INT T11.Y, T1.W, 0.0, literal.y,
2776 ; EG-NEXT:     BFE_INT T23.Z, T1.Z, 0.0, literal.y,
2777 ; EG-NEXT:     BFE_INT T24.W, T0.Y, 0.0, literal.y,
2778 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
2779 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
2780 ; EG-NEXT:    96(1.345247e-43), 0(0.000000e+00)
2781 ; EG-NEXT:     LSHR T25.X, PS, literal.x,
2782 ; EG-NEXT:     BFE_INT T23.Y, T0.W, 0.0, literal.y,
2783 ; EG-NEXT:     BFE_INT T24.Z, T0.Z, 0.0, literal.y,
2784 ; EG-NEXT:     LSHR T0.W, T12.W, literal.y, BS:VEC_120/SCL_212
2785 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
2786 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
2787 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
2788 ; EG-NEXT:     LSHR T26.X, PS, literal.x,
2789 ; EG-NEXT:     BFE_INT * T24.Y, PV.W, 0.0, literal.y,
2790 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
2791   %load = load <32 x i8>, ptr addrspace(4) %in
2792   %ext = sext <32 x i8> %load to <32 x i32>
2793   store <32 x i32> %ext, ptr addrspace(1) %out
2794   ret void
2797 define amdgpu_kernel void @constant_zextload_v64i8_to_v64i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
2798 ; GFX6-NOHSA-LABEL: constant_zextload_v64i8_to_v64i32:
2799 ; GFX6-NOHSA:       ; %bb.0:
2800 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
2801 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2802 ; GFX6-NOHSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2803 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
2804 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s18, s0, 24
2805 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s19, s0, 0x80008
2806 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s20, s1, 24
2807 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s21, s1, 0x80008
2808 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s22, s2, 24
2809 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s23, s2, 0x80008
2810 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s24, s3, 24
2811 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s26, s3, 0x80008
2812 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s27, s4, 24
2813 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s28, s4, 0x80008
2814 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s29, s5, 24
2815 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s30, s5, 0x80008
2816 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s31, s6, 24
2817 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s33, s6, 0x80008
2818 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s34, s7, 24
2819 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s35, s7, 0x80008
2820 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s36, s8, 24
2821 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s37, s8, 0x80008
2822 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s38, s9, 24
2823 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s39, s9, 0x80008
2824 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s40, s10, 24
2825 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s41, s10, 0x80008
2826 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s42, s11, 24
2827 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s43, s11, 0x80008
2828 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s44, s12, 24
2829 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s45, s12, 0x80008
2830 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s46, s13, 24
2831 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s47, s13, 0x80008
2832 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s48, s14, 24
2833 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s49, s14, 0x80008
2834 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s50, s15, 24
2835 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s51, s15, 0x80008
2836 ; GFX6-NOHSA-NEXT:    s_and_b32 s52, s0, 0xff
2837 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s25, s0, 0x80010
2838 ; GFX6-NOHSA-NEXT:    s_and_b32 s53, s1, 0xff
2839 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s54, s1, 0x80010
2840 ; GFX6-NOHSA-NEXT:    s_and_b32 s55, s2, 0xff
2841 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s56, s2, 0x80010
2842 ; GFX6-NOHSA-NEXT:    s_and_b32 s57, s3, 0xff
2843 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s58, s3, 0x80010
2844 ; GFX6-NOHSA-NEXT:    s_and_b32 s59, s4, 0xff
2845 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
2846 ; GFX6-NOHSA-NEXT:    s_and_b32 s60, s5, 0xff
2847 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
2848 ; GFX6-NOHSA-NEXT:    s_and_b32 s61, s6, 0xff
2849 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
2850 ; GFX6-NOHSA-NEXT:    s_and_b32 s62, s7, 0xff
2851 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
2852 ; GFX6-NOHSA-NEXT:    s_and_b32 s63, s8, 0xff
2853 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
2854 ; GFX6-NOHSA-NEXT:    s_and_b32 s64, s9, 0xff
2855 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
2856 ; GFX6-NOHSA-NEXT:    s_and_b32 s65, s10, 0xff
2857 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
2858 ; GFX6-NOHSA-NEXT:    s_and_b32 s66, s11, 0xff
2859 ; GFX6-NOHSA-NEXT:    s_and_b32 s67, s12, 0xff
2860 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s12, s12, 0x80010
2861 ; GFX6-NOHSA-NEXT:    s_and_b32 s68, s13, 0xff
2862 ; GFX6-NOHSA-NEXT:    s_and_b32 s69, s14, 0xff
2863 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s14, s14, 0x80010
2864 ; GFX6-NOHSA-NEXT:    s_and_b32 s70, s15, 0xff
2865 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s15, s15, 0x80010
2866 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s13, s13, 0x80010
2867 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s11, s11, 0x80010
2868 ; GFX6-NOHSA-NEXT:    s_mov_b32 s0, s16
2869 ; GFX6-NOHSA-NEXT:    s_mov_b32 s1, s17
2870 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
2871 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
2872 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s70
2873 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s51
2874 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
2875 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s50
2876 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s69
2877 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s49
2878 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s14
2879 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s48
2880 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s68
2881 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s47
2882 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s13
2883 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s46
2884 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s67
2885 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s45
2886 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s12
2887 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
2888 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:224
2889 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208
2890 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s44
2891 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192
2892 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(3)
2893 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s66
2894 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s43
2895 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s11
2896 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s42
2897 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
2898 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2899 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s65
2900 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s41
2901 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
2902 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s40
2903 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160
2904 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2905 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s64
2906 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s39
2907 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
2908 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s38
2909 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
2910 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2911 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s63
2912 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s37
2913 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s8
2914 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s36
2915 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
2916 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2917 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s62
2918 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s35
2919 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
2920 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s34
2921 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
2922 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2923 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s61
2924 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s33
2925 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
2926 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s31
2927 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
2928 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2929 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s60
2930 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s30
2931 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
2932 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s29
2933 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
2934 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2935 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s59
2936 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s28
2937 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
2938 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s27
2939 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
2940 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2941 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s57
2942 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s26
2943 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s58
2944 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s24
2945 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
2946 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2947 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s55
2948 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s23
2949 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s56
2950 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s22
2951 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2952 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2953 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s53
2954 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s21
2955 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s54
2956 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s20
2957 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
2958 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
2959 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s52
2960 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s19
2961 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s25
2962 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
2963 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
2964 ; GFX6-NOHSA-NEXT:    s_endpgm
2966 ; GFX7-HSA-LABEL: constant_zextload_v64i8_to_v64i32:
2967 ; GFX7-HSA:       ; %bb.0:
2968 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
2969 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2970 ; GFX7-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2971 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2972 ; GFX7-HSA-NEXT:    s_lshr_b32 s18, s0, 24
2973 ; GFX7-HSA-NEXT:    s_bfe_u32 s19, s0, 0x80008
2974 ; GFX7-HSA-NEXT:    s_lshr_b32 s20, s1, 24
2975 ; GFX7-HSA-NEXT:    s_bfe_u32 s21, s1, 0x80008
2976 ; GFX7-HSA-NEXT:    s_lshr_b32 s22, s2, 24
2977 ; GFX7-HSA-NEXT:    s_bfe_u32 s23, s2, 0x80008
2978 ; GFX7-HSA-NEXT:    s_lshr_b32 s25, s3, 24
2979 ; GFX7-HSA-NEXT:    s_bfe_u32 s26, s3, 0x80008
2980 ; GFX7-HSA-NEXT:    s_lshr_b32 s28, s4, 24
2981 ; GFX7-HSA-NEXT:    s_bfe_u32 s29, s4, 0x80008
2982 ; GFX7-HSA-NEXT:    s_lshr_b32 s31, s5, 24
2983 ; GFX7-HSA-NEXT:    s_bfe_u32 s33, s5, 0x80008
2984 ; GFX7-HSA-NEXT:    s_lshr_b32 s35, s6, 24
2985 ; GFX7-HSA-NEXT:    s_bfe_u32 s36, s6, 0x80008
2986 ; GFX7-HSA-NEXT:    s_lshr_b32 s38, s7, 24
2987 ; GFX7-HSA-NEXT:    s_bfe_u32 s39, s7, 0x80008
2988 ; GFX7-HSA-NEXT:    s_lshr_b32 s41, s8, 24
2989 ; GFX7-HSA-NEXT:    s_bfe_u32 s42, s8, 0x80008
2990 ; GFX7-HSA-NEXT:    s_lshr_b32 s43, s9, 24
2991 ; GFX7-HSA-NEXT:    s_bfe_u32 s44, s9, 0x80008
2992 ; GFX7-HSA-NEXT:    s_lshr_b32 s45, s10, 24
2993 ; GFX7-HSA-NEXT:    s_bfe_u32 s46, s10, 0x80008
2994 ; GFX7-HSA-NEXT:    s_lshr_b32 s47, s11, 24
2995 ; GFX7-HSA-NEXT:    s_bfe_u32 s48, s11, 0x80008
2996 ; GFX7-HSA-NEXT:    s_lshr_b32 s49, s12, 24
2997 ; GFX7-HSA-NEXT:    s_bfe_u32 s50, s12, 0x80008
2998 ; GFX7-HSA-NEXT:    s_lshr_b32 s51, s13, 24
2999 ; GFX7-HSA-NEXT:    s_bfe_u32 s52, s13, 0x80008
3000 ; GFX7-HSA-NEXT:    s_lshr_b32 s53, s14, 24
3001 ; GFX7-HSA-NEXT:    s_bfe_u32 s54, s14, 0x80008
3002 ; GFX7-HSA-NEXT:    s_lshr_b32 s55, s15, 24
3003 ; GFX7-HSA-NEXT:    s_bfe_u32 s56, s15, 0x80008
3004 ; GFX7-HSA-NEXT:    s_and_b32 s24, s0, 0xff
3005 ; GFX7-HSA-NEXT:    s_bfe_u32 s0, s0, 0x80010
3006 ; GFX7-HSA-NEXT:    s_and_b32 s27, s1, 0xff
3007 ; GFX7-HSA-NEXT:    s_bfe_u32 s1, s1, 0x80010
3008 ; GFX7-HSA-NEXT:    s_and_b32 s30, s2, 0xff
3009 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
3010 ; GFX7-HSA-NEXT:    s_and_b32 s34, s3, 0xff
3011 ; GFX7-HSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
3012 ; GFX7-HSA-NEXT:    s_and_b32 s37, s4, 0xff
3013 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
3014 ; GFX7-HSA-NEXT:    s_and_b32 s40, s5, 0xff
3015 ; GFX7-HSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
3016 ; GFX7-HSA-NEXT:    s_and_b32 s57, s6, 0xff
3017 ; GFX7-HSA-NEXT:    s_bfe_u32 s58, s6, 0x80010
3018 ; GFX7-HSA-NEXT:    s_and_b32 s59, s7, 0xff
3019 ; GFX7-HSA-NEXT:    s_bfe_u32 s60, s7, 0x80010
3020 ; GFX7-HSA-NEXT:    s_and_b32 s61, s8, 0xff
3021 ; GFX7-HSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
3022 ; GFX7-HSA-NEXT:    s_and_b32 s62, s9, 0xff
3023 ; GFX7-HSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
3024 ; GFX7-HSA-NEXT:    s_and_b32 s63, s10, 0xff
3025 ; GFX7-HSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
3026 ; GFX7-HSA-NEXT:    s_and_b32 s64, s11, 0xff
3027 ; GFX7-HSA-NEXT:    s_bfe_u32 s11, s11, 0x80010
3028 ; GFX7-HSA-NEXT:    s_and_b32 s65, s12, 0xff
3029 ; GFX7-HSA-NEXT:    s_bfe_u32 s12, s12, 0x80010
3030 ; GFX7-HSA-NEXT:    s_and_b32 s66, s13, 0xff
3031 ; GFX7-HSA-NEXT:    s_bfe_u32 s13, s13, 0x80010
3032 ; GFX7-HSA-NEXT:    s_and_b32 s67, s14, 0xff
3033 ; GFX7-HSA-NEXT:    s_bfe_u32 s14, s14, 0x80010
3034 ; GFX7-HSA-NEXT:    s_and_b32 s68, s15, 0xff
3035 ; GFX7-HSA-NEXT:    s_bfe_u32 s15, s15, 0x80010
3036 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xf0
3037 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3038 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s7
3039 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s6
3040 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xe0
3041 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3042 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v25, s7
3043 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v24, s6
3044 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xd0
3045 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3046 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v27, s7
3047 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v26, s6
3048 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xc0
3049 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3050 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v29, s7
3051 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v28, s6
3052 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xb0
3053 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3054 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v31, s7
3055 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v30, s6
3056 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0xa0
3057 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3058 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v33, s7
3059 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v32, s6
3060 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x90
3061 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s67
3062 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s54
3063 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s14
3064 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s53
3065 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3066 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
3067 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v25, s7
3068 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v24, s6
3069 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x80
3070 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3071 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v35, s7
3072 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s68
3073 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s56
3074 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s15
3075 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s55
3076 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s66
3077 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s52
3078 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v10, s13
3079 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v11, s51
3080 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v12, s65
3081 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v13, s50
3082 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v14, s12
3083 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v15, s49
3084 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v16, s64
3085 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v17, s48
3086 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v18, s11
3087 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v19, s47
3088 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v34, s6
3089 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s61
3090 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s42
3091 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s8
3092 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s41
3093 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x70
3094 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v20, s63
3095 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v21, s46
3096 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
3097 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s10
3098 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s62
3099 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s45
3100 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s44
3101 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
3102 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s9
3103 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
3104 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s43
3105 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
3106 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
3107 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[0:3]
3108 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[34:35], v[4:7]
3109 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3110 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
3111 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s59
3112 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s39
3113 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s60
3114 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s38
3115 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
3116 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x60
3117 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3118 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3119 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
3120 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s57
3121 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s36
3122 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s58
3123 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s35
3124 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
3125 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x50
3126 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3127 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3128 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
3129 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s40
3130 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s33
3131 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
3132 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s31
3133 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
3134 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3135 ; GFX7-HSA-NEXT:    s_nop 0
3136 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
3137 ; GFX7-HSA-NEXT:    s_add_u32 s4, s16, 64
3138 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s17, 0
3139 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
3140 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s37
3141 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s29
3142 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s28
3143 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
3144 ; GFX7-HSA-NEXT:    s_add_u32 s4, s16, 48
3145 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3146 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s17, 0
3147 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
3148 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s34
3149 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s26
3150 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
3151 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s25
3152 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
3153 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3154 ; GFX7-HSA-NEXT:    s_nop 0
3155 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
3156 ; GFX7-HSA-NEXT:    s_add_u32 s2, s16, 32
3157 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s17, 0
3158 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
3159 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
3160 ; GFX7-HSA-NEXT:    s_add_u32 s2, s16, 16
3161 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s30
3162 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s23
3163 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s22
3164 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s17, 0
3165 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3166 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
3167 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s27
3168 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s21
3169 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s1
3170 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s20
3171 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
3172 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3173 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s16
3174 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s24
3175 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s19
3176 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
3177 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s18
3178 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s17
3179 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3180 ; GFX7-HSA-NEXT:    s_endpgm
3182 ; GFX8-NOHSA-LABEL: constant_zextload_v64i8_to_v64i32:
3183 ; GFX8-NOHSA:       ; %bb.0:
3184 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
3185 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3186 ; GFX8-NOHSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
3187 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3188 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s18, s0, 24
3189 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s19, s1, 24
3190 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s21, s2, 24
3191 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s23, s3, 24
3192 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s25, s4, 24
3193 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s27, s5, 24
3194 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s29, s6, 24
3195 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s33, s7, 24
3196 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s34, s8, 24
3197 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s35, s9, 24
3198 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s36, s10, 24
3199 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s37, s11, 24
3200 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s38, s12, 24
3201 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s39, s13, 24
3202 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s40, s14, 24
3203 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s30, s15, 24
3204 ; GFX8-NOHSA-NEXT:    s_and_b32 s20, s0, 0xff
3205 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s0
3206 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s0, s0, 0x80010
3207 ; GFX8-NOHSA-NEXT:    s_and_b32 s22, s1, 0xff
3208 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s1
3209 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s1, 0x80010
3210 ; GFX8-NOHSA-NEXT:    s_and_b32 s24, s2, 0xff
3211 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s2
3212 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
3213 ; GFX8-NOHSA-NEXT:    s_and_b32 s26, s3, 0xff
3214 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s3
3215 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
3216 ; GFX8-NOHSA-NEXT:    s_and_b32 s28, s4, 0xff
3217 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s4
3218 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
3219 ; GFX8-NOHSA-NEXT:    s_and_b32 s41, s5, 0xff
3220 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s42, s5, 0x80010
3221 ; GFX8-NOHSA-NEXT:    s_and_b32 s43, s6, 0xff
3222 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s44, s6, 0x80010
3223 ; GFX8-NOHSA-NEXT:    s_and_b32 s45, s7, 0xff
3224 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s46, s7, 0x80010
3225 ; GFX8-NOHSA-NEXT:    s_and_b32 s47, s8, 0xff
3226 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s48, s8, 0x80010
3227 ; GFX8-NOHSA-NEXT:    s_and_b32 s49, s9, 0xff
3228 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s50, s9, 0x80010
3229 ; GFX8-NOHSA-NEXT:    s_and_b32 s51, s10, 0xff
3230 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s52, s10, 0x80010
3231 ; GFX8-NOHSA-NEXT:    s_and_b32 s53, s11, 0xff
3232 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s54, s11, 0x80010
3233 ; GFX8-NOHSA-NEXT:    s_and_b32 s55, s12, 0xff
3234 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s56, s12, 0x80010
3235 ; GFX8-NOHSA-NEXT:    s_and_b32 s57, s13, 0xff
3236 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s58, s13, 0x80010
3237 ; GFX8-NOHSA-NEXT:    s_and_b32 s59, s14, 0xff
3238 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s60, s14, 0x80010
3239 ; GFX8-NOHSA-NEXT:    s_and_b32 s31, s15, 0xff
3240 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s15
3241 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s15, s15, 0x80010
3242 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s30
3243 ; GFX8-NOHSA-NEXT:    s_add_u32 s30, s16, 0xf0
3244 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s31
3245 ; GFX8-NOHSA-NEXT:    s_addc_u32 s31, s17, 0
3246 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s30
3247 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s15
3248 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s31
3249 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3250 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s28
3251 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s14
3252 ; GFX8-NOHSA-NEXT:    s_add_u32 s14, s16, 0xe0
3253 ; GFX8-NOHSA-NEXT:    s_addc_u32 s15, s17, 0
3254 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s14
3255 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s59
3256 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s60
3257 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s40
3258 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s15
3259 ; GFX8-NOHSA-NEXT:    s_add_u32 s14, s16, 0xd0
3260 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3261 ; GFX8-NOHSA-NEXT:    s_addc_u32 s15, s17, 0
3262 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s14
3263 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s13
3264 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s57
3265 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s58
3266 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s39
3267 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s15
3268 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3269 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s26
3270 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s12
3271 ; GFX8-NOHSA-NEXT:    s_add_u32 s12, s16, 0xc0
3272 ; GFX8-NOHSA-NEXT:    s_addc_u32 s13, s17, 0
3273 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s13
3274 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s12
3275 ; GFX8-NOHSA-NEXT:    s_add_u32 s12, s16, 0xb0
3276 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s55
3277 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s56
3278 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s38
3279 ; GFX8-NOHSA-NEXT:    s_addc_u32 s13, s17, 0
3280 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3281 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s13
3282 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s11
3283 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s53
3284 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s54
3285 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s37
3286 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s12
3287 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3288 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s24
3289 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s10
3290 ; GFX8-NOHSA-NEXT:    s_add_u32 s10, s16, 0xa0
3291 ; GFX8-NOHSA-NEXT:    s_addc_u32 s11, s17, 0
3292 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s11
3293 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s10
3294 ; GFX8-NOHSA-NEXT:    s_add_u32 s10, s16, 0x90
3295 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s51
3296 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s52
3297 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s36
3298 ; GFX8-NOHSA-NEXT:    s_addc_u32 s11, s17, 0
3299 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3300 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s11
3301 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s9
3302 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s49
3303 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s50
3304 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s35
3305 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s10
3306 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3307 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s22
3308 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s8
3309 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s16, 0x80
3310 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s17, 0
3311 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s9
3312 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s8
3313 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s16, 0x70
3314 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s47
3315 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s48
3316 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s34
3317 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s17, 0
3318 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3319 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s9
3320 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s7
3321 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s45
3322 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s46
3323 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s33
3324 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s8
3325 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3326 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s20
3327 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s6
3328 ; GFX8-NOHSA-NEXT:    s_add_u32 s6, s16, 0x60
3329 ; GFX8-NOHSA-NEXT:    s_addc_u32 s7, s17, 0
3330 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s7
3331 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s6
3332 ; GFX8-NOHSA-NEXT:    s_add_u32 s6, s16, 0x50
3333 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s43
3334 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s44
3335 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s29
3336 ; GFX8-NOHSA-NEXT:    s_addc_u32 s7, s17, 0
3337 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3338 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s7
3339 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s5
3340 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s41
3341 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s42
3342 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s27
3343 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s6
3344 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[14:15], v[10:13]
3345 ; GFX8-NOHSA-NEXT:    s_nop 0
3346 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
3347 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 64
3348 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
3349 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s5
3350 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s4
3351 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 48
3352 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s25
3353 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
3354 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
3355 ; GFX8-NOHSA-NEXT:    s_nop 0
3356 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
3357 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s3
3358 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s23
3359 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
3360 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
3361 ; GFX8-NOHSA-NEXT:    s_nop 0
3362 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
3363 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s16, 32
3364 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s17, 0
3365 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
3366 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s2
3367 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s16, 16
3368 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s21
3369 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s17, 0
3370 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
3371 ; GFX8-NOHSA-NEXT:    s_nop 0
3372 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s3
3373 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s1
3374 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s19
3375 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
3376 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
3377 ; GFX8-NOHSA-NEXT:    s_nop 0
3378 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s16
3379 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s0
3380 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
3381 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s17
3382 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3383 ; GFX8-NOHSA-NEXT:    s_endpgm
3385 ; EG-LABEL: constant_zextload_v64i8_to_v64i32:
3386 ; EG:       ; %bb.0:
3387 ; EG-NEXT:    ALU 0, @30, KC0[CB0:0-32], KC1[]
3388 ; EG-NEXT:    TEX 1 @22
3389 ; EG-NEXT:    ALU 59, @31, KC0[CB0:0-32], KC1[]
3390 ; EG-NEXT:    TEX 1 @26
3391 ; EG-NEXT:    ALU 88, @91, KC0[CB0:0-32], KC1[]
3392 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T50.X, 0
3393 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T49.X, 0
3394 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T47.X, 0
3395 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T32.X, 0
3396 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T44.X, 0
3397 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T42.X, 0
3398 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T40.X, 0
3399 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T33.X, 0
3400 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T37.X, 0
3401 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T35.X, 0
3402 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T31.X, 0
3403 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T22.X, 0
3404 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T29.X, 0
3405 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T27.X, 0
3406 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T25.X, 0
3407 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T23.X, 1
3408 ; EG-NEXT:    CF_END
3409 ; EG-NEXT:    Fetch clause starting at 22:
3410 ; EG-NEXT:     VTX_READ_128 T22.XYZW, T21.X, 16, #1
3411 ; EG-NEXT:     VTX_READ_128 T23.XYZW, T21.X, 0, #1
3412 ; EG-NEXT:    Fetch clause starting at 26:
3413 ; EG-NEXT:     VTX_READ_128 T32.XYZW, T21.X, 48, #1
3414 ; EG-NEXT:     VTX_READ_128 T33.XYZW, T21.X, 32, #1
3415 ; EG-NEXT:    ALU clause starting at 30:
3416 ; EG-NEXT:     MOV * T21.X, KC0[2].Z,
3417 ; EG-NEXT:    ALU clause starting at 31:
3418 ; EG-NEXT:     MOV * T0.W, literal.x,
3419 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
3420 ; EG-NEXT:     BFE_UINT * T19.Z, T23.X, literal.x, PV.W,
3421 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3422 ; EG-NEXT:     BFE_UINT T19.Y, T23.X, literal.x, T0.W,
3423 ; EG-NEXT:     BFE_UINT T20.Z, T23.Y, literal.y, T0.W,
3424 ; EG-NEXT:     LSHR * T19.W, T23.X, literal.z,
3425 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
3426 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
3427 ; EG-NEXT:     AND_INT T19.X, T23.X, literal.x,
3428 ; EG-NEXT:     BFE_UINT T20.Y, T23.Y, literal.y, T0.W,
3429 ; EG-NEXT:     LSHR * T23.X, KC0[2].Y, literal.z,
3430 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
3431 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
3432 ; EG-NEXT:     BFE_UINT T24.Z, T23.Z, literal.x, T0.W,
3433 ; EG-NEXT:     LSHR * T20.W, T23.Y, literal.y,
3434 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
3435 ; EG-NEXT:     AND_INT T20.X, T23.Y, literal.x,
3436 ; EG-NEXT:     BFE_UINT T24.Y, T23.Z, literal.y, T0.W,
3437 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
3438 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
3439 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3440 ; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
3441 ; EG-NEXT:     BFE_UINT T26.Z, T23.W, literal.y, T0.W,
3442 ; EG-NEXT:     LSHR T24.W, T23.Z, literal.z,
3443 ; EG-NEXT:     AND_INT * T24.X, T23.Z, literal.w,
3444 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3445 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3446 ; EG-NEXT:     BFE_UINT T26.Y, T23.W, literal.x, T0.W,
3447 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3448 ; EG-NEXT:    8(1.121039e-44), 32(4.484155e-44)
3449 ; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
3450 ; EG-NEXT:     BFE_UINT T28.Z, T22.X, literal.y, T0.W, BS:VEC_021/SCL_122
3451 ; EG-NEXT:     LSHR T26.W, T23.W, literal.z,
3452 ; EG-NEXT:     AND_INT * T26.X, T23.W, literal.w,
3453 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3454 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3455 ; EG-NEXT:     BFE_UINT T28.Y, T22.X, literal.x, T0.W,
3456 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3457 ; EG-NEXT:    8(1.121039e-44), 48(6.726233e-44)
3458 ; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
3459 ; EG-NEXT:     BFE_UINT T30.Z, T22.Y, literal.y, T0.W,
3460 ; EG-NEXT:     LSHR T28.W, T22.X, literal.z,
3461 ; EG-NEXT:     AND_INT * T28.X, T22.X, literal.w,
3462 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3463 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3464 ; EG-NEXT:     BFE_UINT T30.Y, T22.Y, literal.x, T0.W,
3465 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3466 ; EG-NEXT:    8(1.121039e-44), 64(8.968310e-44)
3467 ; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
3468 ; EG-NEXT:     LSHR T30.W, T22.Y, literal.y,
3469 ; EG-NEXT:     AND_INT * T30.X, T22.Y, literal.z,
3470 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
3471 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
3472 ; EG-NEXT:     BFE_UINT T21.Z, T22.Z, literal.x, T0.W,
3473 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3474 ; EG-NEXT:    16(2.242078e-44), 80(1.121039e-43)
3475 ; EG-NEXT:     LSHR T31.X, PV.W, literal.x,
3476 ; EG-NEXT:     BFE_UINT * T21.Y, T22.Z, literal.y, T0.W,
3477 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
3478 ; EG-NEXT:    ALU clause starting at 91:
3479 ; EG-NEXT:     BFE_UINT T34.Z, T22.W, literal.x, T0.W,
3480 ; EG-NEXT:     LSHR * T21.W, T22.Z, literal.y,
3481 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
3482 ; EG-NEXT:     AND_INT T21.X, T22.Z, literal.x,
3483 ; EG-NEXT:     BFE_UINT T34.Y, T22.W, literal.y, T0.W,
3484 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
3485 ; EG-NEXT:    255(3.573311e-43), 8(1.121039e-44)
3486 ; EG-NEXT:    96(1.345247e-43), 0(0.000000e+00)
3487 ; EG-NEXT:     LSHR T35.X, PV.W, literal.x,
3488 ; EG-NEXT:     BFE_UINT T36.Z, T33.X, literal.y, T0.W, BS:VEC_021/SCL_122
3489 ; EG-NEXT:     LSHR T34.W, T22.W, literal.z,
3490 ; EG-NEXT:     AND_INT * T34.X, T22.W, literal.w,
3491 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3492 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3493 ; EG-NEXT:     BFE_UINT T36.Y, T33.X, literal.x, T0.W,
3494 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3495 ; EG-NEXT:    8(1.121039e-44), 112(1.569454e-43)
3496 ; EG-NEXT:     LSHR T37.X, PV.W, literal.x,
3497 ; EG-NEXT:     BFE_UINT T38.Z, T33.Y, literal.y, T0.W,
3498 ; EG-NEXT:     LSHR T36.W, T33.X, literal.z,
3499 ; EG-NEXT:     AND_INT * T36.X, T33.X, literal.w,
3500 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3501 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3502 ; EG-NEXT:     BFE_UINT T38.Y, T33.Y, literal.x, T0.W,
3503 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3504 ; EG-NEXT:    8(1.121039e-44), 128(1.793662e-43)
3505 ; EG-NEXT:     LSHR T33.X, PV.W, literal.x,
3506 ; EG-NEXT:     BFE_UINT T39.Z, T33.Z, literal.y, T0.W,
3507 ; EG-NEXT:     LSHR T38.W, T33.Y, literal.z,
3508 ; EG-NEXT:     AND_INT * T38.X, T33.Y, literal.w,
3509 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3510 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3511 ; EG-NEXT:     BFE_UINT T39.Y, T33.Z, literal.x, T0.W,
3512 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3513 ; EG-NEXT:    8(1.121039e-44), 144(2.017870e-43)
3514 ; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
3515 ; EG-NEXT:     BFE_UINT T41.Z, T33.W, literal.y, T0.W,
3516 ; EG-NEXT:     LSHR T39.W, T33.Z, literal.z,
3517 ; EG-NEXT:     AND_INT * T39.X, T33.Z, literal.w,
3518 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3519 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3520 ; EG-NEXT:     BFE_UINT T41.Y, T33.W, literal.x, T0.W,
3521 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3522 ; EG-NEXT:    8(1.121039e-44), 160(2.242078e-43)
3523 ; EG-NEXT:     LSHR T42.X, PV.W, literal.x,
3524 ; EG-NEXT:     BFE_UINT T43.Z, T32.X, literal.y, T0.W, BS:VEC_021/SCL_122
3525 ; EG-NEXT:     LSHR T41.W, T33.W, literal.z,
3526 ; EG-NEXT:     AND_INT * T41.X, T33.W, literal.w,
3527 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3528 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3529 ; EG-NEXT:     BFE_UINT T43.Y, T32.X, literal.x, T0.W,
3530 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3531 ; EG-NEXT:    8(1.121039e-44), 176(2.466285e-43)
3532 ; EG-NEXT:     LSHR T44.X, PV.W, literal.x,
3533 ; EG-NEXT:     BFE_UINT T45.Z, T32.Y, literal.y, T0.W,
3534 ; EG-NEXT:     LSHR T43.W, T32.X, literal.z,
3535 ; EG-NEXT:     AND_INT * T43.X, T32.X, literal.w,
3536 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3537 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3538 ; EG-NEXT:     BFE_UINT T45.Y, T32.Y, literal.x, T0.W,
3539 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3540 ; EG-NEXT:    8(1.121039e-44), 192(2.690493e-43)
3541 ; EG-NEXT:     LSHR T32.X, PV.W, literal.x,
3542 ; EG-NEXT:     BFE_UINT T46.Z, T32.Z, literal.y, T0.W,
3543 ; EG-NEXT:     LSHR T45.W, T32.Y, literal.z,
3544 ; EG-NEXT:     AND_INT * T45.X, T32.Y, literal.w,
3545 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3546 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3547 ; EG-NEXT:     BFE_UINT T46.Y, T32.Z, literal.x, T0.W,
3548 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3549 ; EG-NEXT:    8(1.121039e-44), 208(2.914701e-43)
3550 ; EG-NEXT:     LSHR T47.X, PV.W, literal.x,
3551 ; EG-NEXT:     BFE_UINT T48.Z, T32.W, literal.y, T0.W,
3552 ; EG-NEXT:     LSHR T46.W, T32.Z, literal.z,
3553 ; EG-NEXT:     AND_INT * T46.X, T32.Z, literal.w,
3554 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3555 ; EG-NEXT:    24(3.363116e-44), 255(3.573311e-43)
3556 ; EG-NEXT:     BFE_UINT T48.Y, T32.W, literal.x, T0.W,
3557 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3558 ; EG-NEXT:    8(1.121039e-44), 224(3.138909e-43)
3559 ; EG-NEXT:     LSHR T49.X, PV.W, literal.x,
3560 ; EG-NEXT:     LSHR T48.W, T32.W, literal.y,
3561 ; EG-NEXT:     AND_INT * T48.X, T32.W, literal.z,
3562 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
3563 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
3564 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
3565 ; EG-NEXT:    240(3.363116e-43), 0(0.000000e+00)
3566 ; EG-NEXT:     LSHR * T50.X, PV.W, literal.x,
3567 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
3568   %load = load <64 x i8>, ptr addrspace(4) %in
3569   %ext = zext <64 x i8> %load to <64 x i32>
3570   store <64 x i32> %ext, ptr addrspace(1) %out
3571   ret void
3574 define amdgpu_kernel void @constant_sextload_v64i8_to_v64i32(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
3575 ; GFX6-NOHSA-LABEL: constant_sextload_v64i8_to_v64i32:
3576 ; GFX6-NOHSA:       ; %bb.0:
3577 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
3578 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3579 ; GFX6-NOHSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
3580 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3581 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s18, s0, 24
3582 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s19, s0, 0x80010
3583 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s20, s0, 0x80008
3584 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s21, s0
3585 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s22, s1, 24
3586 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s23, s1, 0x80010
3587 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s24, s1, 0x80008
3588 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s25, s1
3589 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s26, s2, 24
3590 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s27, s2, 0x80010
3591 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s28, s2, 0x80008
3592 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s29, s2
3593 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s30, s3, 24
3594 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s31, s3, 0x80010
3595 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s33, s3, 0x80008
3596 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s34, s3
3597 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s35, s4, 24
3598 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s36, s4, 0x80010
3599 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s37, s4, 0x80008
3600 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
3601 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s38, s5, 24
3602 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s39, s5, 0x80010
3603 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s40, s5, 0x80008
3604 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
3605 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s41, s6, 24
3606 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s42, s6, 0x80010
3607 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s43, s6, 0x80008
3608 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
3609 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s44, s7, 24
3610 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s45, s7, 0x80010
3611 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s46, s7, 0x80008
3612 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
3613 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s47, s8, 24
3614 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s48, s8, 0x80010
3615 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s49, s8, 0x80008
3616 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s8, s8
3617 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s50, s9, 24
3618 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s51, s9, 0x80010
3619 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s52, s9, 0x80008
3620 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s9, s9
3621 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s53, s10, 24
3622 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s54, s10, 0x80010
3623 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s55, s10, 0x80008
3624 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s10, s10
3625 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s56, s11, 24
3626 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s57, s11, 0x80010
3627 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s58, s11, 0x80008
3628 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s11, s11
3629 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s59, s12, 0x80010
3630 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s60, s12, 0x80008
3631 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s61, s12
3632 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s62, s13, 24
3633 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s63, s13, 0x80010
3634 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s64, s13, 0x80008
3635 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s65, s14, 24
3636 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s66, s14, 0x80010
3637 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s67, s14, 0x80008
3638 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s14, s14
3639 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s68, s15, 24
3640 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s69, s15, 0x80010
3641 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s70, s15, 0x80008
3642 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s15, s15
3643 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s13, s13
3644 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s12, s12, 24
3645 ; GFX6-NOHSA-NEXT:    s_mov_b32 s0, s16
3646 ; GFX6-NOHSA-NEXT:    s_mov_b32 s1, s17
3647 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
3648 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
3649 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s15
3650 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s70
3651 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s69
3652 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s68
3653 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s14
3654 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s67
3655 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s66
3656 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s65
3657 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s13
3658 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s64
3659 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s63
3660 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s62
3661 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s61
3662 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s60
3663 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s59
3664 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
3665 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:224
3666 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208
3667 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s12
3668 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192
3669 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(3)
3670 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
3671 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s58
3672 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s57
3673 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s56
3674 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
3675 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3676 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
3677 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s55
3678 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s54
3679 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s53
3680 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160
3681 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3682 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s9
3683 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s52
3684 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s51
3685 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s50
3686 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
3687 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3688 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
3689 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s49
3690 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s48
3691 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s47
3692 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
3693 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3694 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
3695 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s46
3696 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s45
3697 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s44
3698 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
3699 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3700 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
3701 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s43
3702 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s42
3703 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s41
3704 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
3705 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3706 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
3707 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s40
3708 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s39
3709 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s38
3710 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
3711 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3712 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
3713 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s37
3714 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s36
3715 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s35
3716 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
3717 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3718 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s34
3719 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s33
3720 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s31
3721 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s30
3722 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
3723 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3724 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s29
3725 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s28
3726 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s27
3727 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s26
3728 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
3729 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3730 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s25
3731 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s24
3732 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s23
3733 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s22
3734 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
3735 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
3736 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s21
3737 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s20
3738 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
3739 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
3740 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
3741 ; GFX6-NOHSA-NEXT:    s_endpgm
3743 ; GFX7-HSA-LABEL: constant_sextload_v64i8_to_v64i32:
3744 ; GFX7-HSA:       ; %bb.0:
3745 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
3746 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3747 ; GFX7-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
3748 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3749 ; GFX7-HSA-NEXT:    s_ashr_i32 s18, s0, 24
3750 ; GFX7-HSA-NEXT:    s_bfe_i32 s19, s0, 0x80010
3751 ; GFX7-HSA-NEXT:    s_bfe_i32 s20, s0, 0x80008
3752 ; GFX7-HSA-NEXT:    s_ashr_i32 s21, s1, 24
3753 ; GFX7-HSA-NEXT:    s_bfe_i32 s22, s1, 0x80010
3754 ; GFX7-HSA-NEXT:    s_bfe_i32 s23, s1, 0x80008
3755 ; GFX7-HSA-NEXT:    s_ashr_i32 s24, s2, 24
3756 ; GFX7-HSA-NEXT:    s_bfe_i32 s25, s2, 0x80010
3757 ; GFX7-HSA-NEXT:    s_bfe_i32 s26, s2, 0x80008
3758 ; GFX7-HSA-NEXT:    s_ashr_i32 s27, s3, 24
3759 ; GFX7-HSA-NEXT:    s_bfe_i32 s28, s3, 0x80010
3760 ; GFX7-HSA-NEXT:    s_bfe_i32 s29, s3, 0x80008
3761 ; GFX7-HSA-NEXT:    s_ashr_i32 s30, s4, 24
3762 ; GFX7-HSA-NEXT:    s_bfe_i32 s31, s4, 0x80010
3763 ; GFX7-HSA-NEXT:    s_bfe_i32 s33, s4, 0x80008
3764 ; GFX7-HSA-NEXT:    s_ashr_i32 s34, s5, 24
3765 ; GFX7-HSA-NEXT:    s_bfe_i32 s35, s5, 0x80010
3766 ; GFX7-HSA-NEXT:    s_bfe_i32 s36, s5, 0x80008
3767 ; GFX7-HSA-NEXT:    s_ashr_i32 s37, s6, 24
3768 ; GFX7-HSA-NEXT:    s_bfe_i32 s38, s6, 0x80010
3769 ; GFX7-HSA-NEXT:    s_bfe_i32 s39, s6, 0x80008
3770 ; GFX7-HSA-NEXT:    s_ashr_i32 s40, s7, 24
3771 ; GFX7-HSA-NEXT:    s_bfe_i32 s41, s7, 0x80010
3772 ; GFX7-HSA-NEXT:    s_bfe_i32 s42, s7, 0x80008
3773 ; GFX7-HSA-NEXT:    s_ashr_i32 s43, s8, 24
3774 ; GFX7-HSA-NEXT:    s_bfe_i32 s44, s8, 0x80010
3775 ; GFX7-HSA-NEXT:    s_bfe_i32 s45, s8, 0x80008
3776 ; GFX7-HSA-NEXT:    s_ashr_i32 s47, s9, 24
3777 ; GFX7-HSA-NEXT:    s_bfe_i32 s48, s9, 0x80010
3778 ; GFX7-HSA-NEXT:    s_bfe_i32 s49, s9, 0x80008
3779 ; GFX7-HSA-NEXT:    s_ashr_i32 s51, s10, 24
3780 ; GFX7-HSA-NEXT:    s_bfe_i32 s52, s10, 0x80010
3781 ; GFX7-HSA-NEXT:    s_bfe_i32 s53, s10, 0x80008
3782 ; GFX7-HSA-NEXT:    s_ashr_i32 s54, s11, 24
3783 ; GFX7-HSA-NEXT:    s_bfe_i32 s55, s11, 0x80010
3784 ; GFX7-HSA-NEXT:    s_bfe_i32 s56, s11, 0x80008
3785 ; GFX7-HSA-NEXT:    s_ashr_i32 s57, s12, 24
3786 ; GFX7-HSA-NEXT:    s_bfe_i32 s58, s12, 0x80010
3787 ; GFX7-HSA-NEXT:    s_bfe_i32 s59, s12, 0x80008
3788 ; GFX7-HSA-NEXT:    s_ashr_i32 s60, s13, 24
3789 ; GFX7-HSA-NEXT:    s_bfe_i32 s61, s13, 0x80010
3790 ; GFX7-HSA-NEXT:    s_bfe_i32 s62, s13, 0x80008
3791 ; GFX7-HSA-NEXT:    s_ashr_i32 s63, s14, 24
3792 ; GFX7-HSA-NEXT:    s_bfe_i32 s64, s14, 0x80010
3793 ; GFX7-HSA-NEXT:    s_bfe_i32 s65, s14, 0x80008
3794 ; GFX7-HSA-NEXT:    s_ashr_i32 s66, s15, 24
3795 ; GFX7-HSA-NEXT:    s_bfe_i32 s67, s15, 0x80010
3796 ; GFX7-HSA-NEXT:    s_bfe_i32 s68, s15, 0x80008
3797 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s46, s8
3798 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xf0
3799 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s50, s9
3800 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
3801 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s9
3802 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s8
3803 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xe0
3804 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
3805 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v25, s9
3806 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v24, s8
3807 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xd0
3808 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
3809 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v27, s9
3810 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v26, s8
3811 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xc0
3812 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
3813 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v29, s9
3814 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v28, s8
3815 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xb0
3816 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
3817 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v31, s9
3818 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v30, s8
3819 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0xa0
3820 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
3821 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v33, s9
3822 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s14, s14
3823 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v32, s8
3824 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0x90
3825 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s14
3826 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s65
3827 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s64
3828 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s63
3829 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
3830 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
3831 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v25, s9
3832 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v24, s8
3833 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0x80
3834 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
3835 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s11, s11
3836 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s12, s12
3837 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s13, s13
3838 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s15, s15
3839 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v35, s9
3840 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s10, s10
3841 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s15
3842 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s68
3843 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s67
3844 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s66
3845 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s13
3846 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s62
3847 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v10, s61
3848 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v11, s60
3849 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v12, s12
3850 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v13, s59
3851 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v14, s58
3852 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v15, s57
3853 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v16, s11
3854 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v17, s56
3855 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v18, s55
3856 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v19, s54
3857 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v34, s8
3858 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s46
3859 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s45
3860 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s44
3861 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s43
3862 ; GFX7-HSA-NEXT:    s_add_u32 s8, s16, 0x70
3863 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s7
3864 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v20, s10
3865 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v21, s53
3866 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
3867 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s52
3868 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s50
3869 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s51
3870 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s49
3871 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
3872 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s48
3873 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
3874 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s47
3875 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
3876 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
3877 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[0:3]
3878 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[34:35], v[4:7]
3879 ; GFX7-HSA-NEXT:    s_addc_u32 s9, s17, 0
3880 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s8
3881 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s6, s6
3882 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
3883 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s42
3884 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s41
3885 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s40
3886 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s9
3887 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3888 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s5, s5
3889 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
3890 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x60
3891 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3892 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
3893 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s39
3894 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s38
3895 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s37
3896 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
3897 ; GFX7-HSA-NEXT:    s_add_u32 s6, s16, 0x50
3898 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3899 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s17, 0
3900 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
3901 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s4, s4
3902 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
3903 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s36
3904 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s35
3905 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s34
3906 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
3907 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3908 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s3, s3
3909 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
3910 ; GFX7-HSA-NEXT:    s_add_u32 s4, s16, 64
3911 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s17, 0
3912 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
3913 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s33
3914 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s31
3915 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s30
3916 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
3917 ; GFX7-HSA-NEXT:    s_add_u32 s4, s16, 48
3918 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3919 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s17, 0
3920 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
3921 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s2, s2
3922 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
3923 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s29
3924 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s28
3925 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s27
3926 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
3927 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3928 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s1
3929 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
3930 ; GFX7-HSA-NEXT:    s_add_u32 s2, s16, 32
3931 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s17, 0
3932 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
3933 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
3934 ; GFX7-HSA-NEXT:    s_add_u32 s2, s16, 16
3935 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s26
3936 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s25
3937 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s24
3938 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s17, 0
3939 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3940 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
3941 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s1
3942 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s23
3943 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s22
3944 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s21
3945 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
3946 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s0, s0
3947 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3948 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s16
3949 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
3950 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s20
3951 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s19
3952 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s18
3953 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s17
3954 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3955 ; GFX7-HSA-NEXT:    s_endpgm
3957 ; GFX8-NOHSA-LABEL: constant_sextload_v64i8_to_v64i32:
3958 ; GFX8-NOHSA:       ; %bb.0:
3959 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
3960 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3961 ; GFX8-NOHSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
3962 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
3963 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v18, 8, s14
3964 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s18, s0, 24
3965 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s19, s0, 0x80010
3966 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s20, s1, 24
3967 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s21, s1, 0x80010
3968 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s22, s2, 24
3969 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s23, s2, 0x80010
3970 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s24, s3, 24
3971 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s25, s3, 0x80010
3972 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s26, s4, 24
3973 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s27, s4, 0x80010
3974 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s28, s5, 24
3975 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s29, s5, 0x80010
3976 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s30, s6, 24
3977 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s31, s6, 0x80010
3978 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s33, s7, 24
3979 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s34, s7, 0x80010
3980 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s35, s8, 24
3981 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s36, s8, 0x80010
3982 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s37, s9, 24
3983 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s38, s9, 0x80010
3984 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s39, s10, 24
3985 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s40, s10, 0x80010
3986 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s41, s11, 24
3987 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s42, s11, 0x80010
3988 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s43, s12, 24
3989 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s44, s12, 0x80010
3990 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s45, s13, 24
3991 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s46, s13, 0x80010
3992 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s47, s14, 24
3993 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s48, s14, 0x80010
3994 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s49, s14
3995 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s14, s15, 24
3996 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s50, s15, 0x80010
3997 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s15
3998 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s15, s15
3999 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s14
4000 ; GFX8-NOHSA-NEXT:    s_add_u32 s14, s16, 0xf0
4001 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s15
4002 ; GFX8-NOHSA-NEXT:    s_addc_u32 s15, s17, 0
4003 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s15
4004 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s14
4005 ; GFX8-NOHSA-NEXT:    s_add_u32 s14, s16, 0xe0
4006 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v13, v5, 0, 8
4007 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s50
4008 ; GFX8-NOHSA-NEXT:    s_addc_u32 s15, s17, 0
4009 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
4010 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s15
4011 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v20, 8, s12
4012 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v13, v18, 0, 8
4013 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s49
4014 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s48
4015 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s47
4016 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s14
4017 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s14, s12
4018 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s12, s13
4019 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
4020 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v19, 8, s13
4021 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s12
4022 ; GFX8-NOHSA-NEXT:    s_add_u32 s12, s16, 0xd0
4023 ; GFX8-NOHSA-NEXT:    s_addc_u32 s13, s17, 0
4024 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s13
4025 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s12
4026 ; GFX8-NOHSA-NEXT:    s_add_u32 s12, s16, 0xc0
4027 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v13, v19, 0, 8
4028 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s46
4029 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s45
4030 ; GFX8-NOHSA-NEXT:    s_addc_u32 s13, s17, 0
4031 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
4032 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s13
4033 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s12
4034 ; GFX8-NOHSA-NEXT:    s_add_u32 s12, s16, 0xb0
4035 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v13, v20, 0, 8
4036 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s14
4037 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s44
4038 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s43
4039 ; GFX8-NOHSA-NEXT:    s_addc_u32 s13, s17, 0
4040 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v11, 8, s11
4041 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s11, s11
4042 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
4043 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s13
4044 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s8
4045 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s4
4046 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v11, 0, 8
4047 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s11
4048 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s42
4049 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s41
4050 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s12
4051 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s11, s4
4052 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s4, s8
4053 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s8, s10
4054 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[15:16], v[11:14]
4055 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v8, 8, s9
4056 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s8
4057 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s16, 0xa0
4058 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s12, s9
4059 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s17, 0
4060 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s10
4061 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s9
4062 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v9, 0, 8
4063 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s40
4064 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s39
4065 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s8
4066 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s16, 0x90
4067 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[15:16], v[11:14]
4068 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s17, 0
4069 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v8, 0, 8
4070 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s8
4071 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s12
4072 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s38
4073 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s37
4074 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s9
4075 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s16, 0x80
4076 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[11:14]
4077 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s17, 0
4078 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v7, 0, 8
4079 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s8
4080 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s4
4081 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s36
4082 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s35
4083 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s9
4084 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s4, s7
4085 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[7:8], v[11:14]
4086 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s5
4087 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s4
4088 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 0x70
4089 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s8, s5
4090 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
4091 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s5
4092 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s7
4093 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
4094 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 0x60
4095 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v4, 0, 8
4096 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s34
4097 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s33
4098 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
4099 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[11:14]
4100 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s5
4101 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s6
4102 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
4103 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
4104 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 0x50
4105 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v2, 0, 8
4106 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s6
4107 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s31
4108 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s30
4109 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
4110 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[11:14]
4111 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s5
4112 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
4113 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 64
4114 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v12, v0, 0, 8
4115 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s8
4116 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s29
4117 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s28
4118 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
4119 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[11:14]
4120 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v21, 8, s2
4121 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s5
4122 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s4
4123 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s16, 48
4124 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
4125 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v7, v6, 0, 8
4126 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s11
4127 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s27
4128 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s26
4129 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s17, 0
4130 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v10, 8, s3
4131 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s3, s3
4132 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[11:12], v[6:9]
4133 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
4134 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s5
4135 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s16, 32
4136 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v10, v10, 0, 8
4137 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
4138 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s25
4139 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s24
4140 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s4
4141 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s17, 0
4142 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[9:12]
4143 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v5, v21, 0, 8
4144 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
4145 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s2
4146 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s16, 16
4147 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s23
4148 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s22
4149 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s17, 0
4150 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s1
4151 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s1, s1
4152 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
4153 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v3, v3, 0, 8
4154 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s3
4155 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s1
4156 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s21
4157 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s20
4158 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
4159 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s0
4160 ; GFX8-NOHSA-NEXT:    s_sext_i32_i8 s0, s0
4161 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
4162 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v1, v1, 0, 8
4163 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s16
4164 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
4165 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
4166 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
4167 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s17
4168 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4169 ; GFX8-NOHSA-NEXT:    s_endpgm
4171 ; EG-LABEL: constant_sextload_v64i8_to_v64i32:
4172 ; EG:       ; %bb.0:
4173 ; EG-NEXT:    ALU 0, @32, KC0[CB0:0-32], KC1[]
4174 ; EG-NEXT:    TEX 1 @24
4175 ; EG-NEXT:    ALU 40, @33, KC0[CB0:0-32], KC1[]
4176 ; EG-NEXT:    TEX 1 @28
4177 ; EG-NEXT:    ALU 76, @74, KC0[CB0:0-32], KC1[]
4178 ; EG-NEXT:    ALU 72, @151, KC0[CB0:0-32], KC1[]
4179 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T50.X, 0
4180 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T49.X, 0
4181 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T19.X, 0
4182 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T35.X, 0
4183 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T34.X, 0
4184 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T33.X, 0
4185 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T32.X, 0
4186 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T30.X, 0
4187 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T29.X, 0
4188 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T28.X, 0
4189 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T27.X, 0
4190 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T26.X, 0
4191 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T25.X, 0
4192 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T24.X, 0
4193 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T23.X, 0
4194 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T22.X, 1
4195 ; EG-NEXT:    CF_END
4196 ; EG-NEXT:    PAD
4197 ; EG-NEXT:    Fetch clause starting at 24:
4198 ; EG-NEXT:     VTX_READ_128 T20.XYZW, T21.X, 32, #1
4199 ; EG-NEXT:     VTX_READ_128 T19.XYZW, T21.X, 48, #1
4200 ; EG-NEXT:    Fetch clause starting at 28:
4201 ; EG-NEXT:     VTX_READ_128 T31.XYZW, T21.X, 0, #1
4202 ; EG-NEXT:     VTX_READ_128 T21.XYZW, T21.X, 16, #1
4203 ; EG-NEXT:    ALU clause starting at 32:
4204 ; EG-NEXT:     MOV * T21.X, KC0[2].Z,
4205 ; EG-NEXT:    ALU clause starting at 33:
4206 ; EG-NEXT:     LSHR T22.X, KC0[2].Y, literal.x,
4207 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4208 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4209 ; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
4210 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4211 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
4212 ; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
4213 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4214 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
4215 ; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
4216 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4217 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
4218 ; EG-NEXT:     LSHR T26.X, PV.W, literal.x,
4219 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4220 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
4221 ; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
4222 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4223 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
4224 ; EG-NEXT:     LSHR T28.X, PV.W, literal.x,
4225 ; EG-NEXT:     LSHR T0.Y, T19.W, literal.y,
4226 ; EG-NEXT:     LSHR T0.Z, T19.Z, literal.z,
4227 ; EG-NEXT:     LSHR * T0.W, T19.W, literal.w,
4228 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4229 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
4230 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.x,
4231 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
4232 ; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
4233 ; EG-NEXT:     LSHR T1.Y, T19.Z, literal.y,
4234 ; EG-NEXT:     LSHR T1.Z, T19.Y, literal.z,
4235 ; EG-NEXT:     LSHR * T1.W, T19.Z, literal.w,
4236 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4237 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
4238 ; EG-NEXT:     ADD_INT * T2.W, KC0[2].Y, literal.x,
4239 ; EG-NEXT:    128(1.793662e-43), 0(0.000000e+00)
4240 ; EG-NEXT:     LSHR T30.X, PV.W, literal.x,
4241 ; EG-NEXT:     LSHR T2.Y, T19.Y, literal.y,
4242 ; EG-NEXT:     LSHR T2.Z, T19.Y, literal.z,
4243 ; EG-NEXT:     LSHR T2.W, T19.X, literal.y,
4244 ; EG-NEXT:     LSHR * T3.W, T19.X, literal.z,
4245 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4246 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
4247 ; EG-NEXT:    ALU clause starting at 74:
4248 ; EG-NEXT:     LSHR T3.Y, T20.W, literal.x,
4249 ; EG-NEXT:     LSHR T3.Z, T20.W, literal.y,
4250 ; EG-NEXT:     LSHR T4.W, T20.Z, literal.x,
4251 ; EG-NEXT:     ADD_INT * T5.W, KC0[2].Y, literal.z,
4252 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
4253 ; EG-NEXT:    144(2.017870e-43), 0(0.000000e+00)
4254 ; EG-NEXT:     LSHR T32.X, PS, literal.x,
4255 ; EG-NEXT:     LSHR T4.Y, T20.Z, literal.y,
4256 ; EG-NEXT:     LSHR T4.Z, T20.Y, literal.z,
4257 ; EG-NEXT:     LSHR T5.W, T20.Y, literal.y,
4258 ; EG-NEXT:     ADD_INT * T6.W, KC0[2].Y, literal.w,
4259 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
4260 ; EG-NEXT:    16(2.242078e-44), 160(2.242078e-43)
4261 ; EG-NEXT:     LSHR T33.X, PS, literal.x,
4262 ; EG-NEXT:     LSHR T5.Y, T20.X, literal.y,
4263 ; EG-NEXT:     LSHR T5.Z, T20.X, literal.z,
4264 ; EG-NEXT:     LSHR T6.W, T21.W, literal.y,
4265 ; EG-NEXT:     ADD_INT * T7.W, KC0[2].Y, literal.w,
4266 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4267 ; EG-NEXT:    24(3.363116e-44), 176(2.466285e-43)
4268 ; EG-NEXT:     LSHR T34.X, PS, literal.x,
4269 ; EG-NEXT:     LSHR T6.Y, T21.W, literal.y,
4270 ; EG-NEXT:     LSHR T6.Z, T21.Z, literal.z,
4271 ; EG-NEXT:     LSHR T7.W, T21.Z, literal.y,
4272 ; EG-NEXT:     ADD_INT * T8.W, KC0[2].Y, literal.w,
4273 ; EG-NEXT:    2(2.802597e-45), 24(3.363116e-44)
4274 ; EG-NEXT:    16(2.242078e-44), 192(2.690493e-43)
4275 ; EG-NEXT:     LSHR T35.X, PS, literal.x,
4276 ; EG-NEXT:     LSHR T7.Y, T21.Y, literal.y,
4277 ; EG-NEXT:     LSHR T7.Z, T21.Y, literal.z,
4278 ; EG-NEXT:     LSHR T8.W, T21.X, literal.y,
4279 ; EG-NEXT:     LSHR * T9.W, T21.X, literal.z,
4280 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4281 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
4282 ; EG-NEXT:     BFE_INT T36.X, T31.X, 0.0, literal.x,
4283 ; EG-NEXT:     LSHR T8.Y, T31.W, literal.y,
4284 ; EG-NEXT:     LSHR T8.Z, T31.W, literal.z,
4285 ; EG-NEXT:     LSHR T10.W, T31.Z, literal.y,
4286 ; EG-NEXT:     LSHR * T11.W, T31.X, literal.z,
4287 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
4288 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
4289 ; EG-NEXT:     BFE_INT T37.X, T31.Y, 0.0, literal.x,
4290 ; EG-NEXT:     LSHR T9.Y, T31.Z, literal.y,
4291 ; EG-NEXT:     LSHR T9.Z, T31.Y, literal.y,
4292 ; EG-NEXT:     BFE_INT T36.W, PS, 0.0, literal.x,
4293 ; EG-NEXT:     LSHR * T11.W, T31.X, literal.z,
4294 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
4295 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4296 ; EG-NEXT:     BFE_INT T38.X, T31.Z, 0.0, literal.x,
4297 ; EG-NEXT:     LSHR T10.Y, T31.Y, literal.y,
4298 ; EG-NEXT:     BFE_INT T36.Z, PS, 0.0, literal.x,
4299 ; EG-NEXT:     BFE_INT T37.W, PV.Z, 0.0, literal.x,
4300 ; EG-NEXT:     LSHR * T11.W, T31.X, literal.x,
4301 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
4302 ; EG-NEXT:     BFE_INT T39.X, T31.W, 0.0, literal.x,
4303 ; EG-NEXT:     BFE_INT T36.Y, PS, 0.0, literal.x,
4304 ; EG-NEXT:     BFE_INT T37.Z, PV.Y, 0.0, literal.x,
4305 ; EG-NEXT:     BFE_INT T38.W, T9.Y, 0.0, literal.x,
4306 ; EG-NEXT:     LSHR * T11.W, T31.Y, literal.x,
4307 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4308 ; EG-NEXT:     BFE_INT T40.X, T21.X, 0.0, literal.x,
4309 ; EG-NEXT:     BFE_INT T37.Y, PS, 0.0, literal.x,
4310 ; EG-NEXT:     BFE_INT T38.Z, T10.W, 0.0, literal.x,
4311 ; EG-NEXT:     BFE_INT T39.W, T8.Z, 0.0, literal.x,
4312 ; EG-NEXT:     LSHR * T10.W, T31.Z, literal.x,
4313 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4314 ; EG-NEXT:     BFE_INT T31.X, T21.Y, 0.0, literal.x,
4315 ; EG-NEXT:     BFE_INT T38.Y, PS, 0.0, literal.x,
4316 ; EG-NEXT:     BFE_INT T39.Z, T8.Y, 0.0, literal.x, BS:VEC_120/SCL_212
4317 ; EG-NEXT:     BFE_INT T40.W, T9.W, 0.0, literal.x,
4318 ; EG-NEXT:     LSHR * T9.W, T31.W, literal.x,
4319 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4320 ; EG-NEXT:     BFE_INT T41.X, T21.Z, 0.0, literal.x,
4321 ; EG-NEXT:     BFE_INT T39.Y, PS, 0.0, literal.x,
4322 ; EG-NEXT:     BFE_INT T40.Z, T8.W, 0.0, literal.x,
4323 ; EG-NEXT:     BFE_INT * T31.W, T7.Z, 0.0, literal.x, BS:VEC_120/SCL_212
4324 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4325 ; EG-NEXT:    ALU clause starting at 151:
4326 ; EG-NEXT:     LSHR * T8.W, T21.X, literal.x,
4327 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4328 ; EG-NEXT:     BFE_INT T42.X, T21.W, 0.0, literal.x,
4329 ; EG-NEXT:     BFE_INT T40.Y, PV.W, 0.0, literal.x,
4330 ; EG-NEXT:     BFE_INT T31.Z, T7.Y, 0.0, literal.x,
4331 ; EG-NEXT:     BFE_INT T41.W, T7.W, 0.0, literal.x, BS:VEC_120/SCL_212
4332 ; EG-NEXT:     LSHR * T7.W, T21.Y, literal.x,
4333 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4334 ; EG-NEXT:     BFE_INT T43.X, T20.X, 0.0, literal.x,
4335 ; EG-NEXT:     BFE_INT T31.Y, PS, 0.0, literal.x,
4336 ; EG-NEXT:     BFE_INT T41.Z, T6.Z, 0.0, literal.x,
4337 ; EG-NEXT:     BFE_INT T42.W, T6.Y, 0.0, literal.x,
4338 ; EG-NEXT:     LSHR * T7.W, T21.Z, literal.x,
4339 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4340 ; EG-NEXT:     BFE_INT T21.X, T20.Y, 0.0, literal.x,
4341 ; EG-NEXT:     BFE_INT T41.Y, PS, 0.0, literal.x,
4342 ; EG-NEXT:     BFE_INT T42.Z, T6.W, 0.0, literal.x,
4343 ; EG-NEXT:     BFE_INT T43.W, T5.Z, 0.0, literal.x,
4344 ; EG-NEXT:     LSHR * T6.W, T21.W, literal.x,
4345 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4346 ; EG-NEXT:     BFE_INT T44.X, T20.Z, 0.0, literal.x,
4347 ; EG-NEXT:     BFE_INT T42.Y, PS, 0.0, literal.x,
4348 ; EG-NEXT:     BFE_INT T43.Z, T5.Y, 0.0, literal.x,
4349 ; EG-NEXT:     BFE_INT T21.W, T5.W, 0.0, literal.x,
4350 ; EG-NEXT:     LSHR * T5.W, T20.X, literal.x,
4351 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4352 ; EG-NEXT:     BFE_INT T45.X, T20.W, 0.0, literal.x,
4353 ; EG-NEXT:     BFE_INT T43.Y, PS, 0.0, literal.x,
4354 ; EG-NEXT:     BFE_INT T21.Z, T4.Z, 0.0, literal.x,
4355 ; EG-NEXT:     BFE_INT T44.W, T4.Y, 0.0, literal.x,
4356 ; EG-NEXT:     LSHR * T5.W, T20.Y, literal.x,
4357 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4358 ; EG-NEXT:     BFE_INT T46.X, T19.X, 0.0, literal.x,
4359 ; EG-NEXT:     BFE_INT T21.Y, PS, 0.0, literal.x,
4360 ; EG-NEXT:     BFE_INT T44.Z, T4.W, 0.0, literal.x,
4361 ; EG-NEXT:     BFE_INT T45.W, T3.Z, 0.0, literal.x,
4362 ; EG-NEXT:     LSHR * T4.W, T20.Z, literal.x,
4363 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4364 ; EG-NEXT:     BFE_INT T20.X, T19.Y, 0.0, literal.x,
4365 ; EG-NEXT:     BFE_INT T44.Y, PS, 0.0, literal.x,
4366 ; EG-NEXT:     BFE_INT T45.Z, T3.Y, 0.0, literal.x, BS:VEC_120/SCL_212
4367 ; EG-NEXT:     BFE_INT T46.W, T3.W, 0.0, literal.x,
4368 ; EG-NEXT:     LSHR * T3.W, T20.W, literal.x,
4369 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4370 ; EG-NEXT:     BFE_INT T47.X, T19.Z, 0.0, literal.x,
4371 ; EG-NEXT:     BFE_INT T45.Y, PS, 0.0, literal.x,
4372 ; EG-NEXT:     BFE_INT T46.Z, T2.W, 0.0, literal.x,
4373 ; EG-NEXT:     BFE_INT T20.W, T2.Z, 0.0, literal.x, BS:VEC_120/SCL_212
4374 ; EG-NEXT:     LSHR * T2.W, T19.X, literal.x,
4375 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4376 ; EG-NEXT:     BFE_INT T48.X, T19.W, 0.0, literal.x,
4377 ; EG-NEXT:     BFE_INT T46.Y, PS, 0.0, literal.x,
4378 ; EG-NEXT:     BFE_INT T20.Z, T2.Y, 0.0, literal.x,
4379 ; EG-NEXT:     BFE_INT T47.W, T1.W, 0.0, literal.x, BS:VEC_120/SCL_212
4380 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
4381 ; EG-NEXT:    8(1.121039e-44), 208(2.914701e-43)
4382 ; EG-NEXT:     LSHR T19.X, PS, literal.x,
4383 ; EG-NEXT:     BFE_INT T20.Y, T1.Z, 0.0, literal.y,
4384 ; EG-NEXT:     BFE_INT T47.Z, T1.Y, 0.0, literal.y,
4385 ; EG-NEXT:     BFE_INT T48.W, T0.W, 0.0, literal.y,
4386 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
4387 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
4388 ; EG-NEXT:    224(3.138909e-43), 0(0.000000e+00)
4389 ; EG-NEXT:     LSHR T49.X, PS, literal.x,
4390 ; EG-NEXT:     BFE_INT T47.Y, T0.Z, 0.0, literal.y,
4391 ; EG-NEXT:     BFE_INT T48.Z, T0.Y, 0.0, literal.y,
4392 ; EG-NEXT:     LSHR T0.W, T19.W, literal.y,
4393 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
4394 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
4395 ; EG-NEXT:    240(3.363116e-43), 0(0.000000e+00)
4396 ; EG-NEXT:     LSHR T50.X, PS, literal.x,
4397 ; EG-NEXT:     BFE_INT * T48.Y, PV.W, 0.0, literal.y,
4398 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
4399   %load = load <64 x i8>, ptr addrspace(4) %in
4400   %ext = sext <64 x i8> %load to <64 x i32>
4401   store <64 x i32> %ext, ptr addrspace(1) %out
4402   ret void
4405 define amdgpu_kernel void @constant_zextload_i8_to_i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4406 ; GFX6-NOHSA-LABEL: constant_zextload_i8_to_i64:
4407 ; GFX6-NOHSA:       ; %bb.0:
4408 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4409 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
4410 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
4411 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
4412 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
4413 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4414 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
4415 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
4416 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
4417 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
4418 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
4419 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
4420 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4421 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4422 ; GFX6-NOHSA-NEXT:    s_endpgm
4424 ; GFX7-HSA-LABEL: constant_zextload_i8_to_i64:
4425 ; GFX7-HSA:       ; %bb.0:
4426 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4427 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4428 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
4429 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
4430 ; GFX7-HSA-NEXT:    flat_load_ubyte v0, v[0:1]
4431 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
4432 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
4433 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
4434 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
4435 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4436 ; GFX7-HSA-NEXT:    s_endpgm
4438 ; GFX8-NOHSA-LABEL: constant_zextload_i8_to_i64:
4439 ; GFX8-NOHSA:       ; %bb.0:
4440 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4441 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, 0
4442 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4443 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
4444 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
4445 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
4446 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
4447 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
4448 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4449 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v2, 0xffff, v2
4450 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
4451 ; GFX8-NOHSA-NEXT:    s_endpgm
4453 ; EG-LABEL: constant_zextload_i8_to_i64:
4454 ; EG:       ; %bb.0:
4455 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4456 ; EG-NEXT:    TEX 0 @6
4457 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
4458 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4459 ; EG-NEXT:    CF_END
4460 ; EG-NEXT:    PAD
4461 ; EG-NEXT:    Fetch clause starting at 6:
4462 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
4463 ; EG-NEXT:    ALU clause starting at 8:
4464 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4465 ; EG-NEXT:    ALU clause starting at 9:
4466 ; EG-NEXT:     MOV * T0.Y, 0.0,
4467 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
4468 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4469   %a = load i8, ptr addrspace(4) %in
4470   %ext = zext i8 %a to i64
4471   store i64 %ext, ptr addrspace(1) %out
4472   ret void
4475 ; TODO: Why not 7 ?
4476 define amdgpu_kernel void @constant_sextload_i8_to_i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4477 ; GFX6-NOHSA-LABEL: constant_sextload_i8_to_i64:
4478 ; GFX6-NOHSA:       ; %bb.0:
4479 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4480 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
4481 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
4482 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
4483 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
4484 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4485 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
4486 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
4487 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
4488 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
4489 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
4490 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4491 ; GFX6-NOHSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4492 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4493 ; GFX6-NOHSA-NEXT:    s_endpgm
4495 ; GFX7-HSA-LABEL: constant_sextload_i8_to_i64:
4496 ; GFX7-HSA:       ; %bb.0:
4497 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4498 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4499 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
4500 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
4501 ; GFX7-HSA-NEXT:    flat_load_sbyte v0, v[0:1]
4502 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
4503 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
4504 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
4505 ; GFX7-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4506 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4507 ; GFX7-HSA-NEXT:    s_endpgm
4509 ; GFX8-NOHSA-LABEL: constant_sextload_i8_to_i64:
4510 ; GFX8-NOHSA:       ; %bb.0:
4511 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4512 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4513 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
4514 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
4515 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
4516 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
4517 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
4518 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4519 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 16
4520 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
4521 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
4522 ; GFX8-NOHSA-NEXT:    s_endpgm
4524 ; EG-LABEL: constant_sextload_i8_to_i64:
4525 ; EG:       ; %bb.0:
4526 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4527 ; EG-NEXT:    TEX 0 @6
4528 ; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
4529 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4530 ; EG-NEXT:    CF_END
4531 ; EG-NEXT:    PAD
4532 ; EG-NEXT:    Fetch clause starting at 6:
4533 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
4534 ; EG-NEXT:    ALU clause starting at 8:
4535 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4536 ; EG-NEXT:    ALU clause starting at 9:
4537 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
4538 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
4539 ; EG-NEXT:    8(1.121039e-44), 2(2.802597e-45)
4540 ; EG-NEXT:     ASHR * T0.Y, PV.X, literal.x,
4541 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
4542   %a = load i8, ptr addrspace(4) %in
4543   %ext = sext i8 %a to i64
4544   store i64 %ext, ptr addrspace(1) %out
4545   ret void
4548 define amdgpu_kernel void @constant_zextload_v1i8_to_v1i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4549 ; GFX6-NOHSA-LABEL: constant_zextload_v1i8_to_v1i64:
4550 ; GFX6-NOHSA:       ; %bb.0:
4551 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4552 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
4553 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
4554 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
4555 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
4556 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4557 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
4558 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
4559 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
4560 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
4561 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
4562 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
4563 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4564 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4565 ; GFX6-NOHSA-NEXT:    s_endpgm
4567 ; GFX7-HSA-LABEL: constant_zextload_v1i8_to_v1i64:
4568 ; GFX7-HSA:       ; %bb.0:
4569 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4570 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4571 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
4572 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
4573 ; GFX7-HSA-NEXT:    flat_load_ubyte v0, v[0:1]
4574 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
4575 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
4576 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
4577 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
4578 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4579 ; GFX7-HSA-NEXT:    s_endpgm
4581 ; GFX8-NOHSA-LABEL: constant_zextload_v1i8_to_v1i64:
4582 ; GFX8-NOHSA:       ; %bb.0:
4583 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4584 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4585 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
4586 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
4587 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v0, v[0:1]
4588 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s0
4589 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s1
4590 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
4591 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4592 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4593 ; GFX8-NOHSA-NEXT:    s_endpgm
4595 ; EG-LABEL: constant_zextload_v1i8_to_v1i64:
4596 ; EG:       ; %bb.0:
4597 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4598 ; EG-NEXT:    TEX 0 @6
4599 ; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
4600 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4601 ; EG-NEXT:    CF_END
4602 ; EG-NEXT:    PAD
4603 ; EG-NEXT:    Fetch clause starting at 6:
4604 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
4605 ; EG-NEXT:    ALU clause starting at 8:
4606 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4607 ; EG-NEXT:    ALU clause starting at 9:
4608 ; EG-NEXT:     MOV * T0.Y, 0.0,
4609 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
4610 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4611   %load = load <1 x i8>, ptr addrspace(4) %in
4612   %ext = zext <1 x i8> %load to <1 x i64>
4613   store <1 x i64> %ext, ptr addrspace(1) %out
4614   ret void
4617 ; TODO: Why not 7 ?
4618 define amdgpu_kernel void @constant_sextload_v1i8_to_v1i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4619 ; GFX6-NOHSA-LABEL: constant_sextload_v1i8_to_v1i64:
4620 ; GFX6-NOHSA:       ; %bb.0:
4621 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4622 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
4623 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
4624 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
4625 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
4626 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4627 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
4628 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
4629 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
4630 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
4631 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
4632 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4633 ; GFX6-NOHSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4634 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4635 ; GFX6-NOHSA-NEXT:    s_endpgm
4637 ; GFX7-HSA-LABEL: constant_sextload_v1i8_to_v1i64:
4638 ; GFX7-HSA:       ; %bb.0:
4639 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4640 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4641 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
4642 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
4643 ; GFX7-HSA-NEXT:    flat_load_sbyte v0, v[0:1]
4644 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
4645 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
4646 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
4647 ; GFX7-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4648 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4649 ; GFX7-HSA-NEXT:    s_endpgm
4651 ; GFX8-NOHSA-LABEL: constant_sextload_v1i8_to_v1i64:
4652 ; GFX8-NOHSA:       ; %bb.0:
4653 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4654 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4655 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
4656 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
4657 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
4658 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
4659 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
4660 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4661 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 16
4662 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
4663 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
4664 ; GFX8-NOHSA-NEXT:    s_endpgm
4666 ; EG-LABEL: constant_sextload_v1i8_to_v1i64:
4667 ; EG:       ; %bb.0:
4668 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4669 ; EG-NEXT:    TEX 0 @6
4670 ; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
4671 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4672 ; EG-NEXT:    CF_END
4673 ; EG-NEXT:    PAD
4674 ; EG-NEXT:    Fetch clause starting at 6:
4675 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
4676 ; EG-NEXT:    ALU clause starting at 8:
4677 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4678 ; EG-NEXT:    ALU clause starting at 9:
4679 ; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
4680 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
4681 ; EG-NEXT:    8(1.121039e-44), 2(2.802597e-45)
4682 ; EG-NEXT:     ASHR * T0.Y, PV.X, literal.x,
4683 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
4684   %load = load <1 x i8>, ptr addrspace(4) %in
4685   %ext = sext <1 x i8> %load to <1 x i64>
4686   store <1 x i64> %ext, ptr addrspace(1) %out
4687   ret void
4690 define amdgpu_kernel void @constant_zextload_v2i8_to_v2i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4691 ; GFX6-NOHSA-LABEL: constant_zextload_v2i8_to_v2i64:
4692 ; GFX6-NOHSA:       ; %bb.0:
4693 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4694 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
4695 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
4696 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
4697 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
4698 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4699 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
4700 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
4701 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
4702 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
4703 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
4704 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
4705 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4706 ; GFX6-NOHSA-NEXT:    v_lshrrev_b32_e32 v2, 8, v0
4707 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v0, 0xff, v0
4708 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
4709 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
4710 ; GFX6-NOHSA-NEXT:    s_endpgm
4712 ; GFX7-HSA-LABEL: constant_zextload_v2i8_to_v2i64:
4713 ; GFX7-HSA:       ; %bb.0:
4714 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4715 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4716 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
4717 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
4718 ; GFX7-HSA-NEXT:    flat_load_ushort v0, v[0:1]
4719 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
4720 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
4721 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
4722 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, v1
4723 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
4724 ; GFX7-HSA-NEXT:    v_lshrrev_b32_e32 v2, 8, v0
4725 ; GFX7-HSA-NEXT:    v_and_b32_e32 v0, 0xff, v0
4726 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4727 ; GFX7-HSA-NEXT:    s_endpgm
4729 ; GFX8-NOHSA-LABEL: constant_zextload_v2i8_to_v2i64:
4730 ; GFX8-NOHSA:       ; %bb.0:
4731 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4732 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4733 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
4734 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
4735 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
4736 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
4737 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
4738 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
4739 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
4740 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4741 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v0, 0xff, v2
4742 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e32 v2, 8, v2
4743 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4744 ; GFX8-NOHSA-NEXT:    s_endpgm
4746 ; EG-LABEL: constant_zextload_v2i8_to_v2i64:
4747 ; EG:       ; %bb.0:
4748 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
4749 ; EG-NEXT:    TEX 0 @6
4750 ; EG-NEXT:    ALU 14, @10, KC0[CB0:0-32], KC1[]
4751 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
4752 ; EG-NEXT:    CF_END
4753 ; EG-NEXT:    PAD
4754 ; EG-NEXT:    Fetch clause starting at 6:
4755 ; EG-NEXT:     VTX_READ_16 T4.X, T4.X, 0, #1
4756 ; EG-NEXT:    ALU clause starting at 8:
4757 ; EG-NEXT:     MOV * T0.Y, T2.X,
4758 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
4759 ; EG-NEXT:    ALU clause starting at 10:
4760 ; EG-NEXT:     AND_INT T0.W, T4.X, literal.x,
4761 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
4762 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
4763 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
4764 ; EG-NEXT:     MOV * T2.X, PV.W,
4765 ; EG-NEXT:     MOV T0.Y, PV.X,
4766 ; EG-NEXT:     MOV * T1.W, literal.x,
4767 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4768 ; EG-NEXT:     BFE_UINT * T4.Z, PV.Y, literal.x, PV.W,
4769 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4770 ; EG-NEXT:     AND_INT T4.X, T0.W, literal.x,
4771 ; EG-NEXT:     MOV T4.Y, 0.0,
4772 ; EG-NEXT:     MOV T4.W, 0.0,
4773 ; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
4774 ; EG-NEXT:    255(3.573311e-43), 2(2.802597e-45)
4775   %load = load <2 x i8>, ptr addrspace(4) %in
4776   %ext = zext <2 x i8> %load to <2 x i64>
4777   store <2 x i64> %ext, ptr addrspace(1) %out
4778   ret void
4781 define amdgpu_kernel void @constant_sextload_v2i8_to_v2i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4782 ; GFX6-NOHSA-LABEL: constant_sextload_v2i8_to_v2i64:
4783 ; GFX6-NOHSA:       ; %bb.0:
4784 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4785 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
4786 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
4787 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
4788 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
4789 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4790 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
4791 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
4792 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
4793 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
4794 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
4795 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4796 ; GFX6-NOHSA-NEXT:    v_lshrrev_b32_e32 v2, 8, v0
4797 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v0, v0, 0, 8
4798 ; GFX6-NOHSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4799 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
4800 ; GFX6-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
4801 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
4802 ; GFX6-NOHSA-NEXT:    s_endpgm
4804 ; GFX7-HSA-LABEL: constant_sextload_v2i8_to_v2i64:
4805 ; GFX7-HSA:       ; %bb.0:
4806 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4807 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4808 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
4809 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
4810 ; GFX7-HSA-NEXT:    flat_load_ushort v0, v[0:1]
4811 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
4812 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
4813 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
4814 ; GFX7-HSA-NEXT:    v_lshrrev_b32_e32 v2, 8, v0
4815 ; GFX7-HSA-NEXT:    v_bfe_i32 v0, v0, 0, 8
4816 ; GFX7-HSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
4817 ; GFX7-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4818 ; GFX7-HSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
4819 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4820 ; GFX7-HSA-NEXT:    s_endpgm
4822 ; GFX8-NOHSA-LABEL: constant_sextload_v2i8_to_v2i64:
4823 ; GFX8-NOHSA:       ; %bb.0:
4824 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4825 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4826 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
4827 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
4828 ; GFX8-NOHSA-NEXT:    flat_load_ushort v0, v[0:1]
4829 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
4830 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
4831 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
4832 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e32 v2, 8, v0
4833 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v0, v0, 0, 8
4834 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
4835 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4836 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
4837 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4838 ; GFX8-NOHSA-NEXT:    s_endpgm
4840 ; EG-LABEL: constant_sextload_v2i8_to_v2i64:
4841 ; EG:       ; %bb.0:
4842 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
4843 ; EG-NEXT:    TEX 0 @6
4844 ; EG-NEXT:    ALU 15, @10, KC0[CB0:0-32], KC1[]
4845 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
4846 ; EG-NEXT:    CF_END
4847 ; EG-NEXT:    PAD
4848 ; EG-NEXT:    Fetch clause starting at 6:
4849 ; EG-NEXT:     VTX_READ_16 T4.X, T4.X, 0, #1
4850 ; EG-NEXT:    ALU clause starting at 8:
4851 ; EG-NEXT:     MOV * T0.Y, T2.X,
4852 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
4853 ; EG-NEXT:    ALU clause starting at 10:
4854 ; EG-NEXT:     AND_INT T0.W, T4.X, literal.x,
4855 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
4856 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
4857 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
4858 ; EG-NEXT:     MOV * T2.X, PV.W,
4859 ; EG-NEXT:     MOV * T0.Y, PV.X,
4860 ; EG-NEXT:     BFE_INT * T4.X, T0.W, 0.0, literal.x,
4861 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4862 ; EG-NEXT:     ASHR T4.Y, PV.X, literal.x,
4863 ; EG-NEXT:     LSHR * T0.W, T0.Y, literal.y,
4864 ; EG-NEXT:    31(4.344025e-44), 8(1.121039e-44)
4865 ; EG-NEXT:     BFE_INT * T4.Z, PV.W, 0.0, literal.x,
4866 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4867 ; EG-NEXT:     LSHR T5.X, KC0[2].Y, literal.x,
4868 ; EG-NEXT:     ASHR * T4.W, PV.Z, literal.y,
4869 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
4870   %load = load <2 x i8>, ptr addrspace(4) %in
4871   %ext = sext <2 x i8> %load to <2 x i64>
4872   store <2 x i64> %ext, ptr addrspace(1) %out
4873   ret void
4876 define amdgpu_kernel void @constant_zextload_v4i8_to_v4i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4877 ; GFX6-NOHSA-LABEL: constant_zextload_v4i8_to_v4i64:
4878 ; GFX6-NOHSA:       ; %bb.0:
4879 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4880 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4881 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
4882 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
4883 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
4884 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
4885 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
4886 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4887 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s4, 0x80008
4888 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s4, 24
4889 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s4, 0x80010
4890 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
4891 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
4892 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
4893 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
4894 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
4895 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
4896 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
4897 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
4898 ; GFX6-NOHSA-NEXT:    s_endpgm
4900 ; GFX7-HSA-LABEL: constant_zextload_v4i8_to_v4i64:
4901 ; GFX7-HSA:       ; %bb.0:
4902 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4903 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
4904 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, v1
4905 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4906 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
4907 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4908 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s2, 0x80008
4909 ; GFX7-HSA-NEXT:    s_lshr_b32 s3, s2, 24
4910 ; GFX7-HSA-NEXT:    s_and_b32 s5, s2, 0xff
4911 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
4912 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
4913 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
4914 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
4915 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
4916 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
4917 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
4918 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4919 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
4920 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
4921 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
4922 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
4923 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4924 ; GFX7-HSA-NEXT:    s_endpgm
4926 ; GFX8-NOHSA-LABEL: constant_zextload_v4i8_to_v4i64:
4927 ; GFX8-NOHSA:       ; %bb.0:
4928 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4929 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
4930 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
4931 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4932 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
4933 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4934 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s3, s2, 24
4935 ; GFX8-NOHSA-NEXT:    s_and_b32 s4, s2, 0xff
4936 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s2
4937 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
4938 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
4939 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
4940 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s3
4941 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
4942 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
4943 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
4944 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4945 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
4946 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
4947 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v6
4948 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
4949 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4950 ; GFX8-NOHSA-NEXT:    s_endpgm
4952 ; EG-LABEL: constant_zextload_v4i8_to_v4i64:
4953 ; EG:       ; %bb.0:
4954 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4955 ; EG-NEXT:    TEX 0 @6
4956 ; EG-NEXT:    ALU 17, @9, KC0[CB0:0-32], KC1[]
4957 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T7.X, 0
4958 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T6.X, 1
4959 ; EG-NEXT:    CF_END
4960 ; EG-NEXT:    Fetch clause starting at 6:
4961 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
4962 ; EG-NEXT:    ALU clause starting at 8:
4963 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
4964 ; EG-NEXT:    ALU clause starting at 9:
4965 ; EG-NEXT:     MOV * T0.W, literal.x,
4966 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4967 ; EG-NEXT:     BFE_UINT T5.X, T4.X, literal.x, PV.W,
4968 ; EG-NEXT:     LSHR * T5.Z, T4.X, literal.y,
4969 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
4970 ; EG-NEXT:     MOV T5.Y, 0.0,
4971 ; EG-NEXT:     BFE_UINT * T4.Z, T4.X, literal.x, T0.W,
4972 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
4973 ; EG-NEXT:     AND_INT T4.X, T4.X, literal.x,
4974 ; EG-NEXT:     MOV T4.Y, 0.0,
4975 ; EG-NEXT:     MOV T5.W, 0.0,
4976 ; EG-NEXT:     MOV * T4.W, 0.0,
4977 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
4978 ; EG-NEXT:     LSHR T6.X, KC0[2].Y, literal.x,
4979 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4980 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4981 ; EG-NEXT:     LSHR * T7.X, PV.W, literal.x,
4982 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4983   %load = load <4 x i8>, ptr addrspace(4) %in
4984   %ext = zext <4 x i8> %load to <4 x i64>
4985   store <4 x i64> %ext, ptr addrspace(1) %out
4986   ret void
4989 define amdgpu_kernel void @constant_sextload_v4i8_to_v4i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
4990 ; GFX6-NOHSA-LABEL: constant_sextload_v4i8_to_v4i64:
4991 ; GFX6-NOHSA:       ; %bb.0:
4992 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4993 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4994 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
4995 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
4996 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
4997 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
4998 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s4, 16
4999 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s4, 24
5000 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s10, s4, 8
5001 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
5002 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
5003 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
5004 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
5005 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
5006 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
5007 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
5008 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s7
5009 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
5010 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
5011 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[2:5], off, s[0:3], 0 offset:16
5012 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5013 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
5014 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s11
5015 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5016 ; GFX6-NOHSA-NEXT:    s_endpgm
5018 ; GFX7-HSA-LABEL: constant_sextload_v4i8_to_v4i64:
5019 ; GFX7-HSA:       ; %bb.0:
5020 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5021 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5022 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
5023 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5024 ; GFX7-HSA-NEXT:    s_lshr_b32 s4, s2, 16
5025 ; GFX7-HSA-NEXT:    s_lshr_b32 s6, s2, 24
5026 ; GFX7-HSA-NEXT:    s_lshr_b32 s8, s2, 8
5027 ; GFX7-HSA-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x80000
5028 ; GFX7-HSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
5029 ; GFX7-HSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
5030 ; GFX7-HSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
5031 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
5032 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 16
5033 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s5
5034 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
5035 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
5036 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
5037 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s7
5038 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
5039 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5040 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
5041 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
5042 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
5043 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s8
5044 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s9
5045 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
5046 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5047 ; GFX7-HSA-NEXT:    s_endpgm
5049 ; GFX8-NOHSA-LABEL: constant_sextload_v4i8_to_v4i64:
5050 ; GFX8-NOHSA:       ; %bb.0:
5051 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5052 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5053 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
5054 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5055 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s4, s2, 16
5056 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s6, s2, 24
5057 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s2
5058 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x80000
5059 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
5060 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
5061 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s4
5062 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 16
5063 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v0, 0, 8
5064 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s5
5065 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
5066 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
5067 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s6
5068 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s7
5069 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
5070 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
5071 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5072 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
5073 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5074 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
5075 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
5076 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5077 ; GFX8-NOHSA-NEXT:    s_endpgm
5079 ; EG-LABEL: constant_sextload_v4i8_to_v4i64:
5080 ; EG:       ; %bb.0:
5081 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5082 ; EG-NEXT:    TEX 0 @6
5083 ; EG-NEXT:    ALU 18, @9, KC0[CB0:0-32], KC1[]
5084 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T7.X, 0
5085 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1
5086 ; EG-NEXT:    CF_END
5087 ; EG-NEXT:    Fetch clause starting at 6:
5088 ; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
5089 ; EG-NEXT:    ALU clause starting at 8:
5090 ; EG-NEXT:     MOV * T4.X, KC0[2].Z,
5091 ; EG-NEXT:    ALU clause starting at 9:
5092 ; EG-NEXT:     BFE_INT T5.X, T4.X, 0.0, literal.x,
5093 ; EG-NEXT:     ASHR T4.W, T4.X, literal.y,
5094 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.z,
5095 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
5096 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5097 ; EG-NEXT:     ASHR T5.Y, PV.X, literal.x,
5098 ; EG-NEXT:     ASHR T4.Z, T4.X, literal.y,
5099 ; EG-NEXT:     LSHR T0.W, T4.X, literal.z,
5100 ; EG-NEXT:     LSHR * T1.W, T4.X, literal.w,
5101 ; EG-NEXT:    31(4.344025e-44), 24(3.363116e-44)
5102 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
5103 ; EG-NEXT:     BFE_INT T4.X, PS, 0.0, literal.x,
5104 ; EG-NEXT:     BFE_INT T5.Z, PV.W, 0.0, literal.x,
5105 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5106 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
5107 ; EG-NEXT:     LSHR T7.X, PV.W, literal.x,
5108 ; EG-NEXT:     ASHR T4.Y, PV.X, literal.y,
5109 ; EG-NEXT:     ASHR * T5.W, PV.Z, literal.y,
5110 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5111   %load = load <4 x i8>, ptr addrspace(4) %in
5112   %ext = sext <4 x i8> %load to <4 x i64>
5113   store <4 x i64> %ext, ptr addrspace(1) %out
5114   ret void
5117 define amdgpu_kernel void @constant_zextload_v8i8_to_v8i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5118 ; GFX6-NOHSA-LABEL: constant_zextload_v8i8_to_v8i64:
5119 ; GFX6-NOHSA:       ; %bb.0:
5120 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5121 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5122 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
5123 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
5124 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5125 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
5126 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
5127 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5128 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s4, 24
5129 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s7, s5, 24
5130 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s8, s5, 0x80008
5131 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s9, s4, 0x80008
5132 ; GFX6-NOHSA-NEXT:    s_and_b32 s10, s4, 0xff
5133 ; GFX6-NOHSA-NEXT:    s_and_b32 s11, s5, 0xff
5134 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
5135 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
5136 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
5137 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
5138 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5139 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5140 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
5141 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
5142 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5143 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5144 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
5145 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s8
5146 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
5147 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5148 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
5149 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
5150 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5151 ; GFX6-NOHSA-NEXT:    s_endpgm
5153 ; GFX7-HSA-LABEL: constant_zextload_v8i8_to_v8i64:
5154 ; GFX7-HSA:       ; %bb.0:
5155 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5156 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
5157 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, v1
5158 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5159 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
5160 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5161 ; GFX7-HSA-NEXT:    s_lshr_b32 s4, s2, 24
5162 ; GFX7-HSA-NEXT:    s_lshr_b32 s5, s3, 24
5163 ; GFX7-HSA-NEXT:    s_bfe_u32 s6, s3, 0x80008
5164 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s2, 0x80008
5165 ; GFX7-HSA-NEXT:    s_and_b32 s8, s2, 0xff
5166 ; GFX7-HSA-NEXT:    s_and_b32 s9, s3, 0xff
5167 ; GFX7-HSA-NEXT:    s_bfe_u32 s10, s2, 0x80010
5168 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s3, 0x80010
5169 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
5170 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
5171 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5172 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5173 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5174 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
5175 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
5176 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5177 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5178 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5179 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5180 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
5181 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
5182 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
5183 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5184 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5185 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5186 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s9
5187 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
5188 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5189 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5190 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
5191 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
5192 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s7
5193 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
5194 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5195 ; GFX7-HSA-NEXT:    s_endpgm
5197 ; GFX8-NOHSA-LABEL: constant_zextload_v8i8_to_v8i64:
5198 ; GFX8-NOHSA:       ; %bb.0:
5199 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5200 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5201 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
5202 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5203 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
5204 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5205 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s4, s3, 24
5206 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s5, s2, 24
5207 ; GFX8-NOHSA-NEXT:    s_and_b32 s6, s3, 0xff
5208 ; GFX8-NOHSA-NEXT:    s_and_b32 s7, s2, 0xff
5209 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s2
5210 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s8, s2, 0x80010
5211 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s2, s3, 0x80010
5212 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5213 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 48
5214 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s3
5215 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5216 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
5217 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
5218 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
5219 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
5220 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5221 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5222 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
5223 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
5224 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
5225 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
5226 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5227 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
5228 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
5229 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s0, 32
5230 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
5231 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v7
5232 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s1, 0
5233 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5234 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
5235 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
5236 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v6
5237 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
5238 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5239 ; GFX8-NOHSA-NEXT:    s_endpgm
5241 ; EG-LABEL: constant_zextload_v8i8_to_v8i64:
5242 ; EG:       ; %bb.0:
5243 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
5244 ; EG-NEXT:    TEX 0 @8
5245 ; EG-NEXT:    ALU 34, @11, KC0[CB0:0-32], KC1[]
5246 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T12.X, 0
5247 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T11.X, 0
5248 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T10.X, 0
5249 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T9.X, 1
5250 ; EG-NEXT:    CF_END
5251 ; EG-NEXT:    Fetch clause starting at 8:
5252 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
5253 ; EG-NEXT:    ALU clause starting at 10:
5254 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
5255 ; EG-NEXT:    ALU clause starting at 11:
5256 ; EG-NEXT:     MOV * T0.W, literal.x,
5257 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5258 ; EG-NEXT:     BFE_UINT T6.X, T5.Y, literal.x, PV.W,
5259 ; EG-NEXT:     LSHR * T6.Z, T5.Y, literal.y,
5260 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
5261 ; EG-NEXT:     MOV T6.Y, 0.0,
5262 ; EG-NEXT:     BFE_UINT * T7.Z, T5.Y, literal.x, T0.W,
5263 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5264 ; EG-NEXT:     AND_INT T7.X, T5.Y, literal.x,
5265 ; EG-NEXT:     MOV * T7.Y, 0.0,
5266 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
5267 ; EG-NEXT:     BFE_UINT T8.X, T5.X, literal.x, T0.W,
5268 ; EG-NEXT:     LSHR * T8.Z, T5.X, literal.y,
5269 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
5270 ; EG-NEXT:     MOV T8.Y, 0.0,
5271 ; EG-NEXT:     BFE_UINT * T5.Z, T5.X, literal.x, T0.W,
5272 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5273 ; EG-NEXT:     AND_INT T5.X, T5.X, literal.x,
5274 ; EG-NEXT:     MOV T5.Y, 0.0,
5275 ; EG-NEXT:     MOV T6.W, 0.0,
5276 ; EG-NEXT:     MOV * T7.W, 0.0,
5277 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
5278 ; EG-NEXT:     MOV T8.W, 0.0,
5279 ; EG-NEXT:     MOV * T5.W, 0.0,
5280 ; EG-NEXT:     LSHR T9.X, KC0[2].Y, literal.x,
5281 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5282 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5283 ; EG-NEXT:     LSHR T10.X, PV.W, literal.x,
5284 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5285 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
5286 ; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
5287 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5288 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
5289 ; EG-NEXT:     LSHR * T12.X, PV.W, literal.x,
5290 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5291   %load = load <8 x i8>, ptr addrspace(4) %in
5292   %ext = zext <8 x i8> %load to <8 x i64>
5293   store <8 x i64> %ext, ptr addrspace(1) %out
5294   ret void
5297 define amdgpu_kernel void @constant_sextload_v8i8_to_v8i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5298 ; GFX6-NOHSA-LABEL: constant_sextload_v8i8_to_v8i64:
5299 ; GFX6-NOHSA:       ; %bb.0:
5300 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5301 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5302 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
5303 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
5304 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
5305 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5306 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s5, 16
5307 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s5, 8
5308 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s5
5309 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s12, s4, 16
5310 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s4, 24
5311 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s16, s4, 8
5312 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[18:19], s[4:5], 0x80000
5313 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
5314 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[4:5], s[4:5], 56
5315 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
5316 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
5317 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
5318 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
5319 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
5320 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s4
5321 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s5
5322 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s10
5323 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s11
5324 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s18
5325 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s19
5326 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
5327 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s7
5328 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5329 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s8
5330 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s9
5331 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32
5332 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(1)
5333 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s12
5334 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s13
5335 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s14
5336 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s15
5337 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5338 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s16
5339 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s17
5340 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0
5341 ; GFX6-NOHSA-NEXT:    s_endpgm
5343 ; GFX7-HSA-LABEL: constant_sextload_v8i8_to_v8i64:
5344 ; GFX7-HSA:       ; %bb.0:
5345 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5346 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5347 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
5348 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5349 ; GFX7-HSA-NEXT:    s_lshr_b32 s4, s3, 16
5350 ; GFX7-HSA-NEXT:    s_lshr_b32 s6, s3, 8
5351 ; GFX7-HSA-NEXT:    s_mov_b32 s8, s3
5352 ; GFX7-HSA-NEXT:    s_lshr_b32 s10, s2, 16
5353 ; GFX7-HSA-NEXT:    s_lshr_b32 s12, s2, 24
5354 ; GFX7-HSA-NEXT:    s_lshr_b32 s14, s2, 8
5355 ; GFX7-HSA-NEXT:    s_bfe_i64 s[16:17], s[2:3], 0x80000
5356 ; GFX7-HSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
5357 ; GFX7-HSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
5358 ; GFX7-HSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
5359 ; GFX7-HSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
5360 ; GFX7-HSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
5361 ; GFX7-HSA-NEXT:    s_ashr_i64 s[2:3], s[2:3], 56
5362 ; GFX7-HSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
5363 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
5364 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
5365 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s3
5366 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5367 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5368 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5369 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 32
5370 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
5371 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s5
5372 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5373 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5374 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5375 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5376 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
5377 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
5378 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s9
5379 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
5380 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s7
5381 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5382 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5383 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5384 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
5385 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s11
5386 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s12
5387 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s13
5388 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5389 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5390 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
5391 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s16
5392 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
5393 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s14
5394 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s15
5395 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
5396 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5397 ; GFX7-HSA-NEXT:    s_endpgm
5399 ; GFX8-NOHSA-LABEL: constant_sextload_v8i8_to_v8i64:
5400 ; GFX8-NOHSA:       ; %bb.0:
5401 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5402 ; GFX8-NOHSA-NEXT:    s_mov_b32 s5, 0
5403 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5404 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
5405 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5406 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s6, s3, 16
5407 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s8, s2, 16
5408 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s2, 24
5409 ; GFX8-NOHSA-NEXT:    s_mov_b32 s4, s3
5410 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s2
5411 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s3
5412 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[2:3], 0x80000
5413 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
5414 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
5415 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
5416 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[2:3], s[2:3], 56
5417 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x80000
5418 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s2
5419 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 48
5420 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v1, 0, 8
5421 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v6, v0, 0, 8
5422 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s3
5423 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5424 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5425 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s6
5426 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s7
5427 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
5428 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
5429 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]
5430 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5431 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
5432 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s8
5433 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s9
5434 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s10
5435 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s11
5436 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
5437 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]
5438 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
5439 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
5440 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s0, 32
5441 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
5442 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s12
5443 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s13
5444 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s1, 0
5445 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
5446 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5447 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
5448 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
5449 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
5450 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
5451 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5452 ; GFX8-NOHSA-NEXT:    s_endpgm
5454 ; EG-LABEL: constant_sextload_v8i8_to_v8i64:
5455 ; EG:       ; %bb.0:
5456 ; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
5457 ; EG-NEXT:    TEX 0 @8
5458 ; EG-NEXT:    ALU 39, @11, KC0[CB0:0-32], KC1[]
5459 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T12.X, 0
5460 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T9.X, 0
5461 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T8.X, 0
5462 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T6.X, 1
5463 ; EG-NEXT:    CF_END
5464 ; EG-NEXT:    Fetch clause starting at 8:
5465 ; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
5466 ; EG-NEXT:    ALU clause starting at 10:
5467 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
5468 ; EG-NEXT:    ALU clause starting at 11:
5469 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.x,
5470 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5471 ; EG-NEXT:     BFE_INT T7.X, T5.Y, 0.0, literal.x,
5472 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5473 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
5474 ; EG-NEXT:     LSHR T8.X, PV.W, literal.x,
5475 ; EG-NEXT:     ASHR T7.Y, PV.X, literal.y,
5476 ; EG-NEXT:     LSHR T0.W, T5.Y, literal.z,
5477 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
5478 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5479 ; EG-NEXT:    8(1.121039e-44), 32(4.484155e-44)
5480 ; EG-NEXT:     LSHR T9.X, PS, literal.x,
5481 ; EG-NEXT:     BFE_INT T7.Z, PV.W, 0.0, literal.y,
5482 ; EG-NEXT:     ASHR * T10.W, T5.X, literal.z,
5483 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
5484 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5485 ; EG-NEXT:     BFE_INT T11.X, T5.X, 0.0, literal.x,
5486 ; EG-NEXT:     ASHR T10.Z, T5.X, literal.y,
5487 ; EG-NEXT:     LSHR T0.W, T5.X, literal.z,
5488 ; EG-NEXT:     ASHR * T5.W, T5.Y, literal.w,
5489 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
5490 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5491 ; EG-NEXT:     BFE_INT T10.X, PV.W, 0.0, literal.x,
5492 ; EG-NEXT:     ASHR T11.Y, PV.X, literal.y,
5493 ; EG-NEXT:     ASHR T5.Z, T5.Y, literal.z,
5494 ; EG-NEXT:     LSHR T0.W, T5.X, literal.x,
5495 ; EG-NEXT:     LSHR * T1.W, T5.Y, literal.w,
5496 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
5497 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
5498 ; EG-NEXT:     BFE_INT T5.X, PS, 0.0, literal.x,
5499 ; EG-NEXT:     ASHR T10.Y, PV.X, literal.y,
5500 ; EG-NEXT:     BFE_INT T11.Z, PV.W, 0.0, literal.x,
5501 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
5502 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
5503 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
5504 ; EG-NEXT:     LSHR T12.X, PV.W, literal.x,
5505 ; EG-NEXT:     ASHR T5.Y, PV.X, literal.y,
5506 ; EG-NEXT:     ASHR T11.W, PV.Z, literal.y,
5507 ; EG-NEXT:     ASHR * T7.W, T7.Z, literal.y,
5508 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5509   %load = load <8 x i8>, ptr addrspace(4) %in
5510   %ext = sext <8 x i8> %load to <8 x i64>
5511   store <8 x i64> %ext, ptr addrspace(1) %out
5512   ret void
5515 define amdgpu_kernel void @constant_zextload_v16i8_to_v16i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5516 ; GFX6-NOHSA-LABEL: constant_zextload_v16i8_to_v16i64:
5517 ; GFX6-NOHSA:       ; %bb.0:
5518 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5519 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5520 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5521 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
5522 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5523 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
5524 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
5525 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5526 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s5, 24
5527 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s9, s4, 24
5528 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s10, s7, 24
5529 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s11, s6, 24
5530 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s12, s6, 0x80008
5531 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s13, s7, 0x80008
5532 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s14, s4, 0x80008
5533 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s15, s5, 0x80008
5534 ; GFX6-NOHSA-NEXT:    s_and_b32 s16, s5, 0xff
5535 ; GFX6-NOHSA-NEXT:    s_and_b32 s17, s4, 0xff
5536 ; GFX6-NOHSA-NEXT:    s_and_b32 s18, s7, 0xff
5537 ; GFX6-NOHSA-NEXT:    s_and_b32 s19, s6, 0xff
5538 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
5539 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
5540 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
5541 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
5542 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
5543 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s11
5544 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
5545 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5546 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
5547 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
5548 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
5549 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5550 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
5551 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
5552 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5553 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5554 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
5555 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s8
5556 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5557 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5558 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s19
5559 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s12
5560 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
5561 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5562 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s18
5563 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s13
5564 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
5565 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5566 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s17
5567 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s14
5568 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5569 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5570 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s16
5571 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
5572 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
5573 ; GFX6-NOHSA-NEXT:    s_endpgm
5575 ; GFX7-HSA-LABEL: constant_zextload_v16i8_to_v16i64:
5576 ; GFX7-HSA:       ; %bb.0:
5577 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5578 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
5579 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, v1
5580 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5581 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5582 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5583 ; GFX7-HSA-NEXT:    s_lshr_b32 s8, s5, 24
5584 ; GFX7-HSA-NEXT:    s_lshr_b32 s9, s4, 24
5585 ; GFX7-HSA-NEXT:    s_lshr_b32 s10, s7, 24
5586 ; GFX7-HSA-NEXT:    s_lshr_b32 s2, s6, 24
5587 ; GFX7-HSA-NEXT:    s_bfe_u32 s11, s6, 0x80008
5588 ; GFX7-HSA-NEXT:    s_bfe_u32 s12, s7, 0x80008
5589 ; GFX7-HSA-NEXT:    s_bfe_u32 s13, s4, 0x80008
5590 ; GFX7-HSA-NEXT:    s_bfe_u32 s14, s5, 0x80008
5591 ; GFX7-HSA-NEXT:    s_and_b32 s15, s5, 0xff
5592 ; GFX7-HSA-NEXT:    s_and_b32 s16, s4, 0xff
5593 ; GFX7-HSA-NEXT:    s_and_b32 s17, s7, 0xff
5594 ; GFX7-HSA-NEXT:    s_and_b32 s18, s6, 0xff
5595 ; GFX7-HSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
5596 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
5597 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
5598 ; GFX7-HSA-NEXT:    s_bfe_u32 s3, s6, 0x80010
5599 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
5600 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x50
5601 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
5602 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5603 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5604 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5605 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x70
5606 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5607 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5608 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5609 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5610 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
5611 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
5612 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s10
5613 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5614 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5615 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5616 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5617 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 48
5618 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
5619 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s9
5620 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5621 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5622 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5623 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5624 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 64
5625 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
5626 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s8
5627 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5628 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5629 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5630 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5631 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 0x60
5632 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s18
5633 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s11
5634 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
5635 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5636 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
5637 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s17
5638 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s12
5639 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
5640 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5641 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
5642 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
5643 ; GFX7-HSA-NEXT:    s_add_u32 s0, s0, 32
5644 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s16
5645 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s13
5646 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s1, 0
5647 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5648 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
5649 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s15
5650 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s14
5651 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
5652 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5653 ; GFX7-HSA-NEXT:    s_endpgm
5655 ; GFX8-NOHSA-LABEL: constant_zextload_v16i8_to_v16i64:
5656 ; GFX8-NOHSA:       ; %bb.0:
5657 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5658 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
5659 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
5660 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5661 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5662 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5663 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s8, s5, 24
5664 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s2, s7, 24
5665 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s9, s6, 24
5666 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s4, 24
5667 ; GFX8-NOHSA-NEXT:    s_and_b32 s11, s4, 0xff
5668 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s4
5669 ; GFX8-NOHSA-NEXT:    s_and_b32 s12, s5, 0xff
5670 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s5
5671 ; GFX8-NOHSA-NEXT:    s_and_b32 s13, s7, 0xff
5672 ; GFX8-NOHSA-NEXT:    s_and_b32 s14, s6, 0xff
5673 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s6
5674 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
5675 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
5676 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
5677 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s3, s7, 0x80010
5678 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s2
5679 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 0x70
5680 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s3
5681 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5682 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
5683 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
5684 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 48
5685 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5686 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5687 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
5688 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
5689 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 0x50
5690 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
5691 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s8
5692 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5693 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5694 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
5695 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
5696 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
5697 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
5698 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s9
5699 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5700 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5701 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
5702 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
5703 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 64
5704 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
5705 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s10
5706 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5707 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5708 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
5709 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
5710 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 0x60
5711 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s14
5712 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v9
5713 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5714 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5715 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
5716 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v8, 8, s7
5717 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
5718 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 32
5719 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s13
5720 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v8
5721 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
5722 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5723 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
5724 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s12
5725 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v7
5726 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
5727 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5728 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
5729 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s11
5730 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v6
5731 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
5732 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5733 ; GFX8-NOHSA-NEXT:    s_endpgm
5735 ; EG-LABEL: constant_zextload_v16i8_to_v16i64:
5736 ; EG:       ; %bb.0:
5737 ; EG-NEXT:    ALU 0, @14, KC0[CB0:0-32], KC1[]
5738 ; EG-NEXT:    TEX 0 @12
5739 ; EG-NEXT:    ALU 68, @15, KC0[CB0:0-32], KC1[]
5740 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T22.X, 0
5741 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T21.X, 0
5742 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T20.X, 0
5743 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T19.X, 0
5744 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T18.X, 0
5745 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T17.X, 0
5746 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T16.X, 0
5747 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T15.X, 1
5748 ; EG-NEXT:    CF_END
5749 ; EG-NEXT:    Fetch clause starting at 12:
5750 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
5751 ; EG-NEXT:    ALU clause starting at 14:
5752 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
5753 ; EG-NEXT:    ALU clause starting at 15:
5754 ; EG-NEXT:     MOV * T0.W, literal.x,
5755 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5756 ; EG-NEXT:     BFE_UINT T8.X, T7.W, literal.x, PV.W,
5757 ; EG-NEXT:     LSHR * T8.Z, T7.W, literal.y,
5758 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
5759 ; EG-NEXT:     MOV T8.Y, 0.0,
5760 ; EG-NEXT:     BFE_UINT * T9.Z, T7.W, literal.x, T0.W,
5761 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5762 ; EG-NEXT:     AND_INT T9.X, T7.W, literal.x,
5763 ; EG-NEXT:     MOV * T9.Y, 0.0,
5764 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
5765 ; EG-NEXT:     BFE_UINT T10.X, T7.Z, literal.x, T0.W,
5766 ; EG-NEXT:     LSHR * T10.Z, T7.Z, literal.y,
5767 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
5768 ; EG-NEXT:     MOV T10.Y, 0.0,
5769 ; EG-NEXT:     BFE_UINT * T11.Z, T7.Z, literal.x, T0.W,
5770 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5771 ; EG-NEXT:     AND_INT T11.X, T7.Z, literal.x,
5772 ; EG-NEXT:     MOV * T11.Y, 0.0,
5773 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
5774 ; EG-NEXT:     BFE_UINT T12.X, T7.Y, literal.x, T0.W,
5775 ; EG-NEXT:     LSHR * T12.Z, T7.Y, literal.y,
5776 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
5777 ; EG-NEXT:     MOV T12.Y, 0.0,
5778 ; EG-NEXT:     BFE_UINT * T13.Z, T7.Y, literal.x, T0.W,
5779 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5780 ; EG-NEXT:     AND_INT T13.X, T7.Y, literal.x,
5781 ; EG-NEXT:     MOV * T13.Y, 0.0,
5782 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
5783 ; EG-NEXT:     BFE_UINT T14.X, T7.X, literal.x, T0.W,
5784 ; EG-NEXT:     LSHR * T14.Z, T7.X, literal.y,
5785 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
5786 ; EG-NEXT:     MOV T14.Y, 0.0,
5787 ; EG-NEXT:     BFE_UINT * T7.Z, T7.X, literal.x, T0.W,
5788 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
5789 ; EG-NEXT:     AND_INT T7.X, T7.X, literal.x,
5790 ; EG-NEXT:     MOV T7.Y, 0.0,
5791 ; EG-NEXT:     MOV T8.W, 0.0,
5792 ; EG-NEXT:     MOV * T9.W, 0.0,
5793 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
5794 ; EG-NEXT:     MOV T10.W, 0.0,
5795 ; EG-NEXT:     MOV * T11.W, 0.0,
5796 ; EG-NEXT:     MOV T12.W, 0.0,
5797 ; EG-NEXT:     MOV * T13.W, 0.0,
5798 ; EG-NEXT:     MOV T14.W, 0.0,
5799 ; EG-NEXT:     MOV * T7.W, 0.0,
5800 ; EG-NEXT:     LSHR T15.X, KC0[2].Y, literal.x,
5801 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5802 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5803 ; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
5804 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5805 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
5806 ; EG-NEXT:     LSHR T17.X, PV.W, literal.x,
5807 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5808 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
5809 ; EG-NEXT:     LSHR T18.X, PV.W, literal.x,
5810 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5811 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
5812 ; EG-NEXT:     LSHR T19.X, PV.W, literal.x,
5813 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5814 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
5815 ; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
5816 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5817 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
5818 ; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
5819 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5820 ; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
5821 ; EG-NEXT:     LSHR * T22.X, PV.W, literal.x,
5822 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5823   %load = load <16 x i8>, ptr addrspace(4) %in
5824   %ext = zext <16 x i8> %load to <16 x i64>
5825   store <16 x i64> %ext, ptr addrspace(1) %out
5826   ret void
5829 define amdgpu_kernel void @constant_sextload_v16i8_to_v16i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
5830 ; GFX6-NOHSA-LABEL: constant_sextload_v16i8_to_v16i64:
5831 ; GFX6-NOHSA:       ; %bb.0:
5832 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5833 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5834 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5835 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
5836 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
5837 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
5838 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s8, s7, 16
5839 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s10, s7, 8
5840 ; GFX6-NOHSA-NEXT:    s_mov_b32 s12, s7
5841 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s6, 16
5842 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s16, s6, 24
5843 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s18, s6, 8
5844 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s20, s5, 16
5845 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s22, s5, 8
5846 ; GFX6-NOHSA-NEXT:    s_mov_b32 s24, s5
5847 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s26, s4, 16
5848 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s28, s4, 24
5849 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s30, s4, 8
5850 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[34:35], s[4:5], 0x80000
5851 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[36:37], s[4:5], 56
5852 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[38:39], s[6:7], 0x80000
5853 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[40:41], s[6:7], 56
5854 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x80000
5855 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
5856 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[30:31], 0x80000
5857 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[28:29], 0x80000
5858 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
5859 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
5860 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
5861 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
5862 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
5863 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
5864 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
5865 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
5866 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s40
5867 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s41
5868 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s12
5869 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s13
5870 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s38
5871 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s39
5872 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s36
5873 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s37
5874 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s24
5875 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s25
5876 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v18, s34
5877 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v19, s35
5878 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
5879 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
5880 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
5881 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s10
5882 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s11
5883 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:96
5884 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(1)
5885 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s14
5886 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s15
5887 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s16
5888 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s17
5889 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
5890 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s18
5891 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s19
5892 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:64
5893 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
5894 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s20
5895 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s21
5896 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[10:13], off, s[0:3], 0 offset:48
5897 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v16, s22
5898 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v17, s23
5899 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:32
5900 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s26
5901 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s27
5902 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
5903 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s7
5904 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5905 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v20, s4
5906 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v21, s5
5907 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[18:21], off, s[0:3], 0
5908 ; GFX6-NOHSA-NEXT:    s_endpgm
5910 ; GFX7-HSA-LABEL: constant_sextload_v16i8_to_v16i64:
5911 ; GFX7-HSA:       ; %bb.0:
5912 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5913 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5914 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5915 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5916 ; GFX7-HSA-NEXT:    s_lshr_b32 s10, s7, 16
5917 ; GFX7-HSA-NEXT:    s_lshr_b32 s12, s7, 8
5918 ; GFX7-HSA-NEXT:    s_mov_b32 s14, s7
5919 ; GFX7-HSA-NEXT:    s_lshr_b32 s16, s6, 16
5920 ; GFX7-HSA-NEXT:    s_lshr_b32 s18, s6, 24
5921 ; GFX7-HSA-NEXT:    s_lshr_b32 s20, s6, 8
5922 ; GFX7-HSA-NEXT:    s_lshr_b32 s22, s5, 16
5923 ; GFX7-HSA-NEXT:    s_lshr_b32 s24, s5, 8
5924 ; GFX7-HSA-NEXT:    s_mov_b32 s26, s5
5925 ; GFX7-HSA-NEXT:    s_lshr_b32 s8, s4, 16
5926 ; GFX7-HSA-NEXT:    s_lshr_b32 s28, s4, 24
5927 ; GFX7-HSA-NEXT:    s_lshr_b32 s30, s4, 8
5928 ; GFX7-HSA-NEXT:    s_bfe_i64 s[2:3], s[4:5], 0x80000
5929 ; GFX7-HSA-NEXT:    s_ashr_i64 s[34:35], s[4:5], 56
5930 ; GFX7-HSA-NEXT:    s_bfe_i64 s[36:37], s[6:7], 0x80000
5931 ; GFX7-HSA-NEXT:    s_ashr_i64 s[38:39], s[6:7], 56
5932 ; GFX7-HSA-NEXT:    s_bfe_i64 s[4:5], s[30:31], 0x80000
5933 ; GFX7-HSA-NEXT:    s_bfe_i64 s[6:7], s[28:29], 0x80000
5934 ; GFX7-HSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x80000
5935 ; GFX7-HSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
5936 ; GFX7-HSA-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x80000
5937 ; GFX7-HSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
5938 ; GFX7-HSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
5939 ; GFX7-HSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
5940 ; GFX7-HSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
5941 ; GFX7-HSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
5942 ; GFX7-HSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
5943 ; GFX7-HSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
5944 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
5945 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 0x70
5946 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s11
5947 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
5948 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
5949 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s38
5950 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s39
5951 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
5952 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 0x60
5953 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5954 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
5955 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
5956 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s14
5957 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s15
5958 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s12
5959 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s13
5960 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
5961 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 0x50
5962 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5963 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
5964 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
5965 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s16
5966 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
5967 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s18
5968 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s19
5969 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
5970 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 64
5971 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5972 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
5973 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
5974 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s36
5975 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s37
5976 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s20
5977 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s21
5978 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
5979 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 48
5980 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5981 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
5982 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
5983 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s22
5984 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s23
5985 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s34
5986 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s35
5987 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
5988 ; GFX7-HSA-NEXT:    s_add_u32 s10, s0, 32
5989 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5990 ; GFX7-HSA-NEXT:    s_addc_u32 s11, s1, 0
5991 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s10
5992 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s26
5993 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s27
5994 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s24
5995 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s25
5996 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s11
5997 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5998 ; GFX7-HSA-NEXT:    s_nop 0
5999 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s6
6000 ; GFX7-HSA-NEXT:    s_add_u32 s6, s0, 16
6001 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s7
6002 ; GFX7-HSA-NEXT:    s_addc_u32 s7, s1, 0
6003 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s6
6004 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
6005 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s9
6006 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s7
6007 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6008 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
6009 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
6010 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
6011 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
6012 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s5
6013 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
6014 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6015 ; GFX7-HSA-NEXT:    s_endpgm
6017 ; GFX8-NOHSA-LABEL: constant_sextload_v16i8_to_v16i64:
6018 ; GFX8-NOHSA:       ; %bb.0:
6019 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
6020 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6021 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x0
6022 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6023 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s12, s11, 16
6024 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s14, s10, 16
6025 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s16, s10, 24
6026 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s18, s9, 16
6027 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s20, s8, 16
6028 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s22, s8, 24
6029 ; GFX8-NOHSA-NEXT:    s_mov_b32 s24, s11
6030 ; GFX8-NOHSA-NEXT:    s_mov_b32 s4, s9
6031 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s11
6032 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s10
6033 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s9
6034 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s8
6035 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[2:3], s[8:9], 0x80000
6036 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[10:11], 0x80000
6037 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[8:9], s[8:9], 56
6038 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[10:11], s[10:11], 56
6039 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
6040 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x80000
6041 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
6042 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
6043 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
6044 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
6045 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
6046 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
6047 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s10
6048 ; GFX8-NOHSA-NEXT:    s_add_u32 s10, s0, 0x70
6049 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v10, v1, 0, 8
6050 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v14, v0, 0, 8
6051 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s11
6052 ; GFX8-NOHSA-NEXT:    s_addc_u32 s11, s1, 0
6053 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
6054 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s12
6055 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s13
6056 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
6057 ; GFX8-NOHSA-NEXT:    s_add_u32 s10, s0, 0x50
6058 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
6059 ; GFX8-NOHSA-NEXT:    s_addc_u32 s11, s1, 0
6060 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
6061 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s14
6062 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s15
6063 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s16
6064 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s17
6065 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
6066 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
6067 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
6068 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s8
6069 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s0, 48
6070 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s9
6071 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s1, 0
6072 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
6073 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s18
6074 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s19
6075 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
6076 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s0, 16
6077 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
6078 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s1, 0
6079 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
6080 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s20
6081 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s21
6082 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v18, s22
6083 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v19, s23
6084 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
6085 ; GFX8-NOHSA-NEXT:    s_add_u32 s8, s0, 0x60
6086 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
6087 ; GFX8-NOHSA-NEXT:    s_addc_u32 s9, s1, 0
6088 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
6089 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s24
6090 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s25
6091 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
6092 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s6
6093 ; GFX8-NOHSA-NEXT:    s_add_u32 s6, s0, 64
6094 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[12:15]
6095 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s7
6096 ; GFX8-NOHSA-NEXT:    s_addc_u32 s7, s1, 0
6097 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
6098 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v6, v4, 0, 8
6099 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
6100 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s7
6101 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s4
6102 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 32
6103 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]
6104 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s5
6105 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6106 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
6107 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
6108 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
6109 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
6110 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
6111 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
6112 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
6113 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
6114 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
6115 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
6116 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6117 ; GFX8-NOHSA-NEXT:    s_endpgm
6119 ; EG-LABEL: constant_sextload_v16i8_to_v16i64:
6120 ; EG:       ; %bb.0:
6121 ; EG-NEXT:    ALU 0, @14, KC0[CB0:0-32], KC1[]
6122 ; EG-NEXT:    TEX 0 @12
6123 ; EG-NEXT:    ALU 78, @15, KC0[CB0:0-32], KC1[]
6124 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T22.X, 0
6125 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T16.X, 0
6126 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T15.X, 0
6127 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T12.X, 0
6128 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T11.X, 0
6129 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T10.X, 0
6130 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T9.X, 0
6131 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T8.X, 1
6132 ; EG-NEXT:    CF_END
6133 ; EG-NEXT:    Fetch clause starting at 12:
6134 ; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
6135 ; EG-NEXT:    ALU clause starting at 14:
6136 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
6137 ; EG-NEXT:    ALU clause starting at 15:
6138 ; EG-NEXT:     LSHR T8.X, KC0[2].Y, literal.x,
6139 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6140 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6141 ; EG-NEXT:     LSHR T9.X, PV.W, literal.x,
6142 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6143 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6144 ; EG-NEXT:     LSHR T10.X, PV.W, literal.x,
6145 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6146 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
6147 ; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
6148 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6149 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
6150 ; EG-NEXT:     LSHR * T12.X, PV.W, literal.x,
6151 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6152 ; EG-NEXT:     BFE_INT * T13.X, T7.W, 0.0, literal.x,
6153 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6154 ; EG-NEXT:     BFE_INT T14.X, T7.Y, 0.0, literal.x,
6155 ; EG-NEXT:     ASHR T13.Y, PV.X, literal.y,
6156 ; EG-NEXT:     LSHR T0.W, T7.W, literal.x,
6157 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
6158 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
6159 ; EG-NEXT:    80(1.121039e-43), 0(0.000000e+00)
6160 ; EG-NEXT:     LSHR T15.X, PS, literal.x,
6161 ; EG-NEXT:     ASHR T14.Y, PV.X, literal.y,
6162 ; EG-NEXT:     BFE_INT T13.Z, PV.W, 0.0, literal.z,
6163 ; EG-NEXT:     LSHR T0.W, T7.Y, literal.z,
6164 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
6165 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6166 ; EG-NEXT:    8(1.121039e-44), 96(1.345247e-43)
6167 ; EG-NEXT:     LSHR T16.X, PS, literal.x,
6168 ; EG-NEXT:     BFE_INT T14.Z, PV.W, 0.0, literal.y,
6169 ; EG-NEXT:     ASHR * T17.W, T7.X, literal.z,
6170 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
6171 ; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6172 ; EG-NEXT:     BFE_INT T18.X, T7.X, 0.0, literal.x,
6173 ; EG-NEXT:     ASHR T17.Z, T7.X, literal.y,
6174 ; EG-NEXT:     LSHR T0.W, T7.X, literal.z,
6175 ; EG-NEXT:     ASHR * T19.W, T7.Y, literal.w,
6176 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
6177 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6178 ; EG-NEXT:     BFE_INT T17.X, PV.W, 0.0, literal.x,
6179 ; EG-NEXT:     ASHR T18.Y, PV.X, literal.y,
6180 ; EG-NEXT:     ASHR T19.Z, T7.Y, literal.z,
6181 ; EG-NEXT:     LSHR T0.W, T7.X, literal.x,
6182 ; EG-NEXT:     LSHR * T1.W, T7.Y, literal.w,
6183 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
6184 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
6185 ; EG-NEXT:     BFE_INT T19.X, PS, 0.0, literal.x,
6186 ; EG-NEXT:     ASHR T17.Y, PV.X, literal.y,
6187 ; EG-NEXT:     BFE_INT T18.Z, PV.W, 0.0, literal.x,
6188 ; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.z,
6189 ; EG-NEXT:     ASHR * T20.W, T7.Z, literal.y,
6190 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
6191 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
6192 ; EG-NEXT:     BFE_INT T7.X, T7.Z, 0.0, literal.x,
6193 ; EG-NEXT:     ASHR T19.Y, PV.X, literal.y,
6194 ; EG-NEXT:     ASHR T20.Z, T7.Z, literal.z,
6195 ; EG-NEXT:     LSHR T1.W, T7.Z, literal.w,
6196 ; EG-NEXT:     ASHR * T21.W, T7.W, literal.y,
6197 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
6198 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
6199 ; EG-NEXT:     BFE_INT T20.X, PV.W, 0.0, literal.x,
6200 ; EG-NEXT:     ASHR T7.Y, PV.X, literal.y,
6201 ; EG-NEXT:     ASHR T21.Z, T7.W, literal.z,
6202 ; EG-NEXT:     LSHR T1.W, T7.Z, literal.x,
6203 ; EG-NEXT:     LSHR * T2.W, T7.W, literal.w,
6204 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
6205 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
6206 ; EG-NEXT:     BFE_INT T21.X, PS, 0.0, literal.x,
6207 ; EG-NEXT:     ASHR T20.Y, PV.X, literal.y,
6208 ; EG-NEXT:     BFE_INT T7.Z, PV.W, 0.0, literal.x,
6209 ; EG-NEXT:     ASHR T18.W, T18.Z, literal.y,
6210 ; EG-NEXT:     ASHR * T14.W, T14.Z, literal.y,
6211 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
6212 ; EG-NEXT:     LSHR T22.X, T0.W, literal.x,
6213 ; EG-NEXT:     ASHR T21.Y, PV.X, literal.y,
6214 ; EG-NEXT:     ASHR T7.W, PV.Z, literal.y,
6215 ; EG-NEXT:     ASHR * T13.W, T13.Z, literal.y,
6216 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6217   %load = load <16 x i8>, ptr addrspace(4) %in
6218   %ext = sext <16 x i8> %load to <16 x i64>
6219   store <16 x i64> %ext, ptr addrspace(1) %out
6220   ret void
6223 define amdgpu_kernel void @constant_zextload_v32i8_to_v32i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
6224 ; GFX6-NOHSA-LABEL: constant_zextload_v32i8_to_v32i64:
6225 ; GFX6-NOHSA:       ; %bb.0:
6226 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x9
6227 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6228 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
6229 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, 0xf000
6230 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
6231 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, -1
6232 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
6233 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6234 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s12, s0, 24
6235 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s13, s1, 24
6236 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s2, 24
6237 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s15, s3, 24
6238 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s16, s4, 24
6239 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s17, s5, 24
6240 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s18, s6, 24
6241 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s19, s7, 24
6242 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s20, s7, 0x80008
6243 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s21, s6, 0x80008
6244 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s22, s5, 0x80008
6245 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s23, s4, 0x80008
6246 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s24, s3, 0x80008
6247 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s25, s2, 0x80008
6248 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s26, s1, 0x80008
6249 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s27, s0, 0x80008
6250 ; GFX6-NOHSA-NEXT:    s_and_b32 s28, s0, 0xff
6251 ; GFX6-NOHSA-NEXT:    s_and_b32 s29, s1, 0xff
6252 ; GFX6-NOHSA-NEXT:    s_and_b32 s30, s2, 0xff
6253 ; GFX6-NOHSA-NEXT:    s_and_b32 s31, s3, 0xff
6254 ; GFX6-NOHSA-NEXT:    s_and_b32 s33, s4, 0xff
6255 ; GFX6-NOHSA-NEXT:    s_and_b32 s34, s5, 0xff
6256 ; GFX6-NOHSA-NEXT:    s_and_b32 s35, s6, 0xff
6257 ; GFX6-NOHSA-NEXT:    s_and_b32 s36, s7, 0xff
6258 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s0, s0, 0x80010
6259 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s1, s1, 0x80010
6260 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s2, s2, 0x80010
6261 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s3, s3, 0x80010
6262 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s4, s4, 0x80010
6263 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s5, s5, 0x80010
6264 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
6265 ; GFX6-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
6266 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
6267 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
6268 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:240
6269 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6270 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
6271 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s18
6272 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:208
6273 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6274 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
6275 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s17
6276 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:176
6277 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6278 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
6279 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s16
6280 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:144
6281 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6282 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s3
6283 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
6284 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:112
6285 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6286 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
6287 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s14
6288 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:80
6289 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6290 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s1
6291 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s13
6292 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:48
6293 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6294 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
6295 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s12
6296 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16
6297 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6298 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s36
6299 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s20
6300 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:224
6301 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6302 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s35
6303 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s21
6304 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:192
6305 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6306 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s34
6307 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s22
6308 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:160
6309 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6310 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s33
6311 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s23
6312 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:128
6313 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6314 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s31
6315 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s24
6316 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:96
6317 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6318 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s30
6319 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s25
6320 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:64
6321 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6322 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s29
6323 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s26
6324 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:32
6325 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6326 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s28
6327 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s27
6328 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
6329 ; GFX6-NOHSA-NEXT:    s_endpgm
6331 ; GFX7-HSA-LABEL: constant_zextload_v32i8_to_v32i64:
6332 ; GFX7-HSA:       ; %bb.0:
6333 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
6334 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, 0
6335 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, v1
6336 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6337 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
6338 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6339 ; GFX7-HSA-NEXT:    s_lshr_b32 s12, s4, 24
6340 ; GFX7-HSA-NEXT:    s_lshr_b32 s13, s5, 24
6341 ; GFX7-HSA-NEXT:    s_lshr_b32 s14, s6, 24
6342 ; GFX7-HSA-NEXT:    s_lshr_b32 s15, s7, 24
6343 ; GFX7-HSA-NEXT:    s_lshr_b32 s16, s8, 24
6344 ; GFX7-HSA-NEXT:    s_lshr_b32 s17, s9, 24
6345 ; GFX7-HSA-NEXT:    s_lshr_b32 s18, s10, 24
6346 ; GFX7-HSA-NEXT:    s_lshr_b32 s19, s11, 24
6347 ; GFX7-HSA-NEXT:    s_bfe_u32 s20, s11, 0x80008
6348 ; GFX7-HSA-NEXT:    s_bfe_u32 s21, s10, 0x80008
6349 ; GFX7-HSA-NEXT:    s_bfe_u32 s22, s9, 0x80008
6350 ; GFX7-HSA-NEXT:    s_bfe_u32 s23, s8, 0x80008
6351 ; GFX7-HSA-NEXT:    s_bfe_u32 s24, s7, 0x80008
6352 ; GFX7-HSA-NEXT:    s_bfe_u32 s25, s6, 0x80008
6353 ; GFX7-HSA-NEXT:    s_bfe_u32 s26, s5, 0x80008
6354 ; GFX7-HSA-NEXT:    s_bfe_u32 s2, s4, 0x80008
6355 ; GFX7-HSA-NEXT:    s_and_b32 s3, s4, 0xff
6356 ; GFX7-HSA-NEXT:    s_and_b32 s27, s5, 0xff
6357 ; GFX7-HSA-NEXT:    s_and_b32 s28, s6, 0xff
6358 ; GFX7-HSA-NEXT:    s_and_b32 s29, s7, 0xff
6359 ; GFX7-HSA-NEXT:    s_and_b32 s30, s8, 0xff
6360 ; GFX7-HSA-NEXT:    s_and_b32 s31, s9, 0xff
6361 ; GFX7-HSA-NEXT:    s_and_b32 s33, s10, 0xff
6362 ; GFX7-HSA-NEXT:    s_and_b32 s34, s11, 0xff
6363 ; GFX7-HSA-NEXT:    s_bfe_u32 s35, s4, 0x80010
6364 ; GFX7-HSA-NEXT:    s_bfe_u32 s36, s5, 0x80010
6365 ; GFX7-HSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
6366 ; GFX7-HSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
6367 ; GFX7-HSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
6368 ; GFX7-HSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
6369 ; GFX7-HSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
6370 ; GFX7-HSA-NEXT:    s_bfe_u32 s4, s11, 0x80010
6371 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
6372 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xf0
6373 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6374 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6375 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s19
6376 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6377 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xd0
6378 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6379 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6380 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6381 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
6382 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s18
6383 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6384 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xb0
6385 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6386 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6387 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6388 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s9
6389 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s17
6390 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6391 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0x90
6392 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6393 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6394 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6395 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s8
6396 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s16
6397 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6398 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0x70
6399 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6400 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6401 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6402 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
6403 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s15
6404 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6405 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0x50
6406 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6407 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6408 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6409 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
6410 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s14
6411 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6412 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 48
6413 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6414 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6415 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6416 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s36
6417 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s13
6418 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6419 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 16
6420 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6421 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6422 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6423 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s35
6424 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s12
6425 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6426 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xe0
6427 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6428 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6429 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6430 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s34
6431 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s20
6432 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6433 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xc0
6434 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6435 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6436 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6437 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s33
6438 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s21
6439 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6440 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0xa0
6441 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6442 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6443 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6444 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s31
6445 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s22
6446 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6447 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0x80
6448 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6449 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6450 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6451 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s30
6452 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s23
6453 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6454 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 0x60
6455 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6456 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6457 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6458 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s29
6459 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s24
6460 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6461 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 64
6462 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6463 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6464 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6465 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s28
6466 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s25
6467 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6468 ; GFX7-HSA-NEXT:    s_add_u32 s4, s0, 32
6469 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6470 ; GFX7-HSA-NEXT:    s_addc_u32 s5, s1, 0
6471 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s4
6472 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s27
6473 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s26
6474 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s5
6475 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6476 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
6477 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
6478 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
6479 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
6480 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6481 ; GFX7-HSA-NEXT:    s_endpgm
6483 ; GFX8-NOHSA-LABEL: constant_zextload_v32i8_to_v32i64:
6484 ; GFX8-NOHSA:       ; %bb.0:
6485 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
6486 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, 0
6487 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, v1
6488 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6489 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
6490 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6491 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s12, s5, 24
6492 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s13, s7, 24
6493 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s14, s9, 24
6494 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s15, s11, 24
6495 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s16, s10, 24
6496 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s17, s8, 24
6497 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s18, s6, 24
6498 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s19, s4, 24
6499 ; GFX8-NOHSA-NEXT:    s_and_b32 s2, s4, 0xff
6500 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s4
6501 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, s5, 0xff
6502 ; GFX8-NOHSA-NEXT:    s_and_b32 s20, s6, 0xff
6503 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s6
6504 ; GFX8-NOHSA-NEXT:    s_and_b32 s21, s7, 0xff
6505 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v7, 8, s7
6506 ; GFX8-NOHSA-NEXT:    s_and_b32 s22, s8, 0xff
6507 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v8, 8, s8
6508 ; GFX8-NOHSA-NEXT:    s_and_b32 s23, s9, 0xff
6509 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s9
6510 ; GFX8-NOHSA-NEXT:    s_and_b32 s24, s10, 0xff
6511 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v12, 8, s10
6512 ; GFX8-NOHSA-NEXT:    s_and_b32 s25, s11, 0xff
6513 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s26, s4, 0x80010
6514 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s6, s6, 0x80010
6515 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s8, s8, 0x80010
6516 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s10, s10, 0x80010
6517 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s27, s5, 0x80010
6518 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s7, s7, 0x80010
6519 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s9, s9, 0x80010
6520 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s11, 0x80010
6521 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
6522 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xf0
6523 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s5
6524 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6525 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
6526 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
6527 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xb0
6528 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
6529 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6530 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6531 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
6532 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
6533 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0x70
6534 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s9
6535 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s14
6536 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6537 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6538 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
6539 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
6540 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 48
6541 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s7
6542 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s13
6543 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6544 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6545 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
6546 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
6547 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xd0
6548 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s27
6549 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s12
6550 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6551 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6552 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
6553 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
6554 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0x90
6555 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
6556 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s16
6557 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6558 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6559 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
6560 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
6561 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0x50
6562 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
6563 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s17
6564 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6565 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6566 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
6567 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
6568 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 16
6569 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
6570 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s18
6571 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6572 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6573 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
6574 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
6575 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xe0
6576 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s26
6577 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s19
6578 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6579 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6580 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
6581 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v13, 8, s11
6582 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
6583 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xc0
6584 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s25
6585 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v13
6586 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6587 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6588 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s5
6589 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s4
6590 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0xa0
6591 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s24
6592 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v12
6593 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6594 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6595 ; GFX8-NOHSA-NEXT:    s_nop 0
6596 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v9
6597 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s5
6598 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s4
6599 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0x80
6600 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s23
6601 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6602 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[9:10], v[0:3]
6603 ; GFX8-NOHSA-NEXT:    s_nop 0
6604 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v8
6605 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s5
6606 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
6607 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 0x60
6608 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s22
6609 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6610 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]
6611 ; GFX8-NOHSA-NEXT:    s_nop 0
6612 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v7
6613 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s5
6614 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s4
6615 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 64
6616 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s21
6617 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6618 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[7:8], v[0:3]
6619 ; GFX8-NOHSA-NEXT:    s_nop 0
6620 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v6
6621 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s5
6622 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s4
6623 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s0, 32
6624 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s20
6625 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s1, 0
6626 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
6627 ; GFX8-NOHSA-NEXT:    s_nop 0
6628 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v5
6629 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s5
6630 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s3
6631 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s4
6632 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[5:6], v[0:3]
6633 ; GFX8-NOHSA-NEXT:    s_nop 0
6634 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, v4
6635 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
6636 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
6637 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
6638 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6639 ; GFX8-NOHSA-NEXT:    s_endpgm
6641 ; EG-LABEL: constant_zextload_v32i8_to_v32i64:
6642 ; EG:       ; %bb.0:
6643 ; EG-NEXT:    ALU 0, @26, KC0[CB0:0-32], KC1[]
6644 ; EG-NEXT:    TEX 1 @22
6645 ; EG-NEXT:    ALU 103, @27, KC0[CB0:0-32], KC1[]
6646 ; EG-NEXT:    ALU 33, @131, KC0[CB0:0-32], KC1[]
6647 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T42.X, 0
6648 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T41.X, 0
6649 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T40.X, 0
6650 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T39.X, 0
6651 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T38.X, 0
6652 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T37.X, 0
6653 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T36.X, 0
6654 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T35.X, 0
6655 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T34.X, 0
6656 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T33.X, 0
6657 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T32.X, 0
6658 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T31.X, 0
6659 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T30.X, 0
6660 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T29.X, 0
6661 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T28.X, 0
6662 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T27.X, 1
6663 ; EG-NEXT:    CF_END
6664 ; EG-NEXT:    PAD
6665 ; EG-NEXT:    Fetch clause starting at 22:
6666 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 0, #1
6667 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 16, #1
6668 ; EG-NEXT:    ALU clause starting at 26:
6669 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
6670 ; EG-NEXT:    ALU clause starting at 27:
6671 ; EG-NEXT:     MOV * T0.W, literal.x,
6672 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6673 ; EG-NEXT:     BFE_UINT T13.X, T11.W, literal.x, PV.W,
6674 ; EG-NEXT:     LSHR * T13.Z, T11.W, literal.y,
6675 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6676 ; EG-NEXT:     MOV T13.Y, 0.0,
6677 ; EG-NEXT:     BFE_UINT * T14.Z, T11.W, literal.x, T0.W,
6678 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6679 ; EG-NEXT:     AND_INT T14.X, T11.W, literal.x,
6680 ; EG-NEXT:     MOV * T14.Y, 0.0,
6681 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6682 ; EG-NEXT:     BFE_UINT T15.X, T11.Z, literal.x, T0.W,
6683 ; EG-NEXT:     LSHR * T15.Z, T11.Z, literal.y,
6684 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6685 ; EG-NEXT:     MOV T15.Y, 0.0,
6686 ; EG-NEXT:     BFE_UINT * T16.Z, T11.Z, literal.x, T0.W,
6687 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6688 ; EG-NEXT:     AND_INT T16.X, T11.Z, literal.x,
6689 ; EG-NEXT:     MOV * T16.Y, 0.0,
6690 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6691 ; EG-NEXT:     BFE_UINT T17.X, T11.Y, literal.x, T0.W,
6692 ; EG-NEXT:     LSHR * T17.Z, T11.Y, literal.y,
6693 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6694 ; EG-NEXT:     MOV T17.Y, 0.0,
6695 ; EG-NEXT:     BFE_UINT * T18.Z, T11.Y, literal.x, T0.W,
6696 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6697 ; EG-NEXT:     AND_INT T18.X, T11.Y, literal.x,
6698 ; EG-NEXT:     MOV * T18.Y, 0.0,
6699 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6700 ; EG-NEXT:     BFE_UINT T19.X, T11.X, literal.x, T0.W,
6701 ; EG-NEXT:     LSHR * T19.Z, T11.X, literal.y,
6702 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6703 ; EG-NEXT:     MOV T19.Y, 0.0,
6704 ; EG-NEXT:     BFE_UINT * T11.Z, T11.X, literal.x, T0.W,
6705 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6706 ; EG-NEXT:     AND_INT T11.X, T11.X, literal.x,
6707 ; EG-NEXT:     MOV * T11.Y, 0.0,
6708 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6709 ; EG-NEXT:     BFE_UINT T20.X, T12.W, literal.x, T0.W,
6710 ; EG-NEXT:     LSHR * T20.Z, T12.W, literal.y,
6711 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6712 ; EG-NEXT:     MOV T20.Y, 0.0,
6713 ; EG-NEXT:     BFE_UINT * T21.Z, T12.W, literal.x, T0.W,
6714 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6715 ; EG-NEXT:     AND_INT T21.X, T12.W, literal.x,
6716 ; EG-NEXT:     MOV * T21.Y, 0.0,
6717 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6718 ; EG-NEXT:     BFE_UINT T22.X, T12.Z, literal.x, T0.W,
6719 ; EG-NEXT:     LSHR * T22.Z, T12.Z, literal.y,
6720 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6721 ; EG-NEXT:     MOV T22.Y, 0.0,
6722 ; EG-NEXT:     BFE_UINT * T23.Z, T12.Z, literal.x, T0.W,
6723 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6724 ; EG-NEXT:     AND_INT T23.X, T12.Z, literal.x,
6725 ; EG-NEXT:     MOV * T23.Y, 0.0,
6726 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6727 ; EG-NEXT:     BFE_UINT T24.X, T12.Y, literal.x, T0.W,
6728 ; EG-NEXT:     LSHR * T24.Z, T12.Y, literal.y,
6729 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6730 ; EG-NEXT:     MOV T24.Y, 0.0,
6731 ; EG-NEXT:     BFE_UINT * T25.Z, T12.Y, literal.x, T0.W,
6732 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6733 ; EG-NEXT:     AND_INT T25.X, T12.Y, literal.x,
6734 ; EG-NEXT:     MOV * T25.Y, 0.0,
6735 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6736 ; EG-NEXT:     BFE_UINT T26.X, T12.X, literal.x, T0.W,
6737 ; EG-NEXT:     LSHR * T26.Z, T12.X, literal.y,
6738 ; EG-NEXT:    16(2.242078e-44), 24(3.363116e-44)
6739 ; EG-NEXT:     MOV T26.Y, 0.0,
6740 ; EG-NEXT:     BFE_UINT * T12.Z, T12.X, literal.x, T0.W,
6741 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
6742 ; EG-NEXT:     AND_INT T12.X, T12.X, literal.x,
6743 ; EG-NEXT:     MOV T12.Y, 0.0,
6744 ; EG-NEXT:     MOV T13.W, 0.0,
6745 ; EG-NEXT:     MOV * T14.W, 0.0,
6746 ; EG-NEXT:    255(3.573311e-43), 0(0.000000e+00)
6747 ; EG-NEXT:     MOV T15.W, 0.0,
6748 ; EG-NEXT:     MOV * T16.W, 0.0,
6749 ; EG-NEXT:     MOV T17.W, 0.0,
6750 ; EG-NEXT:     MOV * T18.W, 0.0,
6751 ; EG-NEXT:     MOV T19.W, 0.0,
6752 ; EG-NEXT:     MOV * T11.W, 0.0,
6753 ; EG-NEXT:     MOV T20.W, 0.0,
6754 ; EG-NEXT:     MOV * T21.W, 0.0,
6755 ; EG-NEXT:     MOV T22.W, 0.0,
6756 ; EG-NEXT:     MOV * T23.W, 0.0,
6757 ; EG-NEXT:     MOV T24.W, 0.0,
6758 ; EG-NEXT:     MOV * T25.W, 0.0,
6759 ; EG-NEXT:     MOV T26.W, 0.0,
6760 ; EG-NEXT:     MOV * T12.W, 0.0,
6761 ; EG-NEXT:     LSHR T27.X, KC0[2].Y, literal.x,
6762 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6763 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6764 ; EG-NEXT:     LSHR T28.X, PV.W, literal.x,
6765 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6766 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6767 ; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
6768 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6769 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
6770 ; EG-NEXT:     LSHR T30.X, PV.W, literal.x,
6771 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6772 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
6773 ; EG-NEXT:     LSHR * T31.X, PV.W, literal.x,
6774 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6775 ; EG-NEXT:    ALU clause starting at 131:
6776 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
6777 ; EG-NEXT:    80(1.121039e-43), 0(0.000000e+00)
6778 ; EG-NEXT:     LSHR T32.X, PV.W, literal.x,
6779 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6780 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
6781 ; EG-NEXT:     LSHR T33.X, PV.W, literal.x,
6782 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6783 ; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
6784 ; EG-NEXT:     LSHR T34.X, PV.W, literal.x,
6785 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6786 ; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
6787 ; EG-NEXT:     LSHR T35.X, PV.W, literal.x,
6788 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6789 ; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
6790 ; EG-NEXT:     LSHR T36.X, PV.W, literal.x,
6791 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6792 ; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
6793 ; EG-NEXT:     LSHR T37.X, PV.W, literal.x,
6794 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6795 ; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
6796 ; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
6797 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6798 ; EG-NEXT:    2(2.802597e-45), 192(2.690493e-43)
6799 ; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
6800 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6801 ; EG-NEXT:    2(2.802597e-45), 208(2.914701e-43)
6802 ; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
6803 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6804 ; EG-NEXT:    2(2.802597e-45), 224(3.138909e-43)
6805 ; EG-NEXT:     LSHR T41.X, PV.W, literal.x,
6806 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6807 ; EG-NEXT:    2(2.802597e-45), 240(3.363116e-43)
6808 ; EG-NEXT:     LSHR * T42.X, PV.W, literal.x,
6809 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6810   %load = load <32 x i8>, ptr addrspace(4) %in
6811   %ext = zext <32 x i8> %load to <32 x i64>
6812   store <32 x i64> %ext, ptr addrspace(1) %out
6813   ret void
6816 define amdgpu_kernel void @constant_sextload_v32i8_to_v32i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
6817 ; GFX6-NOHSA-LABEL: constant_sextload_v32i8_to_v32i64:
6818 ; GFX6-NOHSA:       ; %bb.0:
6819 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x9
6820 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6821 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
6822 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
6823 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s46, s7, 16
6824 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s48, s7, 8
6825 ; GFX6-NOHSA-NEXT:    s_mov_b32 s50, s7
6826 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s10, s6, 16
6827 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s12, s6, 24
6828 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s14, s6, 8
6829 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s16, s5, 16
6830 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s18, s5, 8
6831 ; GFX6-NOHSA-NEXT:    s_mov_b32 s44, s5
6832 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s20, s4, 16
6833 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s22, s4, 24
6834 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s24, s4, 8
6835 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s26, s3, 16
6836 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s28, s3, 8
6837 ; GFX6-NOHSA-NEXT:    s_mov_b32 s40, s3
6838 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s30, s2, 16
6839 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s34, s2, 24
6840 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s36, s2, 8
6841 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s38, s1, 16
6842 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s42, s1, 8
6843 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[58:59], s[50:51], 0x80000
6844 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[60:61], s[44:45], 0x80000
6845 ; GFX6-NOHSA-NEXT:    s_mov_b32 s62, s1
6846 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s56, s0, 16
6847 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s64, s0, 24
6848 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s66, s0, 8
6849 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[44:45], s[0:1], 0x80000
6850 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[50:51], s[0:1], 56
6851 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[52:53], s[2:3], 0x80000
6852 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[68:69], s[4:5], 56
6853 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[70:71], s[6:7], 0x80000
6854 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[6:7], s[6:7], 56
6855 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x80000
6856 ; GFX6-NOHSA-NEXT:    s_ashr_i64 s[54:55], s[2:3], 56
6857 ; GFX6-NOHSA-NEXT:    s_mov_b32 s0, s8
6858 ; GFX6-NOHSA-NEXT:    s_mov_b32 s1, s9
6859 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s6
6860 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s7
6861 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v16, s58
6862 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v17, s59
6863 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s70
6864 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s71
6865 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s68
6866 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s69
6867 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s60
6868 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s61
6869 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s4
6870 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s5
6871 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
6872 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[46:47], 0x80000
6873 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[48:49], 0x80000
6874 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
6875 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s4
6876 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s5
6877 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v18, s6
6878 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v19, s7
6879 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:240
6880 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[46:47], s[62:63], 0x80000
6881 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[48:49], s[40:41], 0x80000
6882 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[66:67], 0x80000
6883 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[64:65], 0x80000
6884 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[8:9], s[56:57], 0x80000
6885 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[40:41], s[42:43], 0x80000
6886 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[38:39], s[38:39], 0x80000
6887 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[36:37], s[36:37], 0x80000
6888 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[34:35], s[34:35], 0x80000
6889 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[30:31], s[30:31], 0x80000
6890 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[28:29], s[28:29], 0x80000
6891 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
6892 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x80000
6893 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
6894 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
6895 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
6896 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
6897 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x80000
6898 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x80000
6899 ; GFX6-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x80000
6900 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:224
6901 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(1)
6902 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s10
6903 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s11
6904 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s12
6905 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s13
6906 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:208
6907 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6908 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s54
6909 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s55
6910 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s14
6911 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s15
6912 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[6:9], off, s[0:3], 0 offset:192
6913 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6914 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s48
6915 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s49
6916 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s16
6917 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s17
6918 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
6919 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6920 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s52
6921 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s53
6922 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s18
6923 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s19
6924 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[10:13], off, s[0:3], 0 offset:160
6925 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6926 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s20
6927 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s21
6928 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s22
6929 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s23
6930 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[10:13], off, s[0:3], 0 offset:144
6931 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v16, s50
6932 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v17, s51
6933 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s24
6934 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s25
6935 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:128
6936 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6937 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s46
6938 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s47
6939 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s26
6940 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s27
6941 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:112
6942 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6943 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s44
6944 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v13, s45
6945 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s28
6946 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v11, s29
6947 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:96
6948 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s30
6949 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s31
6950 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
6951 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s34
6952 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v9, s35
6953 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[6:9], off, s[0:3], 0 offset:80
6954 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s36
6955 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s37
6956 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
6957 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s38
6958 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s39
6959 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:48
6960 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(2)
6961 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s40
6962 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s41
6963 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32
6964 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(2)
6965 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s8
6966 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
6967 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s6
6968 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s7
6969 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
6970 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(2)
6971 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s4
6972 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v15, s5
6973 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0
6974 ; GFX6-NOHSA-NEXT:    s_endpgm
6976 ; GFX7-HSA-LABEL: constant_sextload_v32i8_to_v32i64:
6977 ; GFX7-HSA:       ; %bb.0:
6978 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x0
6979 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6980 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
6981 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6982 ; GFX7-HSA-NEXT:    s_lshr_b32 s14, s7, 16
6983 ; GFX7-HSA-NEXT:    s_lshr_b32 s48, s7, 8
6984 ; GFX7-HSA-NEXT:    s_mov_b32 s50, s7
6985 ; GFX7-HSA-NEXT:    s_lshr_b32 s52, s6, 16
6986 ; GFX7-HSA-NEXT:    s_lshr_b32 s54, s6, 24
6987 ; GFX7-HSA-NEXT:    s_lshr_b32 s56, s6, 8
6988 ; GFX7-HSA-NEXT:    s_lshr_b32 s58, s5, 16
6989 ; GFX7-HSA-NEXT:    s_lshr_b32 s60, s5, 8
6990 ; GFX7-HSA-NEXT:    s_mov_b32 s62, s5
6991 ; GFX7-HSA-NEXT:    s_lshr_b32 s44, s4, 16
6992 ; GFX7-HSA-NEXT:    s_lshr_b32 s40, s4, 24
6993 ; GFX7-HSA-NEXT:    s_lshr_b32 s38, s4, 8
6994 ; GFX7-HSA-NEXT:    s_lshr_b32 s36, s3, 16
6995 ; GFX7-HSA-NEXT:    s_lshr_b32 s30, s3, 8
6996 ; GFX7-HSA-NEXT:    s_mov_b32 s34, s3
6997 ; GFX7-HSA-NEXT:    s_lshr_b32 s28, s2, 16
6998 ; GFX7-HSA-NEXT:    s_lshr_b32 s26, s2, 24
6999 ; GFX7-HSA-NEXT:    s_lshr_b32 s22, s2, 8
7000 ; GFX7-HSA-NEXT:    s_lshr_b32 s18, s1, 16
7001 ; GFX7-HSA-NEXT:    s_lshr_b32 s64, s1, 8
7002 ; GFX7-HSA-NEXT:    s_mov_b32 s16, s1
7003 ; GFX7-HSA-NEXT:    s_lshr_b32 s66, s0, 16
7004 ; GFX7-HSA-NEXT:    s_lshr_b32 s68, s0, 24
7005 ; GFX7-HSA-NEXT:    s_lshr_b32 s70, s0, 8
7006 ; GFX7-HSA-NEXT:    s_bfe_i64 s[12:13], s[2:3], 0x80000
7007 ; GFX7-HSA-NEXT:    s_ashr_i64 s[20:21], s[2:3], 56
7008 ; GFX7-HSA-NEXT:    s_bfe_i64 s[24:25], s[4:5], 0x80000
7009 ; GFX7-HSA-NEXT:    s_ashr_i64 s[42:43], s[4:5], 56
7010 ; GFX7-HSA-NEXT:    s_ashr_i64 s[2:3], s[6:7], 56
7011 ; GFX7-HSA-NEXT:    s_bfe_i64 s[4:5], s[14:15], 0x80000
7012 ; GFX7-HSA-NEXT:    s_bfe_i64 s[10:11], s[0:1], 0x80000
7013 ; GFX7-HSA-NEXT:    s_ashr_i64 s[0:1], s[0:1], 56
7014 ; GFX7-HSA-NEXT:    s_bfe_i64 s[46:47], s[6:7], 0x80000
7015 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
7016 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s5
7017 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
7018 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s3
7019 ; GFX7-HSA-NEXT:    s_bfe_i64 s[2:3], s[70:71], 0x80000
7020 ; GFX7-HSA-NEXT:    s_bfe_i64 s[4:5], s[68:69], 0x80000
7021 ; GFX7-HSA-NEXT:    s_bfe_i64 s[6:7], s[66:67], 0x80000
7022 ; GFX7-HSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x80000
7023 ; GFX7-HSA-NEXT:    s_bfe_i64 s[14:15], s[64:65], 0x80000
7024 ; GFX7-HSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x80000
7025 ; GFX7-HSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
7026 ; GFX7-HSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
7027 ; GFX7-HSA-NEXT:    s_bfe_i64 s[28:29], s[28:29], 0x80000
7028 ; GFX7-HSA-NEXT:    s_bfe_i64 s[34:35], s[34:35], 0x80000
7029 ; GFX7-HSA-NEXT:    s_bfe_i64 s[30:31], s[30:31], 0x80000
7030 ; GFX7-HSA-NEXT:    s_bfe_i64 s[36:37], s[36:37], 0x80000
7031 ; GFX7-HSA-NEXT:    s_bfe_i64 s[38:39], s[38:39], 0x80000
7032 ; GFX7-HSA-NEXT:    s_bfe_i64 s[40:41], s[40:41], 0x80000
7033 ; GFX7-HSA-NEXT:    s_bfe_i64 s[44:45], s[44:45], 0x80000
7034 ; GFX7-HSA-NEXT:    s_bfe_i64 s[62:63], s[62:63], 0x80000
7035 ; GFX7-HSA-NEXT:    s_bfe_i64 s[60:61], s[60:61], 0x80000
7036 ; GFX7-HSA-NEXT:    s_bfe_i64 s[58:59], s[58:59], 0x80000
7037 ; GFX7-HSA-NEXT:    s_bfe_i64 s[56:57], s[56:57], 0x80000
7038 ; GFX7-HSA-NEXT:    s_bfe_i64 s[54:55], s[54:55], 0x80000
7039 ; GFX7-HSA-NEXT:    s_bfe_i64 s[52:53], s[52:53], 0x80000
7040 ; GFX7-HSA-NEXT:    s_bfe_i64 s[50:51], s[50:51], 0x80000
7041 ; GFX7-HSA-NEXT:    s_bfe_i64 s[48:49], s[48:49], 0x80000
7042 ; GFX7-HSA-NEXT:    s_add_u32 s64, s8, 0xf0
7043 ; GFX7-HSA-NEXT:    s_addc_u32 s65, s9, 0
7044 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s48
7045 ; GFX7-HSA-NEXT:    s_add_u32 s48, s8, 0xe0
7046 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s49
7047 ; GFX7-HSA-NEXT:    s_addc_u32 s49, s9, 0
7048 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v24, s48
7049 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v25, s49
7050 ; GFX7-HSA-NEXT:    s_add_u32 s48, s8, 0xd0
7051 ; GFX7-HSA-NEXT:    s_addc_u32 s49, s9, 0
7052 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v12, s46
7053 ; GFX7-HSA-NEXT:    s_add_u32 s46, s8, 0xc0
7054 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v13, s47
7055 ; GFX7-HSA-NEXT:    s_addc_u32 s47, s9, 0
7056 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v18, s42
7057 ; GFX7-HSA-NEXT:    s_add_u32 s42, s8, 0xb0
7058 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v19, s43
7059 ; GFX7-HSA-NEXT:    s_addc_u32 s43, s9, 0
7060 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v30, s42
7061 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s64
7062 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v31, s43
7063 ; GFX7-HSA-NEXT:    s_add_u32 s42, s8, 0xa0
7064 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s65
7065 ; GFX7-HSA-NEXT:    s_addc_u32 s43, s9, 0
7066 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
7067 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s50
7068 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s40
7069 ; GFX7-HSA-NEXT:    s_add_u32 s40, s8, 0x90
7070 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s51
7071 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v26, s48
7072 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s41
7073 ; GFX7-HSA-NEXT:    s_addc_u32 s41, s9, 0
7074 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s52
7075 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s53
7076 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v10, s54
7077 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v11, s55
7078 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v27, s49
7079 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v28, s46
7080 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
7081 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v14, s56
7082 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s24
7083 ; GFX7-HSA-NEXT:    s_add_u32 s24, s8, 0x80
7084 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v15, s57
7085 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v29, s47
7086 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v16, s58
7087 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v17, s59
7088 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v32, s42
7089 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
7090 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s25
7091 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s40
7092 ; GFX7-HSA-NEXT:    s_addc_u32 s25, s9, 0
7093 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v10, s24
7094 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v20, s62
7095 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v21, s63
7096 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v33, s43
7097 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v22, s60
7098 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v23, s61
7099 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s44
7100 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s45
7101 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s41
7102 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
7103 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s38
7104 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v7, s39
7105 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v11, s25
7106 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
7107 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
7108 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]
7109 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]
7110 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s20
7111 ; GFX7-HSA-NEXT:    s_add_u32 s20, s8, 0x70
7112 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s21
7113 ; GFX7-HSA-NEXT:    s_addc_u32 s21, s9, 0
7114 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s20
7115 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s36
7116 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s37
7117 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s21
7118 ; GFX7-HSA-NEXT:    s_add_u32 s20, s8, 0x60
7119 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7120 ; GFX7-HSA-NEXT:    s_addc_u32 s21, s9, 0
7121 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s20
7122 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s34
7123 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s35
7124 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s30
7125 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s31
7126 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s21
7127 ; GFX7-HSA-NEXT:    s_add_u32 s20, s8, 0x50
7128 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7129 ; GFX7-HSA-NEXT:    s_addc_u32 s21, s9, 0
7130 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s20
7131 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s28
7132 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s29
7133 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s26
7134 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s27
7135 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s21
7136 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7137 ; GFX7-HSA-NEXT:    s_nop 0
7138 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s12
7139 ; GFX7-HSA-NEXT:    s_add_u32 s12, s8, 64
7140 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s13
7141 ; GFX7-HSA-NEXT:    s_addc_u32 s13, s9, 0
7142 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s12
7143 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s22
7144 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s23
7145 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s13
7146 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7147 ; GFX7-HSA-NEXT:    s_nop 0
7148 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
7149 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 48
7150 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s1
7151 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
7152 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
7153 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
7154 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 32
7155 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s18
7156 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s19
7157 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
7158 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7159 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
7160 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
7161 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 16
7162 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s16
7163 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
7164 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s14
7165 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s15
7166 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
7167 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7168 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
7169 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
7170 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s7
7171 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s4
7172 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s5
7173 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
7174 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7175 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s8
7176 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s10
7177 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s11
7178 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
7179 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s3
7180 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s9
7181 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7182 ; GFX7-HSA-NEXT:    s_endpgm
7184 ; GFX8-NOHSA-LABEL: constant_sextload_v32i8_to_v32i64:
7185 ; GFX8-NOHSA:       ; %bb.0:
7186 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x24
7187 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7188 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
7189 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7190 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s28, s7, 16
7191 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s30, s6, 16
7192 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s34, s6, 24
7193 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s36, s5, 16
7194 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s38, s4, 16
7195 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s40, s4, 24
7196 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s42, s3, 16
7197 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s44, s2, 16
7198 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s46, s2, 24
7199 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s26, s1, 16
7200 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s22, s0, 16
7201 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s20, s0, 24
7202 ; GFX8-NOHSA-NEXT:    s_mov_b32 s48, s7
7203 ; GFX8-NOHSA-NEXT:    s_mov_b32 s50, s5
7204 ; GFX8-NOHSA-NEXT:    s_mov_b32 s52, s3
7205 ; GFX8-NOHSA-NEXT:    s_mov_b32 s54, s1
7206 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v5, 8, s7
7207 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v1, 8, s6
7208 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s5
7209 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s4
7210 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v8, 8, s3
7211 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v9, 8, s2
7212 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s1
7213 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s0
7214 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[10:11], s[0:1], 0x80000
7215 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[12:13], s[2:3], 0x80000
7216 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[14:15], s[4:5], 0x80000
7217 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[16:17], s[6:7], 0x80000
7218 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[18:19], s[0:1], 56
7219 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[24:25], s[2:3], 56
7220 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[56:57], s[4:5], 56
7221 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[58:59], s[6:7], 56
7222 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[0:1], s[54:55], 0x80000
7223 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[2:3], s[52:53], 0x80000
7224 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[4:5], s[50:51], 0x80000
7225 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[6:7], s[48:49], 0x80000
7226 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x80000
7227 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x80000
7228 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x80000
7229 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[46:47], s[46:47], 0x80000
7230 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[44:45], s[44:45], 0x80000
7231 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[42:43], s[42:43], 0x80000
7232 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[40:41], s[40:41], 0x80000
7233 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[38:39], s[38:39], 0x80000
7234 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[36:37], s[36:37], 0x80000
7235 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[34:35], s[34:35], 0x80000
7236 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[30:31], s[30:31], 0x80000
7237 ; GFX8-NOHSA-NEXT:    s_bfe_i64 s[28:29], s[28:29], 0x80000
7238 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s28
7239 ; GFX8-NOHSA-NEXT:    s_add_u32 s28, s8, 0xf0
7240 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s29
7241 ; GFX8-NOHSA-NEXT:    s_addc_u32 s29, s9, 0
7242 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s28
7243 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s58
7244 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s59
7245 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s29
7246 ; GFX8-NOHSA-NEXT:    s_add_u32 s28, s8, 0xd0
7247 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
7248 ; GFX8-NOHSA-NEXT:    s_addc_u32 s29, s9, 0
7249 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s28
7250 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s30
7251 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s31
7252 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s34
7253 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s35
7254 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s29
7255 ; GFX8-NOHSA-NEXT:    s_add_u32 s28, s8, 0xb0
7256 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
7257 ; GFX8-NOHSA-NEXT:    s_addc_u32 s29, s9, 0
7258 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s28
7259 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s36
7260 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s37
7261 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s56
7262 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s57
7263 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s29
7264 ; GFX8-NOHSA-NEXT:    s_add_u32 s28, s8, 0x90
7265 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
7266 ; GFX8-NOHSA-NEXT:    s_addc_u32 s29, s9, 0
7267 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s28
7268 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s38
7269 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s39
7270 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s40
7271 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s41
7272 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s29
7273 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
7274 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v10, v9, 0, 8
7275 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s24
7276 ; GFX8-NOHSA-NEXT:    s_add_u32 s24, s8, 0x70
7277 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s25
7278 ; GFX8-NOHSA-NEXT:    s_addc_u32 s25, s9, 0
7279 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s24
7280 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s42
7281 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s43
7282 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s25
7283 ; GFX8-NOHSA-NEXT:    s_add_u32 s24, s8, 0x50
7284 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
7285 ; GFX8-NOHSA-NEXT:    s_addc_u32 s25, s9, 0
7286 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s24
7287 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s44
7288 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s45
7289 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s46
7290 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s47
7291 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s25
7292 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
7293 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v18, v5, 0, 8
7294 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s18
7295 ; GFX8-NOHSA-NEXT:    s_add_u32 s18, s8, 48
7296 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s19
7297 ; GFX8-NOHSA-NEXT:    s_addc_u32 s19, s9, 0
7298 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s18
7299 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s26
7300 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s27
7301 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s19
7302 ; GFX8-NOHSA-NEXT:    s_add_u32 s18, s8, 16
7303 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
7304 ; GFX8-NOHSA-NEXT:    s_addc_u32 s19, s9, 0
7305 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s18
7306 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s22
7307 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s23
7308 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v14, s20
7309 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s21
7310 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s19
7311 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
7312 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s6
7313 ; GFX8-NOHSA-NEXT:    s_add_u32 s6, s8, 0xe0
7314 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s7
7315 ; GFX8-NOHSA-NEXT:    s_addc_u32 s7, s9, 0
7316 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v14, v8, 0, 8
7317 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s7
7318 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v19, 31, v18
7319 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s6
7320 ; GFX8-NOHSA-NEXT:    s_add_u32 s6, s8, 0xc0
7321 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[16:19]
7322 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v22, v1, 0, 8
7323 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v18, v4, 0, 8
7324 ; GFX8-NOHSA-NEXT:    s_addc_u32 s7, s9, 0
7325 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s6
7326 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v23, 31, v22
7327 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v20, s16
7328 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v21, s17
7329 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s7
7330 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[20:23]
7331 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v19, 31, v18
7332 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v20, s4
7333 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s8, 0xa0
7334 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v22, v0, 0, 8
7335 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v21, s5
7336 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s9, 0
7337 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
7338 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v23, 31, v22
7339 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
7340 ; GFX8-NOHSA-NEXT:    s_add_u32 s4, s8, 0x80
7341 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[20:23]
7342 ; GFX8-NOHSA-NEXT:    s_addc_u32 s5, s9, 0
7343 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
7344 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s14
7345 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v17, s15
7346 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s5
7347 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s2
7348 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s8, 0x60
7349 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
7350 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s3
7351 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s9, 0
7352 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
7353 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
7354 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
7355 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s8, 64
7356 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[12:15]
7357 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s9, 0
7358 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
7359 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
7360 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s12
7361 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s13
7362 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
7363 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
7364 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 32
7365 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v6, v6, 0, 8
7366 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]
7367 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
7368 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
7369 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
7370 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
7371 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
7372 ; GFX8-NOHSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
7373 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
7374 ; GFX8-NOHSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
7375 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
7376 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s10
7377 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
7378 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
7379 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
7380 ; GFX8-NOHSA-NEXT:    s_endpgm
7382 ; EG-LABEL: constant_sextload_v32i8_to_v32i64:
7383 ; EG:       ; %bb.0:
7384 ; EG-NEXT:    ALU 0, @26, KC0[CB0:0-32], KC1[]
7385 ; EG-NEXT:    TEX 1 @22
7386 ; EG-NEXT:    ALU 84, @27, KC0[CB0:0-32], KC1[]
7387 ; EG-NEXT:    ALU 71, @112, KC0[], KC1[]
7388 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T42.X, 0
7389 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T31.X, 0
7390 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T30.X, 0
7391 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T25.X, 0
7392 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T24.X, 0
7393 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T23.X, 0
7394 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T22.X, 0
7395 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T21.X, 0
7396 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T20.X, 0
7397 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T19.X, 0
7398 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T18.X, 0
7399 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T17.X, 0
7400 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T16.X, 0
7401 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T15.X, 0
7402 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T14.X, 0
7403 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T13.X, 1
7404 ; EG-NEXT:    CF_END
7405 ; EG-NEXT:    PAD
7406 ; EG-NEXT:    Fetch clause starting at 22:
7407 ; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 0, #1
7408 ; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 16, #1
7409 ; EG-NEXT:    ALU clause starting at 26:
7410 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
7411 ; EG-NEXT:    ALU clause starting at 27:
7412 ; EG-NEXT:     LSHR T13.X, KC0[2].Y, literal.x,
7413 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7414 ; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7415 ; EG-NEXT:     LSHR T14.X, PV.W, literal.x,
7416 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7417 ; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
7418 ; EG-NEXT:     LSHR T15.X, PV.W, literal.x,
7419 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7420 ; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
7421 ; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
7422 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7423 ; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
7424 ; EG-NEXT:     LSHR T17.X, PV.W, literal.x,
7425 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7426 ; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
7427 ; EG-NEXT:     LSHR T18.X, PV.W, literal.x,
7428 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7429 ; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
7430 ; EG-NEXT:     LSHR T19.X, PV.W, literal.x,
7431 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7432 ; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
7433 ; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
7434 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7435 ; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
7436 ; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
7437 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7438 ; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
7439 ; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
7440 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7441 ; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
7442 ; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
7443 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7444 ; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
7445 ; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
7446 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7447 ; EG-NEXT:    2(2.802597e-45), 192(2.690493e-43)
7448 ; EG-NEXT:     LSHR * T25.X, PV.W, literal.x,
7449 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7450 ; EG-NEXT:     BFE_INT * T26.X, T11.W, 0.0, literal.x,
7451 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7452 ; EG-NEXT:     BFE_INT T27.X, T11.Y, 0.0, literal.x,
7453 ; EG-NEXT:     ASHR T26.Y, PV.X, literal.y,
7454 ; EG-NEXT:     LSHR * T0.W, T11.W, literal.x,
7455 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7456 ; EG-NEXT:     BFE_INT T28.X, T11.X, 0.0, literal.x,
7457 ; EG-NEXT:     ASHR T27.Y, PV.X, literal.y,
7458 ; EG-NEXT:     BFE_INT T26.Z, PV.W, 0.0, literal.x,
7459 ; EG-NEXT:     LSHR * T0.W, T11.Y, literal.x,
7460 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7461 ; EG-NEXT:     BFE_INT T29.X, T12.W, 0.0, literal.x,
7462 ; EG-NEXT:     ASHR T28.Y, PV.X, literal.y,
7463 ; EG-NEXT:     BFE_INT T27.Z, PV.W, 0.0, literal.x,
7464 ; EG-NEXT:     LSHR T0.W, T11.X, literal.x,
7465 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
7466 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7467 ; EG-NEXT:    208(2.914701e-43), 0(0.000000e+00)
7468 ; EG-NEXT:     LSHR T30.X, PS, literal.x,
7469 ; EG-NEXT:     ASHR T29.Y, PV.X, literal.y,
7470 ; EG-NEXT:     BFE_INT T28.Z, PV.W, 0.0, literal.z,
7471 ; EG-NEXT:     LSHR T0.W, T12.W, literal.z,
7472 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
7473 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
7474 ; EG-NEXT:    8(1.121039e-44), 224(3.138909e-43)
7475 ; EG-NEXT:     LSHR T31.X, PS, literal.x,
7476 ; EG-NEXT:     BFE_INT T29.Z, PV.W, 0.0, literal.y,
7477 ; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.z,
7478 ; EG-NEXT:     ASHR * T32.W, T12.X, literal.w,
7479 ; EG-NEXT:    2(2.802597e-45), 8(1.121039e-44)
7480 ; EG-NEXT:    240(3.363116e-43), 31(4.344025e-44)
7481 ; EG-NEXT:     BFE_INT T33.X, T12.Z, 0.0, literal.x,
7482 ; EG-NEXT:     LSHR T0.Y, T11.Z, literal.x, BS:VEC_120/SCL_212
7483 ; EG-NEXT:     ASHR T32.Z, T12.X, literal.y,
7484 ; EG-NEXT:     LSHR T1.W, T12.X, literal.z,
7485 ; EG-NEXT:     ASHR * T34.W, T12.Y, literal.w,
7486 ; EG-NEXT:    8(1.121039e-44), 24(3.363116e-44)
7487 ; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7488 ; EG-NEXT:     BFE_INT T32.X, PV.W, 0.0, literal.x,
7489 ; EG-NEXT:     ASHR T33.Y, PV.X, literal.y,
7490 ; EG-NEXT:     ASHR T34.Z, T12.Y, literal.z,
7491 ; EG-NEXT:     LSHR T1.W, T12.Z, literal.x,
7492 ; EG-NEXT:     LSHR * T2.W, T12.Y, literal.w,
7493 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7494 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
7495 ; EG-NEXT:     BFE_INT * T34.X, PS, 0.0, literal.x,
7496 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7497 ; EG-NEXT:    ALU clause starting at 112:
7498 ; EG-NEXT:     ASHR T32.Y, T32.X, literal.x,
7499 ; EG-NEXT:     BFE_INT T33.Z, T1.W, 0.0, literal.y,
7500 ; EG-NEXT:     LSHR T1.W, T11.W, literal.z, BS:VEC_120/SCL_212
7501 ; EG-NEXT:     ASHR * T35.W, T12.Z, literal.x,
7502 ; EG-NEXT:    31(4.344025e-44), 8(1.121039e-44)
7503 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7504 ; EG-NEXT:     BFE_INT T36.X, T12.X, 0.0, literal.x,
7505 ; EG-NEXT:     ASHR T34.Y, T34.X, literal.y, BS:VEC_120/SCL_212
7506 ; EG-NEXT:     ASHR T35.Z, T12.Z, literal.z,
7507 ; EG-NEXT:     LSHR T2.W, T12.Z, literal.w,
7508 ; EG-NEXT:     ASHR * T37.W, T12.W, literal.y,
7509 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7510 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
7511 ; EG-NEXT:     BFE_INT T35.X, PV.W, 0.0, literal.x,
7512 ; EG-NEXT:     ASHR T36.Y, PV.X, literal.y,
7513 ; EG-NEXT:     ASHR T37.Z, T12.W, literal.z,
7514 ; EG-NEXT:     LSHR T2.W, T12.X, literal.x,
7515 ; EG-NEXT:     LSHR * T3.W, T12.W, literal.w,
7516 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7517 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
7518 ; EG-NEXT:     BFE_INT T37.X, PS, 0.0, literal.x,
7519 ; EG-NEXT:     ASHR T35.Y, PV.X, literal.y,
7520 ; EG-NEXT:     BFE_INT T36.Z, PV.W, 0.0, literal.x,
7521 ; EG-NEXT:     LSHR T2.W, T11.Z, literal.z,
7522 ; EG-NEXT:     ASHR * T12.W, T11.X, literal.y,
7523 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7524 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7525 ; EG-NEXT:     BFE_INT T38.X, T12.Y, 0.0, literal.x,
7526 ; EG-NEXT:     ASHR T37.Y, PV.X, literal.y,
7527 ; EG-NEXT:     ASHR T12.Z, T11.X, literal.z,
7528 ; EG-NEXT:     LSHR T3.W, T11.X, literal.w,
7529 ; EG-NEXT:     ASHR * T39.W, T11.Y, literal.y,
7530 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7531 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
7532 ; EG-NEXT:     BFE_INT T12.X, PV.W, 0.0, literal.x,
7533 ; EG-NEXT:     ASHR T38.Y, PV.X, literal.y,
7534 ; EG-NEXT:     ASHR T39.Z, T11.Y, literal.z,
7535 ; EG-NEXT:     LSHR T3.W, T12.Y, literal.x, BS:VEC_120/SCL_212
7536 ; EG-NEXT:     LSHR * T4.W, T11.Y, literal.w,
7537 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7538 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
7539 ; EG-NEXT:     BFE_INT T39.X, PS, 0.0, literal.x,
7540 ; EG-NEXT:     ASHR T12.Y, PV.X, literal.y,
7541 ; EG-NEXT:     BFE_INT T38.Z, PV.W, 0.0, literal.x,
7542 ; EG-NEXT:     ASHR T36.W, T36.Z, literal.y,
7543 ; EG-NEXT:     ASHR * T40.W, T11.Z, literal.y,
7544 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7545 ; EG-NEXT:     BFE_INT T11.X, T11.Z, 0.0, literal.x,
7546 ; EG-NEXT:     ASHR T39.Y, PV.X, literal.y,
7547 ; EG-NEXT:     ASHR T40.Z, T11.Z, literal.z,
7548 ; EG-NEXT:     ASHR T38.W, PV.Z, literal.y,
7549 ; EG-NEXT:     ASHR * T41.W, T11.W, literal.y,
7550 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7551 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
7552 ; EG-NEXT:     BFE_INT T40.X, T2.W, 0.0, literal.x,
7553 ; EG-NEXT:     ASHR T11.Y, PV.X, literal.y,
7554 ; EG-NEXT:     ASHR T41.Z, T11.W, literal.z, BS:VEC_120/SCL_212
7555 ; EG-NEXT:     ASHR T33.W, T33.Z, literal.y,
7556 ; EG-NEXT:     ASHR * T29.W, T29.Z, literal.y,
7557 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7558 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
7559 ; EG-NEXT:     BFE_INT T41.X, T1.W, 0.0, literal.x,
7560 ; EG-NEXT:     ASHR T40.Y, PV.X, literal.y,
7561 ; EG-NEXT:     BFE_INT T11.Z, T0.Y, 0.0, literal.x,
7562 ; EG-NEXT:     ASHR T28.W, T28.Z, literal.y,
7563 ; EG-NEXT:     ASHR * T27.W, T27.Z, literal.y,
7564 ; EG-NEXT:    8(1.121039e-44), 31(4.344025e-44)
7565 ; EG-NEXT:     LSHR T42.X, T0.W, literal.x,
7566 ; EG-NEXT:     ASHR T41.Y, PV.X, literal.y,
7567 ; EG-NEXT:     ASHR T11.W, PV.Z, literal.y,
7568 ; EG-NEXT:     ASHR * T26.W, T26.Z, literal.y,
7569 ; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
7570   %load = load <32 x i8>, ptr addrspace(4) %in
7571   %ext = sext <32 x i8> %load to <32 x i64>
7572   store <32 x i64> %ext, ptr addrspace(1) %out
7573   ret void
7576 ; XFUNC-LABEL: {{^}}constant_zextload_v64i8_to_v64i64:
7577 ; define amdgpu_kernel void @constant_zextload_v64i8_to_v64i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7578 ;   %load = load <64 x i8>, ptr addrspace(4) %in
7579 ;   %ext = zext <64 x i8> %load to <64 x i64>
7580 ;   store <64 x i64> %ext, ptr addrspace(1) %out
7581 ;   ret void
7582 ; }
7584 ; XFUNC-LABEL: {{^}}constant_sextload_v64i8_to_v64i64:
7585 ; define amdgpu_kernel void @constant_sextload_v64i8_to_v64i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7586 ;   %load = load <64 x i8>, ptr addrspace(4) %in
7587 ;   %ext = sext <64 x i8> %load to <64 x i64>
7588 ;   store <64 x i64> %ext, ptr addrspace(1) %out
7589 ;   ret void
7590 ; }
7592 define amdgpu_kernel void @constant_zextload_i8_to_i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7593 ; GFX6-NOHSA-LABEL: constant_zextload_i8_to_i16:
7594 ; GFX6-NOHSA:       ; %bb.0:
7595 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
7596 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
7597 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
7598 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
7599 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
7600 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7601 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
7602 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
7603 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
7604 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
7605 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
7606 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7607 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[4:7], 0
7608 ; GFX6-NOHSA-NEXT:    s_endpgm
7610 ; GFX7-HSA-LABEL: constant_zextload_i8_to_i16:
7611 ; GFX7-HSA:       ; %bb.0:
7612 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
7613 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
7614 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
7615 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
7616 ; GFX7-HSA-NEXT:    flat_load_ubyte v2, v[0:1]
7617 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
7618 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
7619 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
7620 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v2
7621 ; GFX7-HSA-NEXT:    s_endpgm
7623 ; GFX8-NOHSA-LABEL: constant_zextload_i8_to_i16:
7624 ; GFX8-NOHSA:       ; %bb.0:
7625 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
7626 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7627 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
7628 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
7629 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
7630 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
7631 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
7632 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7633 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v2
7634 ; GFX8-NOHSA-NEXT:    s_endpgm
7636 ; EG-LABEL: constant_zextload_i8_to_i16:
7637 ; EG:       ; %bb.0:
7638 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
7639 ; EG-NEXT:    TEX 0 @6
7640 ; EG-NEXT:    ALU 10, @9, KC0[CB0:0-32], KC1[]
7641 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
7642 ; EG-NEXT:    CF_END
7643 ; EG-NEXT:    PAD
7644 ; EG-NEXT:    Fetch clause starting at 6:
7645 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
7646 ; EG-NEXT:    ALU clause starting at 8:
7647 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
7648 ; EG-NEXT:    ALU clause starting at 9:
7649 ; EG-NEXT:     AND_INT * T0.W, KC0[2].Y, literal.x,
7650 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
7651 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
7652 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
7653 ; EG-NEXT:     LSHL T0.X, T0.X, PV.W,
7654 ; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
7655 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
7656 ; EG-NEXT:     MOV T0.Y, 0.0,
7657 ; EG-NEXT:     MOV * T0.Z, 0.0,
7658 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
7659 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7660   %a = load i8, ptr addrspace(4) %in
7661   %ext = zext i8 %a to i16
7662   store i16 %ext, ptr addrspace(1) %out
7663   ret void
7666 define amdgpu_kernel void @constant_sextload_i8_to_i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7667 ; GFX6-NOHSA-LABEL: constant_sextload_i8_to_i16:
7668 ; GFX6-NOHSA:       ; %bb.0:
7669 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
7670 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
7671 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
7672 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
7673 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
7674 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7675 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
7676 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
7677 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
7678 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
7679 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
7680 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7681 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[4:7], 0
7682 ; GFX6-NOHSA-NEXT:    s_endpgm
7684 ; GFX7-HSA-LABEL: constant_sextload_i8_to_i16:
7685 ; GFX7-HSA:       ; %bb.0:
7686 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
7687 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
7688 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
7689 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
7690 ; GFX7-HSA-NEXT:    flat_load_sbyte v2, v[0:1]
7691 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
7692 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
7693 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
7694 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v2
7695 ; GFX7-HSA-NEXT:    s_endpgm
7697 ; GFX8-NOHSA-LABEL: constant_sextload_i8_to_i16:
7698 ; GFX8-NOHSA:       ; %bb.0:
7699 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
7700 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7701 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
7702 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
7703 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
7704 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
7705 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
7706 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7707 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v2
7708 ; GFX8-NOHSA-NEXT:    s_endpgm
7710 ; EG-LABEL: constant_sextload_i8_to_i16:
7711 ; EG:       ; %bb.0:
7712 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
7713 ; EG-NEXT:    TEX 0 @6
7714 ; EG-NEXT:    ALU 12, @9, KC0[CB0:0-32], KC1[]
7715 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
7716 ; EG-NEXT:    CF_END
7717 ; EG-NEXT:    PAD
7718 ; EG-NEXT:    Fetch clause starting at 6:
7719 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
7720 ; EG-NEXT:    ALU clause starting at 8:
7721 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
7722 ; EG-NEXT:    ALU clause starting at 9:
7723 ; EG-NEXT:     BFE_INT T0.W, T0.X, 0.0, literal.x,
7724 ; EG-NEXT:     AND_INT * T1.W, KC0[2].Y, literal.y,
7725 ; EG-NEXT:    8(1.121039e-44), 3(4.203895e-45)
7726 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
7727 ; EG-NEXT:     LSHL * T1.W, PS, literal.y,
7728 ; EG-NEXT:    65535(9.183409e-41), 3(4.203895e-45)
7729 ; EG-NEXT:     LSHL T0.X, PV.W, PS,
7730 ; EG-NEXT:     LSHL * T0.W, literal.x, PS,
7731 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
7732 ; EG-NEXT:     MOV T0.Y, 0.0,
7733 ; EG-NEXT:     MOV * T0.Z, 0.0,
7734 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
7735 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7736   %a = load i8, ptr addrspace(4) %in
7737   %ext = sext i8 %a to i16
7738   store i16 %ext, ptr addrspace(1) %out
7739   ret void
7742 define amdgpu_kernel void @constant_zextload_v1i8_to_v1i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7743 ; GFX6-NOHSA-LABEL: constant_zextload_v1i8_to_v1i16:
7744 ; GFX6-NOHSA:       ; %bb.0:
7745 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
7746 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
7747 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
7748 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
7749 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
7750 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7751 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
7752 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
7753 ; GFX6-NOHSA-NEXT:    buffer_load_ubyte v0, off, s[8:11], 0
7754 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
7755 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
7756 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7757 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[4:7], 0
7758 ; GFX6-NOHSA-NEXT:    s_endpgm
7760 ; GFX7-HSA-LABEL: constant_zextload_v1i8_to_v1i16:
7761 ; GFX7-HSA:       ; %bb.0:
7762 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
7763 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
7764 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
7765 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
7766 ; GFX7-HSA-NEXT:    flat_load_ubyte v2, v[0:1]
7767 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
7768 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
7769 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
7770 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v2
7771 ; GFX7-HSA-NEXT:    s_endpgm
7773 ; GFX8-NOHSA-LABEL: constant_zextload_v1i8_to_v1i16:
7774 ; GFX8-NOHSA:       ; %bb.0:
7775 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
7776 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7777 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
7778 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
7779 ; GFX8-NOHSA-NEXT:    flat_load_ubyte v2, v[0:1]
7780 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
7781 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
7782 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7783 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v2
7784 ; GFX8-NOHSA-NEXT:    s_endpgm
7786 ; EG-LABEL: constant_zextload_v1i8_to_v1i16:
7787 ; EG:       ; %bb.0:
7788 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
7789 ; EG-NEXT:    TEX 0 @6
7790 ; EG-NEXT:    ALU 10, @9, KC0[CB0:0-32], KC1[]
7791 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
7792 ; EG-NEXT:    CF_END
7793 ; EG-NEXT:    PAD
7794 ; EG-NEXT:    Fetch clause starting at 6:
7795 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
7796 ; EG-NEXT:    ALU clause starting at 8:
7797 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
7798 ; EG-NEXT:    ALU clause starting at 9:
7799 ; EG-NEXT:     AND_INT * T0.W, KC0[2].Y, literal.x,
7800 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
7801 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
7802 ; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
7803 ; EG-NEXT:     LSHL T0.X, T0.X, PV.W,
7804 ; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
7805 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
7806 ; EG-NEXT:     MOV T0.Y, 0.0,
7807 ; EG-NEXT:     MOV * T0.Z, 0.0,
7808 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
7809 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7810   %load = load <1 x i8>, ptr addrspace(4) %in
7811   %ext = zext <1 x i8> %load to <1 x i16>
7812   store <1 x i16> %ext, ptr addrspace(1) %out
7813   ret void
7816 define amdgpu_kernel void @constant_sextload_v1i8_to_v1i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7817 ; GFX6-NOHSA-LABEL: constant_sextload_v1i8_to_v1i16:
7818 ; GFX6-NOHSA:       ; %bb.0:
7819 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
7820 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
7821 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
7822 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
7823 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
7824 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7825 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
7826 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
7827 ; GFX6-NOHSA-NEXT:    buffer_load_sbyte v0, off, s[8:11], 0
7828 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
7829 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
7830 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7831 ; GFX6-NOHSA-NEXT:    buffer_store_short v0, off, s[4:7], 0
7832 ; GFX6-NOHSA-NEXT:    s_endpgm
7834 ; GFX7-HSA-LABEL: constant_sextload_v1i8_to_v1i16:
7835 ; GFX7-HSA:       ; %bb.0:
7836 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
7837 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
7838 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
7839 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
7840 ; GFX7-HSA-NEXT:    flat_load_sbyte v2, v[0:1]
7841 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
7842 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
7843 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
7844 ; GFX7-HSA-NEXT:    flat_store_short v[0:1], v2
7845 ; GFX7-HSA-NEXT:    s_endpgm
7847 ; GFX8-NOHSA-LABEL: constant_sextload_v1i8_to_v1i16:
7848 ; GFX8-NOHSA:       ; %bb.0:
7849 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
7850 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7851 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
7852 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
7853 ; GFX8-NOHSA-NEXT:    flat_load_sbyte v2, v[0:1]
7854 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
7855 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
7856 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7857 ; GFX8-NOHSA-NEXT:    flat_store_short v[0:1], v2
7858 ; GFX8-NOHSA-NEXT:    s_endpgm
7860 ; EG-LABEL: constant_sextload_v1i8_to_v1i16:
7861 ; EG:       ; %bb.0:
7862 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
7863 ; EG-NEXT:    TEX 0 @6
7864 ; EG-NEXT:    ALU 12, @9, KC0[CB0:0-32], KC1[]
7865 ; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
7866 ; EG-NEXT:    CF_END
7867 ; EG-NEXT:    PAD
7868 ; EG-NEXT:    Fetch clause starting at 6:
7869 ; EG-NEXT:     VTX_READ_8 T0.X, T0.X, 0, #1
7870 ; EG-NEXT:    ALU clause starting at 8:
7871 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
7872 ; EG-NEXT:    ALU clause starting at 9:
7873 ; EG-NEXT:     BFE_INT T0.W, T0.X, 0.0, literal.x,
7874 ; EG-NEXT:     AND_INT * T1.W, KC0[2].Y, literal.y,
7875 ; EG-NEXT:    8(1.121039e-44), 3(4.203895e-45)
7876 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
7877 ; EG-NEXT:     LSHL * T1.W, PS, literal.y,
7878 ; EG-NEXT:    65535(9.183409e-41), 3(4.203895e-45)
7879 ; EG-NEXT:     LSHL T0.X, PV.W, PS,
7880 ; EG-NEXT:     LSHL * T0.W, literal.x, PS,
7881 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
7882 ; EG-NEXT:     MOV T0.Y, 0.0,
7883 ; EG-NEXT:     MOV * T0.Z, 0.0,
7884 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
7885 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7886   %load = load <1 x i8>, ptr addrspace(4) %in
7887   %ext = sext <1 x i8> %load to <1 x i16>
7888   store <1 x i16> %ext, ptr addrspace(1) %out
7889   ret void
7892 define amdgpu_kernel void @constant_zextload_v2i8_to_v2i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7893 ; GFX6-NOHSA-LABEL: constant_zextload_v2i8_to_v2i16:
7894 ; GFX6-NOHSA:       ; %bb.0:
7895 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
7896 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
7897 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
7898 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
7899 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
7900 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7901 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
7902 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
7903 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
7904 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
7905 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
7906 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7907 ; GFX6-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 8, v0
7908 ; GFX6-NOHSA-NEXT:    v_or_b32_e32 v0, v0, v1
7909 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v0, 0xff00ff, v0
7910 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
7911 ; GFX6-NOHSA-NEXT:    s_endpgm
7913 ; GFX7-HSA-LABEL: constant_zextload_v2i8_to_v2i16:
7914 ; GFX7-HSA:       ; %bb.0:
7915 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
7916 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
7917 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
7918 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
7919 ; GFX7-HSA-NEXT:    flat_load_ushort v2, v[0:1]
7920 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
7921 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
7922 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
7923 ; GFX7-HSA-NEXT:    v_lshlrev_b32_e32 v3, 8, v2
7924 ; GFX7-HSA-NEXT:    v_or_b32_e32 v2, v2, v3
7925 ; GFX7-HSA-NEXT:    v_and_b32_e32 v2, 0xff00ff, v2
7926 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
7927 ; GFX7-HSA-NEXT:    s_endpgm
7929 ; GFX8-NOHSA-LABEL: constant_zextload_v2i8_to_v2i16:
7930 ; GFX8-NOHSA:       ; %bb.0:
7931 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
7932 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, 0xffff
7933 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7934 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
7935 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
7936 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
7937 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
7938 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
7939 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7940 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e32 v4, 8, v2
7941 ; GFX8-NOHSA-NEXT:    v_and_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
7942 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v3, 16, v4
7943 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, v2, v3
7944 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
7945 ; GFX8-NOHSA-NEXT:    s_endpgm
7947 ; EG-LABEL: constant_zextload_v2i8_to_v2i16:
7948 ; EG:       ; %bb.0:
7949 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
7950 ; EG-NEXT:    TEX 0 @6
7951 ; EG-NEXT:    ALU 7, @9, KC0[CB0:0-32], KC1[]
7952 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.X, T6.X, 1
7953 ; EG-NEXT:    CF_END
7954 ; EG-NEXT:    PAD
7955 ; EG-NEXT:    Fetch clause starting at 6:
7956 ; EG-NEXT:     VTX_READ_16 T5.X, T5.X, 0, #1
7957 ; EG-NEXT:    ALU clause starting at 8:
7958 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
7959 ; EG-NEXT:    ALU clause starting at 9:
7960 ; EG-NEXT:     LSHL * T0.W, T5.X, literal.x,
7961 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
7962 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
7963 ; EG-NEXT:     AND_INT * T1.W, T5.X, literal.y,
7964 ; EG-NEXT:    16711680(2.341805e-38), 255(3.573311e-43)
7965 ; EG-NEXT:     OR_INT T5.X, PS, PV.W,
7966 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.x,
7967 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7968   %load = load <2 x i8>, ptr addrspace(4) %in
7969   %ext = zext <2 x i8> %load to <2 x i16>
7970   store <2 x i16> %ext, ptr addrspace(1) %out
7971   ret void
7974 define amdgpu_kernel void @constant_sextload_v2i8_to_v2i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
7975 ; GFX6-NOHSA-LABEL: constant_sextload_v2i8_to_v2i16:
7976 ; GFX6-NOHSA:       ; %bb.0:
7977 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
7978 ; GFX6-NOHSA-NEXT:    s_mov_b32 s7, 0xf000
7979 ; GFX6-NOHSA-NEXT:    s_mov_b32 s6, -1
7980 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, s6
7981 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, s7
7982 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
7983 ; GFX6-NOHSA-NEXT:    s_mov_b32 s8, s2
7984 ; GFX6-NOHSA-NEXT:    s_mov_b32 s9, s3
7985 ; GFX6-NOHSA-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
7986 ; GFX6-NOHSA-NEXT:    s_mov_b32 s4, s0
7987 ; GFX6-NOHSA-NEXT:    s_mov_b32 s5, s1
7988 ; GFX6-NOHSA-NEXT:    s_waitcnt vmcnt(0)
7989 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v1, v0, 8, 8
7990 ; GFX6-NOHSA-NEXT:    v_bfe_i32 v0, v0, 0, 8
7991 ; GFX6-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
7992 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v0, 0xffff, v0
7993 ; GFX6-NOHSA-NEXT:    v_or_b32_e32 v0, v0, v1
7994 ; GFX6-NOHSA-NEXT:    buffer_store_dword v0, off, s[4:7], 0
7995 ; GFX6-NOHSA-NEXT:    s_endpgm
7997 ; GFX7-HSA-LABEL: constant_sextload_v2i8_to_v2i16:
7998 ; GFX7-HSA:       ; %bb.0:
7999 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
8000 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8001 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
8002 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
8003 ; GFX7-HSA-NEXT:    flat_load_ushort v2, v[0:1]
8004 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
8005 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
8006 ; GFX7-HSA-NEXT:    s_waitcnt vmcnt(0)
8007 ; GFX7-HSA-NEXT:    v_bfe_i32 v3, v2, 8, 8
8008 ; GFX7-HSA-NEXT:    v_bfe_i32 v2, v2, 0, 8
8009 ; GFX7-HSA-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
8010 ; GFX7-HSA-NEXT:    v_and_b32_e32 v2, 0xffff, v2
8011 ; GFX7-HSA-NEXT:    v_or_b32_e32 v2, v2, v3
8012 ; GFX7-HSA-NEXT:    flat_store_dword v[0:1], v2
8013 ; GFX7-HSA-NEXT:    s_endpgm
8015 ; GFX8-NOHSA-LABEL: constant_sextload_v2i8_to_v2i16:
8016 ; GFX8-NOHSA:       ; %bb.0:
8017 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
8018 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, 0xffff
8019 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8020 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
8021 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s3
8022 ; GFX8-NOHSA-NEXT:    flat_load_ushort v2, v[0:1]
8023 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
8024 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
8025 ; GFX8-NOHSA-NEXT:    s_waitcnt vmcnt(0)
8026 ; 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
8027 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e32 v2, 8, v2
8028 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
8029 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, v3, v2
8030 ; GFX8-NOHSA-NEXT:    flat_store_dword v[0:1], v2
8031 ; GFX8-NOHSA-NEXT:    s_endpgm
8033 ; EG-LABEL: constant_sextload_v2i8_to_v2i16:
8034 ; EG:       ; %bb.0:
8035 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
8036 ; EG-NEXT:    TEX 0 @6
8037 ; EG-NEXT:    ALU 16, @10, KC0[CB0:0-32], KC1[]
8038 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.X, T6.X, 1
8039 ; EG-NEXT:    CF_END
8040 ; EG-NEXT:    PAD
8041 ; EG-NEXT:    Fetch clause starting at 6:
8042 ; EG-NEXT:     VTX_READ_16 T5.X, T5.X, 0, #1
8043 ; EG-NEXT:    ALU clause starting at 8:
8044 ; EG-NEXT:     MOV * T0.Y, T2.X,
8045 ; EG-NEXT:     MOV * T5.X, KC0[2].Z,
8046 ; EG-NEXT:    ALU clause starting at 10:
8047 ; EG-NEXT:     AND_INT T0.W, T5.X, literal.x,
8048 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
8049 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
8050 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
8051 ; EG-NEXT:     MOV * T2.X, PV.W,
8052 ; EG-NEXT:     MOV * T0.Y, PV.X,
8053 ; EG-NEXT:     LSHR * T1.W, PV.Y, literal.x,
8054 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8055 ; EG-NEXT:     BFE_INT T0.Z, T0.W, 0.0, literal.x,
8056 ; EG-NEXT:     BFE_INT * T0.W, PV.W, 0.0, literal.x,
8057 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8058 ; EG-NEXT:     LSHL T0.W, PV.W, literal.x,
8059 ; EG-NEXT:     AND_INT * T1.W, PV.Z, literal.y,
8060 ; EG-NEXT:    16(2.242078e-44), 65535(9.183409e-41)
8061 ; EG-NEXT:     OR_INT T5.X, PS, PV.W,
8062 ; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.x,
8063 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
8064   %load = load <2 x i8>, ptr addrspace(4) %in
8065   %ext = sext <2 x i8> %load to <2 x i16>
8066   store <2 x i16> %ext, ptr addrspace(1) %out
8067   ret void
8070 define amdgpu_kernel void @constant_zextload_v4i8_to_v4i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8071 ; GFX6-NOHSA-LABEL: constant_zextload_v4i8_to_v4i16:
8072 ; GFX6-NOHSA:       ; %bb.0:
8073 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
8074 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8075 ; GFX6-NOHSA-NEXT:    s_load_dword s4, s[2:3], 0x0
8076 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
8077 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
8078 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8079 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s4, 0xff00
8080 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s6, s4, 24
8081 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
8082 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
8083 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v0, s6, v0, 16
8084 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s5, s5, 8
8085 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s5
8086 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v0
8087 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
8088 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
8089 ; GFX6-NOHSA-NEXT:    s_endpgm
8091 ; GFX7-HSA-LABEL: constant_zextload_v4i8_to_v4i16:
8092 ; GFX7-HSA:       ; %bb.0:
8093 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
8094 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8095 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
8096 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
8097 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
8098 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8099 ; GFX7-HSA-NEXT:    s_and_b32 s0, s2, 0xff00
8100 ; GFX7-HSA-NEXT:    s_lshr_b32 s1, s2, 24
8101 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s2
8102 ; GFX7-HSA-NEXT:    s_and_b32 s2, s2, 0xff
8103 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 8
8104 ; GFX7-HSA-NEXT:    v_alignbit_b32 v2, s1, v2, 16
8105 ; GFX7-HSA-NEXT:    s_or_b32 s0, s2, s0
8106 ; GFX7-HSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v2
8107 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s0
8108 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
8109 ; GFX7-HSA-NEXT:    s_endpgm
8111 ; GFX8-NOHSA-LABEL: constant_zextload_v4i8_to_v4i16:
8112 ; GFX8-NOHSA:       ; %bb.0:
8113 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
8114 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8115 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
8116 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
8117 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
8118 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8119 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s2
8120 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s2, 24
8121 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s2
8122 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s2, 0xff
8123 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v3, s0, v3, 16
8124 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
8125 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v3
8126 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s1, v2
8127 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
8128 ; GFX8-NOHSA-NEXT:    s_endpgm
8130 ; EG-LABEL: constant_zextload_v4i8_to_v4i16:
8131 ; EG:       ; %bb.0:
8132 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
8133 ; EG-NEXT:    TEX 0 @6
8134 ; EG-NEXT:    ALU 31, @10, KC0[CB0:0-32], KC1[]
8135 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XY, T7.X, 1
8136 ; EG-NEXT:    CF_END
8137 ; EG-NEXT:    PAD
8138 ; EG-NEXT:    Fetch clause starting at 6:
8139 ; EG-NEXT:     VTX_READ_32 T7.X, T7.X, 0, #1
8140 ; EG-NEXT:    ALU clause starting at 8:
8141 ; EG-NEXT:     MOV * T0.Y, T4.X,
8142 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
8143 ; EG-NEXT:    ALU clause starting at 10:
8144 ; EG-NEXT:     AND_INT T0.W, T7.X, literal.x,
8145 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
8146 ; EG-NEXT:    255(3.573311e-43), -65536(nan)
8147 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
8148 ; EG-NEXT:     MOV * T4.X, PV.W,
8149 ; EG-NEXT:     MOV T0.Y, PV.X,
8150 ; EG-NEXT:     LSHL * T0.W, T7.X, literal.x,
8151 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8152 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8153 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
8154 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8155 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
8156 ; EG-NEXT:     MOV T4.X, PV.W,
8157 ; EG-NEXT:     MOV T0.Y, T5.X,
8158 ; EG-NEXT:     MOV * T0.W, literal.x,
8159 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8160 ; EG-NEXT:     BFE_UINT T0.W, T7.X, literal.x, PV.W,
8161 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
8162 ; EG-NEXT:    16(2.242078e-44), -65536(nan)
8163 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
8164 ; EG-NEXT:     MOV * T5.X, PV.W,
8165 ; EG-NEXT:     MOV T0.Y, PV.X,
8166 ; EG-NEXT:     LSHR * T0.W, T7.X, literal.x,
8167 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8168 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8169 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
8170 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8171 ; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
8172 ; EG-NEXT:     OR_INT * T8.Y, PV.W, PS,
8173 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
8174 ; EG-NEXT:     MOV T5.X, PV.Y,
8175 ; EG-NEXT:     MOV * T8.X, T4.X,
8176   %load = load <4 x i8>, ptr addrspace(4) %in
8177   %ext = zext <4 x i8> %load to <4 x i16>
8178   store <4 x i16> %ext, ptr addrspace(1) %out
8179   ret void
8182 define amdgpu_kernel void @constant_sextload_v4i8_to_v4i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8183 ; GFX6-NOHSA-LABEL: constant_sextload_v4i8_to_v4i16:
8184 ; GFX6-NOHSA:       ; %bb.0:
8185 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
8186 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8187 ; GFX6-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
8188 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
8189 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8190 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s4, s2, 24
8191 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s5, s2, 0x80010
8192 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s6, s2, 0x80008
8193 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
8194 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s4, s4, 16
8195 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xffff
8196 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s6, s6, 16
8197 ; GFX6-NOHSA-NEXT:    s_and_b32 s2, s2, 0xffff
8198 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s5, s4
8199 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s2, s6
8200 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
8201 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
8202 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s4
8203 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
8204 ; GFX6-NOHSA-NEXT:    s_endpgm
8206 ; GFX7-HSA-LABEL: constant_sextload_v4i8_to_v4i16:
8207 ; GFX7-HSA:       ; %bb.0:
8208 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
8209 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8210 ; GFX7-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
8211 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
8212 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s1
8213 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8214 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s2, 24
8215 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s2, 0x80010
8216 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s2, 0x80008
8217 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s2, s2
8218 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
8219 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
8220 ; GFX7-HSA-NEXT:    s_lshl_b32 s3, s3, 16
8221 ; GFX7-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
8222 ; GFX7-HSA-NEXT:    s_or_b32 s0, s1, s0
8223 ; GFX7-HSA-NEXT:    s_or_b32 s1, s2, s3
8224 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s1
8225 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
8226 ; GFX7-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
8227 ; GFX7-HSA-NEXT:    s_endpgm
8229 ; GFX8-NOHSA-LABEL: constant_sextload_v4i8_to_v4i16:
8230 ; GFX8-NOHSA:       ; %bb.0:
8231 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
8232 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8233 ; GFX8-NOHSA-NEXT:    s_load_dword s2, s[2:3], 0x0
8234 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
8235 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
8236 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8237 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s2, 16
8238 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s1, s2, 24
8239 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s0, 0x80000
8240 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s2, 0x80000
8241 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v2, 8, s2
8242 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s1, 16
8243 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
8244 ; GFX8-NOHSA-NEXT:    s_and_b32 s2, 0xffff, s3
8245 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
8246 ; GFX8-NOHSA-NEXT:    s_or_b32 s0, s0, s1
8247 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s2, v2
8248 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
8249 ; GFX8-NOHSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
8250 ; GFX8-NOHSA-NEXT:    s_endpgm
8252 ; EG-LABEL: constant_sextload_v4i8_to_v4i16:
8253 ; EG:       ; %bb.0:
8254 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
8255 ; EG-NEXT:    TEX 0 @6
8256 ; EG-NEXT:    ALU 37, @10, KC0[CB0:0-32], KC1[]
8257 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XY, T7.X, 1
8258 ; EG-NEXT:    CF_END
8259 ; EG-NEXT:    PAD
8260 ; EG-NEXT:    Fetch clause starting at 6:
8261 ; EG-NEXT:     VTX_READ_32 T7.X, T7.X, 0, #1
8262 ; EG-NEXT:    ALU clause starting at 8:
8263 ; EG-NEXT:     MOV * T0.Y, T4.X,
8264 ; EG-NEXT:     MOV * T7.X, KC0[2].Z,
8265 ; EG-NEXT:    ALU clause starting at 10:
8266 ; EG-NEXT:     BFE_INT * T0.W, T7.X, 0.0, literal.x,
8267 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8268 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
8269 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
8270 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
8271 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
8272 ; EG-NEXT:     MOV * T4.X, PV.W,
8273 ; EG-NEXT:     MOV T0.Y, PV.X,
8274 ; EG-NEXT:     LSHR * T0.W, T7.X, literal.x,
8275 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8276 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
8277 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
8278 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
8279 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
8280 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8281 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
8282 ; EG-NEXT:     MOV T4.X, PV.W,
8283 ; EG-NEXT:     MOV T0.Y, T5.X,
8284 ; EG-NEXT:     LSHR * T0.W, T7.X, literal.x, BS:VEC_120/SCL_212
8285 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8286 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
8287 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
8288 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
8289 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
8290 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
8291 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
8292 ; EG-NEXT:     MOV * T5.X, PV.W,
8293 ; EG-NEXT:     MOV T0.Y, PV.X,
8294 ; EG-NEXT:     ASHR * T0.W, T7.X, literal.x,
8295 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
8296 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8297 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
8298 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
8299 ; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
8300 ; EG-NEXT:     OR_INT * T8.Y, PV.W, PS,
8301 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
8302 ; EG-NEXT:     MOV T5.X, PV.Y,
8303 ; EG-NEXT:     MOV * T8.X, T4.X,
8304   %load = load <4 x i8>, ptr addrspace(4) %in
8305   %ext = sext <4 x i8> %load to <4 x i16>
8306   store <4 x i16> %ext, ptr addrspace(1) %out
8307   ret void
8310 define amdgpu_kernel void @constant_zextload_v8i8_to_v8i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8311 ; GFX6-NOHSA-LABEL: constant_zextload_v8i8_to_v8i16:
8312 ; GFX6-NOHSA:       ; %bb.0:
8313 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
8314 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8315 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
8316 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
8317 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
8318 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8319 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s4, 0xff00
8320 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s7, s4, 24
8321 ; GFX6-NOHSA-NEXT:    s_and_b32 s8, s5, 0xff00
8322 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s9, s5, 24
8323 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
8324 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xff
8325 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s4
8326 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
8327 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v0, s9, v0, 16
8328 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s8, s8, 8
8329 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v1, s7, v1, 16
8330 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s6, s6, 8
8331 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
8332 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s8
8333 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s6
8334 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v1
8335 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
8336 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
8337 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
8338 ; GFX6-NOHSA-NEXT:    s_endpgm
8340 ; GFX7-HSA-LABEL: constant_zextload_v8i8_to_v8i16:
8341 ; GFX7-HSA:       ; %bb.0:
8342 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
8343 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8344 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
8345 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
8346 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
8347 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8348 ; GFX7-HSA-NEXT:    s_lshr_b32 s5, s3, 24
8349 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
8350 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s5, v0, 16
8351 ; GFX7-HSA-NEXT:    s_and_b32 s0, s2, 0xff00
8352 ; GFX7-HSA-NEXT:    s_lshr_b32 s1, s2, 24
8353 ; GFX7-HSA-NEXT:    s_and_b32 s4, s3, 0xff00
8354 ; GFX7-HSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
8355 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
8356 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xff
8357 ; GFX7-HSA-NEXT:    s_lshl_b32 s4, s4, 8
8358 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s1, v0, 16
8359 ; GFX7-HSA-NEXT:    s_and_b32 s1, s2, 0xff
8360 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 8
8361 ; GFX7-HSA-NEXT:    s_or_b32 s3, s3, s4
8362 ; GFX7-HSA-NEXT:    s_or_b32 s0, s1, s0
8363 ; GFX7-HSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v0
8364 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
8365 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
8366 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8367 ; GFX7-HSA-NEXT:    s_endpgm
8369 ; GFX8-NOHSA-LABEL: constant_zextload_v8i8_to_v8i16:
8370 ; GFX8-NOHSA:       ; %bb.0:
8371 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
8372 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8373 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
8374 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
8375 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
8376 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8377 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
8378 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s2, 24
8379 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s1, s3, 24
8380 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v3, 8, s2
8381 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s3, 0x80010
8382 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s1, 16
8383 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v0, s0, v0, 16
8384 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s3
8385 ; GFX8-NOHSA-NEXT:    s_or_b32 s0, s4, s1
8386 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v0
8387 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s2, 0xff
8388 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v3
8389 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s1, v0
8390 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s3, 0xff
8391 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
8392 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s1, v2
8393 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
8394 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8395 ; GFX8-NOHSA-NEXT:    s_endpgm
8397 ; EG-LABEL: constant_zextload_v8i8_to_v8i16:
8398 ; EG:       ; %bb.0:
8399 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
8400 ; EG-NEXT:    TEX 0 @6
8401 ; EG-NEXT:    ALU 61, @10, KC0[CB0:0-32], KC1[]
8402 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T11.X, 1
8403 ; EG-NEXT:    CF_END
8404 ; EG-NEXT:    PAD
8405 ; EG-NEXT:    Fetch clause starting at 6:
8406 ; EG-NEXT:     VTX_READ_64 T11.XY, T11.X, 0, #1
8407 ; EG-NEXT:    ALU clause starting at 8:
8408 ; EG-NEXT:     MOV * T0.Y, T8.X,
8409 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
8410 ; EG-NEXT:    ALU clause starting at 10:
8411 ; EG-NEXT:     AND_INT T0.W, T11.X, literal.x,
8412 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
8413 ; EG-NEXT:    255(3.573311e-43), -65536(nan)
8414 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
8415 ; EG-NEXT:     MOV * T8.X, PV.W,
8416 ; EG-NEXT:     MOV T0.Y, PV.X,
8417 ; EG-NEXT:     LSHL * T0.W, T11.X, literal.x,
8418 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8419 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8420 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
8421 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8422 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
8423 ; EG-NEXT:     MOV T8.X, PV.W,
8424 ; EG-NEXT:     MOV T0.Y, T9.X,
8425 ; EG-NEXT:     MOV * T0.W, literal.x,
8426 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8427 ; EG-NEXT:     BFE_UINT T1.W, T11.X, literal.x, PV.W,
8428 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.y,
8429 ; EG-NEXT:    16(2.242078e-44), -65536(nan)
8430 ; EG-NEXT:     OR_INT * T1.W, PS, PV.W,
8431 ; EG-NEXT:     MOV * T9.X, PV.W,
8432 ; EG-NEXT:     MOV T0.Y, PV.X,
8433 ; EG-NEXT:     LSHR * T1.W, T11.X, literal.x,
8434 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8435 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
8436 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
8437 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8438 ; EG-NEXT:     OR_INT * T12.Y, PV.W, PS,
8439 ; EG-NEXT:     MOV T9.X, PV.Y,
8440 ; EG-NEXT:     MOV * T0.Y, T4.X,
8441 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8442 ; EG-NEXT:     AND_INT * T2.W, T11.Y, literal.y,
8443 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
8444 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
8445 ; EG-NEXT:     MOV * T4.X, PV.W,
8446 ; EG-NEXT:     MOV T0.Y, PV.X,
8447 ; EG-NEXT:     LSHL * T1.W, T11.Y, literal.x,
8448 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8449 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
8450 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
8451 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8452 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
8453 ; EG-NEXT:     MOV T4.X, PV.W,
8454 ; EG-NEXT:     MOV T0.Y, T5.X,
8455 ; EG-NEXT:     BFE_UINT * T0.W, T11.Y, literal.x, T0.W,
8456 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8457 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.x,
8458 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
8459 ; EG-NEXT:     OR_INT * T0.W, PV.W, T0.W,
8460 ; EG-NEXT:     MOV * T5.X, PV.W,
8461 ; EG-NEXT:     MOV T0.Y, PV.X,
8462 ; EG-NEXT:     LSHR * T0.W, T11.Y, literal.x,
8463 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8464 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8465 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
8466 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8467 ; EG-NEXT:     LSHR T11.X, KC0[2].Y, literal.x,
8468 ; EG-NEXT:     OR_INT * T12.W, PV.W, PS,
8469 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
8470 ; EG-NEXT:     MOV T5.X, PV.W,
8471 ; EG-NEXT:     MOV * T12.X, T8.X,
8472 ; EG-NEXT:     MOV * T12.Z, T4.X,
8473   %load = load <8 x i8>, ptr addrspace(4) %in
8474   %ext = zext <8 x i8> %load to <8 x i16>
8475   store <8 x i16> %ext, ptr addrspace(1) %out
8476   ret void
8479 define amdgpu_kernel void @constant_sextload_v8i8_to_v8i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8480 ; GFX6-NOHSA-LABEL: constant_sextload_v8i8_to_v8i16:
8481 ; GFX6-NOHSA:       ; %bb.0:
8482 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
8483 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8484 ; GFX6-NOHSA-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
8485 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
8486 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8487 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s2, s5, 24
8488 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s6, s5, 0x80010
8489 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s7, s5, 0x80008
8490 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
8491 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s8, s4, 24
8492 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s9, s4, 0x80010
8493 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s10, s4, 0x80008
8494 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
8495 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s2, s2, 16
8496 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s6, 0xffff
8497 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s7, s7, 16
8498 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xffff
8499 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s8, s8, 16
8500 ; GFX6-NOHSA-NEXT:    s_and_b32 s9, s9, 0xffff
8501 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s10, s10, 16
8502 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xffff
8503 ; GFX6-NOHSA-NEXT:    s_or_b32 s6, s6, s2
8504 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s7
8505 ; GFX6-NOHSA-NEXT:    s_or_b32 s7, s9, s8
8506 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s10
8507 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
8508 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
8509 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s7
8510 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
8511 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s6
8512 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
8513 ; GFX6-NOHSA-NEXT:    s_endpgm
8515 ; GFX7-HSA-LABEL: constant_sextload_v8i8_to_v8i16:
8516 ; GFX7-HSA:       ; %bb.0:
8517 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
8518 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8519 ; GFX7-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
8520 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
8521 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
8522 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8523 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s3, 24
8524 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s3, 0x80010
8525 ; GFX7-HSA-NEXT:    s_bfe_i32 s4, s3, 0x80008
8526 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s3, s3
8527 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
8528 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
8529 ; GFX7-HSA-NEXT:    s_lshl_b32 s4, s4, 16
8530 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
8531 ; GFX7-HSA-NEXT:    s_or_b32 s0, s1, s0
8532 ; GFX7-HSA-NEXT:    s_or_b32 s1, s3, s4
8533 ; GFX7-HSA-NEXT:    s_ashr_i32 s3, s2, 24
8534 ; GFX7-HSA-NEXT:    s_bfe_i32 s4, s2, 0x80010
8535 ; GFX7-HSA-NEXT:    s_lshl_b32 s3, s3, 16
8536 ; GFX7-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
8537 ; GFX7-HSA-NEXT:    s_or_b32 s3, s4, s3
8538 ; GFX7-HSA-NEXT:    s_bfe_i32 s4, s2, 0x80008
8539 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s2, s2
8540 ; GFX7-HSA-NEXT:    s_lshl_b32 s4, s4, 16
8541 ; GFX7-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
8542 ; GFX7-HSA-NEXT:    s_or_b32 s2, s2, s4
8543 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
8544 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s3
8545 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s1
8546 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
8547 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8548 ; GFX7-HSA-NEXT:    s_endpgm
8550 ; GFX8-NOHSA-LABEL: constant_sextload_v8i8_to_v8i16:
8551 ; GFX8-NOHSA:       ; %bb.0:
8552 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
8553 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8554 ; GFX8-NOHSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
8555 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
8556 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
8557 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8558 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s6, s2, 0x80000
8559 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v0, 8, s2
8560 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[0:1], s[2:3], 56
8561 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s5, s3, 16
8562 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, 0xffff, s6
8563 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
8564 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s1, v0
8565 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s5, 0x80000
8566 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s0, s0, 16
8567 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, 0xffff, s1
8568 ; GFX8-NOHSA-NEXT:    s_or_b32 s0, s1, s0
8569 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s3, 0x80000
8570 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v1, 8, s3
8571 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s4, s2, 16
8572 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, 0xffff, s1
8573 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
8574 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s1, v1
8575 ; GFX8-NOHSA-NEXT:    s_ashr_i32 s1, s2, 24
8576 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s2, s4, 0x80000
8577 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s1, 16
8578 ; GFX8-NOHSA-NEXT:    s_and_b32 s2, 0xffff, s2
8579 ; GFX8-NOHSA-NEXT:    s_or_b32 s1, s2, s1
8580 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s1
8581 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s0
8582 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8583 ; GFX8-NOHSA-NEXT:    s_endpgm
8585 ; EG-LABEL: constant_sextload_v8i8_to_v8i16:
8586 ; EG:       ; %bb.0:
8587 ; EG-NEXT:    ALU 1, @8, KC0[CB0:0-32], KC1[]
8588 ; EG-NEXT:    TEX 0 @6
8589 ; EG-NEXT:    ALU 74, @10, KC0[CB0:0-32], KC1[]
8590 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T11.X, 1
8591 ; EG-NEXT:    CF_END
8592 ; EG-NEXT:    PAD
8593 ; EG-NEXT:    Fetch clause starting at 6:
8594 ; EG-NEXT:     VTX_READ_64 T11.XY, T11.X, 0, #1
8595 ; EG-NEXT:    ALU clause starting at 8:
8596 ; EG-NEXT:     MOV * T0.Y, T8.X,
8597 ; EG-NEXT:     MOV * T11.X, KC0[2].Z,
8598 ; EG-NEXT:    ALU clause starting at 10:
8599 ; EG-NEXT:     BFE_INT * T0.W, T11.X, 0.0, literal.x,
8600 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8601 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
8602 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
8603 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
8604 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
8605 ; EG-NEXT:     MOV * T8.X, PV.W,
8606 ; EG-NEXT:     MOV T0.Y, PV.X,
8607 ; EG-NEXT:     LSHR * T0.W, T11.X, literal.x,
8608 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8609 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
8610 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
8611 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
8612 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
8613 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8614 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
8615 ; EG-NEXT:     MOV T8.X, PV.W,
8616 ; EG-NEXT:     MOV T0.Y, T9.X,
8617 ; EG-NEXT:     LSHR * T0.W, T11.X, literal.x, BS:VEC_120/SCL_212
8618 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8619 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
8620 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
8621 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
8622 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
8623 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
8624 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
8625 ; EG-NEXT:     MOV * T9.X, PV.W,
8626 ; EG-NEXT:     MOV T0.Y, PV.X,
8627 ; EG-NEXT:     ASHR * T0.W, T11.X, literal.x,
8628 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
8629 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8630 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
8631 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
8632 ; EG-NEXT:     OR_INT * T12.Y, PV.W, PS,
8633 ; EG-NEXT:     MOV T9.X, PV.Y,
8634 ; EG-NEXT:     MOV T0.Y, T4.X,
8635 ; EG-NEXT:     BFE_INT * T0.W, T11.Y, 0.0, literal.x,
8636 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8637 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8638 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
8639 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
8640 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
8641 ; EG-NEXT:     MOV * T4.X, PV.W,
8642 ; EG-NEXT:     MOV T0.Y, PV.X,
8643 ; EG-NEXT:     LSHR * T0.W, T11.Y, literal.x,
8644 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8645 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
8646 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
8647 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
8648 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
8649 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8650 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
8651 ; EG-NEXT:     MOV T4.X, PV.W,
8652 ; EG-NEXT:     MOV T0.Y, T5.X,
8653 ; EG-NEXT:     LSHR * T0.W, T11.Y, literal.x,
8654 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8655 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
8656 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
8657 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
8658 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
8659 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
8660 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
8661 ; EG-NEXT:     MOV * T5.X, PV.W,
8662 ; EG-NEXT:     MOV T0.Y, PV.X,
8663 ; EG-NEXT:     ASHR * T0.W, T11.Y, literal.x,
8664 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
8665 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8666 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
8667 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
8668 ; EG-NEXT:     LSHR T11.X, KC0[2].Y, literal.x,
8669 ; EG-NEXT:     OR_INT * T12.W, PV.W, PS,
8670 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
8671 ; EG-NEXT:     MOV T5.X, PV.W,
8672 ; EG-NEXT:     MOV * T12.X, T8.X,
8673 ; EG-NEXT:     MOV * T12.Z, T4.X,
8674   %load = load <8 x i8>, ptr addrspace(4) %in
8675   %ext = sext <8 x i8> %load to <8 x i16>
8676   store <8 x i16> %ext, ptr addrspace(1) %out
8677   ret void
8680 define amdgpu_kernel void @constant_zextload_v16i8_to_v16i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8681 ; GFX6-NOHSA-LABEL: constant_zextload_v16i8_to_v16i16:
8682 ; GFX6-NOHSA:       ; %bb.0:
8683 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
8684 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8685 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
8686 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
8687 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
8688 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8689 ; GFX6-NOHSA-NEXT:    s_and_b32 s8, s6, 0xff00
8690 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s9, s6, 24
8691 ; GFX6-NOHSA-NEXT:    s_and_b32 s10, s7, 0xff00
8692 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s11, s7, 24
8693 ; GFX6-NOHSA-NEXT:    s_and_b32 s12, s4, 0xff00
8694 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s13, s4, 24
8695 ; GFX6-NOHSA-NEXT:    s_and_b32 s14, s5, 0xff00
8696 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s15, s5, 24
8697 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s5
8698 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xff
8699 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s4
8700 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
8701 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
8702 ; GFX6-NOHSA-NEXT:    s_and_b32 s7, s7, 0xff
8703 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s6
8704 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s6, 0xff
8705 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v0, s15, v0, 16
8706 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s14, s14, 8
8707 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v1, s13, v1, 16
8708 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s12, s12, 8
8709 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v2, s11, v2, 16
8710 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s10, s10, 8
8711 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v4, s9, v3, 16
8712 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s8, s8, 8
8713 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
8714 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s14
8715 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v1
8716 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s12
8717 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v7, 0xff00ff, v2
8718 ; GFX6-NOHSA-NEXT:    s_or_b32 s7, s7, s10
8719 ; GFX6-NOHSA-NEXT:    s_or_b32 s6, s6, s8
8720 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v5, 0xff00ff, v4
8721 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s6
8722 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s7
8723 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:16
8724 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
8725 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
8726 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
8727 ; GFX6-NOHSA-NEXT:    s_endpgm
8729 ; GFX7-HSA-LABEL: constant_zextload_v16i8_to_v16i16:
8730 ; GFX7-HSA:       ; %bb.0:
8731 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
8732 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8733 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
8734 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8735 ; GFX7-HSA-NEXT:    s_lshr_b32 s13, s5, 24
8736 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
8737 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s13, v0, 16
8738 ; GFX7-HSA-NEXT:    s_lshr_b32 s11, s4, 24
8739 ; GFX7-HSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
8740 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
8741 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s11, v0, 16
8742 ; GFX7-HSA-NEXT:    s_lshr_b32 s9, s7, 24
8743 ; GFX7-HSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v0
8744 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
8745 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s9, v0, 16
8746 ; GFX7-HSA-NEXT:    s_and_b32 s2, s6, 0xff00
8747 ; GFX7-HSA-NEXT:    s_lshr_b32 s3, s6, 24
8748 ; GFX7-HSA-NEXT:    s_and_b32 s8, s7, 0xff00
8749 ; GFX7-HSA-NEXT:    s_and_b32 s10, s4, 0xff00
8750 ; GFX7-HSA-NEXT:    s_and_b32 s12, s5, 0xff00
8751 ; GFX7-HSA-NEXT:    v_and_b32_e32 v7, 0xff00ff, v0
8752 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
8753 ; GFX7-HSA-NEXT:    s_and_b32 s5, s5, 0xff
8754 ; GFX7-HSA-NEXT:    s_lshl_b32 s12, s12, 8
8755 ; GFX7-HSA-NEXT:    s_and_b32 s4, s4, 0xff
8756 ; GFX7-HSA-NEXT:    s_lshl_b32 s10, s10, 8
8757 ; GFX7-HSA-NEXT:    s_and_b32 s7, s7, 0xff
8758 ; GFX7-HSA-NEXT:    s_lshl_b32 s8, s8, 8
8759 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s3, v0, 16
8760 ; GFX7-HSA-NEXT:    s_and_b32 s3, s6, 0xff
8761 ; GFX7-HSA-NEXT:    s_lshl_b32 s2, s2, 8
8762 ; GFX7-HSA-NEXT:    s_or_b32 s5, s5, s12
8763 ; GFX7-HSA-NEXT:    s_or_b32 s4, s4, s10
8764 ; GFX7-HSA-NEXT:    s_or_b32 s7, s7, s8
8765 ; GFX7-HSA-NEXT:    s_or_b32 s2, s3, s2
8766 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
8767 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
8768 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
8769 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s3
8770 ; GFX7-HSA-NEXT:    v_and_b32_e32 v5, 0xff00ff, v0
8771 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s7
8772 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s2
8773 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
8774 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
8775 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
8776 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
8777 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
8778 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8779 ; GFX7-HSA-NEXT:    s_endpgm
8781 ; GFX8-NOHSA-LABEL: constant_zextload_v16i8_to_v16i16:
8782 ; GFX8-NOHSA:       ; %bb.0:
8783 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
8784 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8785 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
8786 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8787 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s4
8788 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s3, s4, 24
8789 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s4
8790 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v1, s3, v1, 16
8791 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, s4, 0xff
8792 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
8793 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s3, v0
8794 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s3, s7, 24
8795 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s3, s3, 16
8796 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s4, s7, 0x80010
8797 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s8, s5, 24
8798 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s9, s5, 0x80010
8799 ; GFX8-NOHSA-NEXT:    s_and_b32 s10, s5, 0xff
8800 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s5, s5, 8
8801 ; GFX8-NOHSA-NEXT:    s_or_b32 s3, s4, s3
8802 ; GFX8-NOHSA-NEXT:    s_and_b32 s4, s7, 0xff
8803 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s7, s7, 8
8804 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s6
8805 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s2, s6, 24
8806 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s8, s8, 16
8807 ; GFX8-NOHSA-NEXT:    s_and_b32 s5, s5, 0xff0000
8808 ; GFX8-NOHSA-NEXT:    s_and_b32 s7, s7, 0xff0000
8809 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s6
8810 ; GFX8-NOHSA-NEXT:    s_or_b32 s8, s9, s8
8811 ; GFX8-NOHSA-NEXT:    s_or_b32 s5, s10, s5
8812 ; GFX8-NOHSA-NEXT:    s_or_b32 s4, s4, s7
8813 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v3, s2, v3, 16
8814 ; GFX8-NOHSA-NEXT:    s_and_b32 s2, s6, 0xff
8815 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
8816 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s2, v2
8817 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
8818 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s3
8819 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
8820 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s3
8821 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v3
8822 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s4
8823 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s2
8824 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
8825 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v1
8826 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
8827 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
8828 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
8829 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
8830 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8831 ; GFX8-NOHSA-NEXT:    s_endpgm
8833 ; EG-LABEL: constant_zextload_v16i8_to_v16i16:
8834 ; EG:       ; %bb.0:
8835 ; EG-NEXT:    ALU 1, @10, KC0[CB0:0-32], KC1[]
8836 ; EG-NEXT:    TEX 0 @8
8837 ; EG-NEXT:    ALU 103, @12, KC0[], KC1[]
8838 ; EG-NEXT:    ALU 20, @116, KC0[CB0:0-32], KC1[]
8839 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T22.X, 0
8840 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T21.X, 1
8841 ; EG-NEXT:    CF_END
8842 ; EG-NEXT:    PAD
8843 ; EG-NEXT:    Fetch clause starting at 8:
8844 ; EG-NEXT:     VTX_READ_128 T19.XYZW, T19.X, 0, #1
8845 ; EG-NEXT:    ALU clause starting at 10:
8846 ; EG-NEXT:     MOV * T0.Y, T16.X,
8847 ; EG-NEXT:     MOV * T19.X, KC0[2].Z,
8848 ; EG-NEXT:    ALU clause starting at 12:
8849 ; EG-NEXT:     AND_INT T0.W, T19.X, literal.x,
8850 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
8851 ; EG-NEXT:    255(3.573311e-43), -65536(nan)
8852 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
8853 ; EG-NEXT:     MOV * T16.X, PV.W,
8854 ; EG-NEXT:     MOV T0.Y, PV.X,
8855 ; EG-NEXT:     LSHL * T0.W, T19.X, literal.x,
8856 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8857 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8858 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
8859 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8860 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
8861 ; EG-NEXT:     MOV T16.X, PV.W,
8862 ; EG-NEXT:     MOV T0.Y, T17.X,
8863 ; EG-NEXT:     MOV * T0.W, literal.x,
8864 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8865 ; EG-NEXT:     BFE_UINT T1.W, T19.X, literal.x, PV.W,
8866 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.y,
8867 ; EG-NEXT:    16(2.242078e-44), -65536(nan)
8868 ; EG-NEXT:     OR_INT * T1.W, PS, PV.W,
8869 ; EG-NEXT:     MOV * T17.X, PV.W,
8870 ; EG-NEXT:     MOV T0.Y, PV.X,
8871 ; EG-NEXT:     LSHR * T1.W, T19.X, literal.x,
8872 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8873 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
8874 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
8875 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8876 ; EG-NEXT:     OR_INT * T20.Y, PV.W, PS,
8877 ; EG-NEXT:     MOV T17.X, PV.Y,
8878 ; EG-NEXT:     MOV * T0.Y, T12.X,
8879 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8880 ; EG-NEXT:     AND_INT * T2.W, T19.Y, literal.y,
8881 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
8882 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
8883 ; EG-NEXT:     MOV * T12.X, PV.W,
8884 ; EG-NEXT:     MOV T0.Y, PV.X,
8885 ; EG-NEXT:     LSHL * T1.W, T19.Y, literal.x,
8886 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8887 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
8888 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
8889 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8890 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
8891 ; EG-NEXT:     MOV T12.X, PV.W,
8892 ; EG-NEXT:     MOV T0.Y, T13.X,
8893 ; EG-NEXT:     BFE_UINT * T1.W, T19.Y, literal.x, T0.W,
8894 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8895 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
8896 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
8897 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
8898 ; EG-NEXT:     MOV * T13.X, PV.W,
8899 ; EG-NEXT:     MOV T0.Y, PV.X,
8900 ; EG-NEXT:     LSHR * T1.W, T19.Y, literal.x,
8901 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8902 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
8903 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
8904 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8905 ; EG-NEXT:     OR_INT * T20.W, PV.W, PS,
8906 ; EG-NEXT:     MOV T13.X, PV.W,
8907 ; EG-NEXT:     MOV * T0.Y, T8.X,
8908 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8909 ; EG-NEXT:     AND_INT * T2.W, T19.Z, literal.y,
8910 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
8911 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
8912 ; EG-NEXT:     MOV * T8.X, PV.W,
8913 ; EG-NEXT:     MOV T0.Y, PV.X,
8914 ; EG-NEXT:     LSHL * T1.W, T19.Z, literal.x,
8915 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8916 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
8917 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
8918 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8919 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
8920 ; EG-NEXT:     MOV T8.X, PV.W,
8921 ; EG-NEXT:     MOV T0.Y, T9.X,
8922 ; EG-NEXT:     BFE_UINT * T1.W, T19.Z, literal.x, T0.W,
8923 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8924 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
8925 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
8926 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
8927 ; EG-NEXT:     MOV * T9.X, PV.W,
8928 ; EG-NEXT:     MOV T0.Y, PV.X,
8929 ; EG-NEXT:     LSHR * T1.W, T19.Z, literal.x,
8930 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8931 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
8932 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
8933 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8934 ; EG-NEXT:     OR_INT * T19.Y, PV.W, PS,
8935 ; EG-NEXT:     MOV T9.X, PV.Y,
8936 ; EG-NEXT:     MOV * T0.Y, T4.X,
8937 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
8938 ; EG-NEXT:     AND_INT * T2.W, T19.W, literal.y,
8939 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
8940 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
8941 ; EG-NEXT:     MOV * T4.X, PV.W,
8942 ; EG-NEXT:     MOV T0.Y, PV.X,
8943 ; EG-NEXT:     LSHL * T1.W, T19.W, literal.x,
8944 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
8945 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
8946 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
8947 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
8948 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
8949 ; EG-NEXT:     MOV T4.X, PV.W,
8950 ; EG-NEXT:     MOV T0.Y, T5.X,
8951 ; EG-NEXT:     BFE_UINT * T0.W, T19.W, literal.x, T0.W,
8952 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8953 ; EG-NEXT:    ALU clause starting at 116:
8954 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.x,
8955 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
8956 ; EG-NEXT:     OR_INT * T0.W, PV.W, T0.W,
8957 ; EG-NEXT:     MOV * T5.X, PV.W,
8958 ; EG-NEXT:     MOV T0.Y, PV.X,
8959 ; EG-NEXT:     LSHR T0.W, T19.W, literal.x,
8960 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
8961 ; EG-NEXT:    8(1.121039e-44), 16(2.242078e-44)
8962 ; EG-NEXT:     LSHR T21.X, PS, literal.x,
8963 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.y,
8964 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.z,
8965 ; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
8966 ; EG-NEXT:    16711680(2.341805e-38), 0(0.000000e+00)
8967 ; EG-NEXT:     LSHR T22.X, KC0[2].Y, literal.x,
8968 ; EG-NEXT:     OR_INT * T19.W, PV.W, PS,
8969 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
8970 ; EG-NEXT:     MOV T5.X, PV.W,
8971 ; EG-NEXT:     MOV * T20.X, T16.X,
8972 ; EG-NEXT:     MOV * T20.Z, T12.X,
8973 ; EG-NEXT:     MOV T19.X, T8.X,
8974 ; EG-NEXT:     MOV * T19.Z, T4.X, BS:VEC_120/SCL_212
8975   %load = load <16 x i8>, ptr addrspace(4) %in
8976   %ext = zext <16 x i8> %load to <16 x i16>
8977   store <16 x i16> %ext, ptr addrspace(1) %out
8978   ret void
8981 define amdgpu_kernel void @constant_sextload_v16i8_to_v16i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8982 ; GFX6-NOHSA-LABEL: constant_sextload_v16i8_to_v16i16:
8983 ; GFX6-NOHSA:       ; %bb.0:
8984 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
8985 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8986 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
8987 ; GFX6-NOHSA-NEXT:    s_mov_b32 s3, 0xf000
8988 ; GFX6-NOHSA-NEXT:    s_mov_b32 s2, -1
8989 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
8990 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s8, s5, 24
8991 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s9, s5, 0x80010
8992 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s10, s5, 0x80008
8993 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
8994 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s11, s4, 24
8995 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s12, s4, 0x80010
8996 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s13, s4, 0x80008
8997 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
8998 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s14, s7, 24
8999 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s15, s7, 0x80010
9000 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s16, s7, 0x80008
9001 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
9002 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s17, s6, 24
9003 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s18, s6, 0x80010
9004 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s19, s6, 0x80008
9005 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
9006 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s8, s8, 16
9007 ; GFX6-NOHSA-NEXT:    s_and_b32 s9, s9, 0xffff
9008 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s10, s10, 16
9009 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xffff
9010 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s11, s11, 16
9011 ; GFX6-NOHSA-NEXT:    s_and_b32 s12, s12, 0xffff
9012 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s13, s13, 16
9013 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xffff
9014 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s14, s14, 16
9015 ; GFX6-NOHSA-NEXT:    s_and_b32 s15, s15, 0xffff
9016 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s16, s16, 16
9017 ; GFX6-NOHSA-NEXT:    s_and_b32 s7, s7, 0xffff
9018 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s17, s17, 16
9019 ; GFX6-NOHSA-NEXT:    s_and_b32 s18, s18, 0xffff
9020 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s19, s19, 16
9021 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s6, 0xffff
9022 ; GFX6-NOHSA-NEXT:    s_or_b32 s8, s9, s8
9023 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s10
9024 ; GFX6-NOHSA-NEXT:    s_or_b32 s9, s12, s11
9025 ; GFX6-NOHSA-NEXT:    s_or_b32 s10, s15, s14
9026 ; GFX6-NOHSA-NEXT:    s_or_b32 s7, s7, s16
9027 ; GFX6-NOHSA-NEXT:    s_or_b32 s11, s18, s17
9028 ; GFX6-NOHSA-NEXT:    s_or_b32 s6, s6, s19
9029 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s13
9030 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
9031 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s11
9032 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
9033 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s10
9034 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
9035 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
9036 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
9037 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s9
9038 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
9039 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s8
9040 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
9041 ; GFX6-NOHSA-NEXT:    s_endpgm
9043 ; GFX7-HSA-LABEL: constant_sextload_v16i8_to_v16i16:
9044 ; GFX7-HSA:       ; %bb.0:
9045 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
9046 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9047 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
9048 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9049 ; GFX7-HSA-NEXT:    s_ashr_i32 s2, s5, 24
9050 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s5, 0x80010
9051 ; GFX7-HSA-NEXT:    s_lshl_b32 s2, s2, 16
9052 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
9053 ; GFX7-HSA-NEXT:    s_bfe_i32 s8, s5, 0x80008
9054 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s5, s5
9055 ; GFX7-HSA-NEXT:    s_ashr_i32 s9, s4, 24
9056 ; GFX7-HSA-NEXT:    s_or_b32 s10, s3, s2
9057 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s4, 0x80010
9058 ; GFX7-HSA-NEXT:    s_lshl_b32 s8, s8, 16
9059 ; GFX7-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
9060 ; GFX7-HSA-NEXT:    s_lshl_b32 s2, s9, 16
9061 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
9062 ; GFX7-HSA-NEXT:    s_or_b32 s5, s5, s8
9063 ; GFX7-HSA-NEXT:    s_or_b32 s8, s3, s2
9064 ; GFX7-HSA-NEXT:    s_bfe_i32 s2, s4, 0x80008
9065 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s3, s4
9066 ; GFX7-HSA-NEXT:    s_lshl_b32 s2, s2, 16
9067 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
9068 ; GFX7-HSA-NEXT:    s_or_b32 s4, s3, s2
9069 ; GFX7-HSA-NEXT:    s_ashr_i32 s2, s7, 24
9070 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s7, 0x80010
9071 ; GFX7-HSA-NEXT:    s_lshl_b32 s2, s2, 16
9072 ; GFX7-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
9073 ; GFX7-HSA-NEXT:    s_or_b32 s2, s3, s2
9074 ; GFX7-HSA-NEXT:    s_bfe_i32 s3, s7, 0x80008
9075 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s7
9076 ; GFX7-HSA-NEXT:    s_lshl_b32 s3, s3, 16
9077 ; GFX7-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
9078 ; GFX7-HSA-NEXT:    s_or_b32 s3, s7, s3
9079 ; GFX7-HSA-NEXT:    s_ashr_i32 s7, s6, 24
9080 ; GFX7-HSA-NEXT:    s_bfe_i32 s9, s6, 0x80010
9081 ; GFX7-HSA-NEXT:    s_lshl_b32 s7, s7, 16
9082 ; GFX7-HSA-NEXT:    s_and_b32 s9, s9, 0xffff
9083 ; GFX7-HSA-NEXT:    s_or_b32 s7, s9, s7
9084 ; GFX7-HSA-NEXT:    s_bfe_i32 s9, s6, 0x80008
9085 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s6, s6
9086 ; GFX7-HSA-NEXT:    s_lshl_b32 s9, s9, 16
9087 ; GFX7-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
9088 ; GFX7-HSA-NEXT:    s_or_b32 s6, s6, s9
9089 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s2
9090 ; GFX7-HSA-NEXT:    s_add_u32 s2, s0, 16
9091 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
9092 ; GFX7-HSA-NEXT:    s_addc_u32 s3, s1, 0
9093 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s3
9094 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
9095 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s7
9096 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
9097 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
9098 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
9099 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
9100 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s8
9101 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
9102 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s10
9103 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
9104 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
9105 ; GFX7-HSA-NEXT:    s_endpgm
9107 ; GFX8-NOHSA-LABEL: constant_sextload_v16i8_to_v16i16:
9108 ; GFX8-NOHSA:       ; %bb.0:
9109 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
9110 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9111 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
9112 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9113 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s10, s5, 0x80000
9114 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v0, 8, s5
9115 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s3, s5, 16
9116 ; GFX8-NOHSA-NEXT:    s_and_b32 s10, 0xffff, s10
9117 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
9118 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s2, s4, 16
9119 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s5, s4, 0x80000
9120 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s10, v0
9121 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v0, 8, s4
9122 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s4, s3, 0x80000
9123 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v1, 8, s3
9124 ; GFX8-NOHSA-NEXT:    s_and_b32 s4, 0xffff, s4
9125 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
9126 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v3, s4, v1
9127 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s2, 0x80000
9128 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v1, 8, s2
9129 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, 0xffff, s3
9130 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
9131 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s9, s7, 16
9132 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v1, s3, v1
9133 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[2:3], s[6:7], 56
9134 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s9, 0x80000
9135 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s2, s2, 16
9136 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, 0xffff, s3
9137 ; GFX8-NOHSA-NEXT:    s_or_b32 s2, s3, s2
9138 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s7, 0x80000
9139 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v4, 8, s7
9140 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, 0xffff, s3
9141 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
9142 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v6, s3, v4
9143 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s6, 0x80000
9144 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v4, 8, s6
9145 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s8, s6, 16
9146 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, 0xffff, s3
9147 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
9148 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v4, s3, v4
9149 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s3, s8, 0x80000
9150 ; GFX8-NOHSA-NEXT:    s_and_b32 s5, 0xffff, s5
9151 ; GFX8-NOHSA-NEXT:    s_and_b32 s3, 0xffff, s3
9152 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v5, 8, s8
9153 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
9154 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s2
9155 ; GFX8-NOHSA-NEXT:    s_add_u32 s2, s0, 16
9156 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v5, s3, v5
9157 ; GFX8-NOHSA-NEXT:    s_addc_u32 s3, s1, 0
9158 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s3
9159 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s2
9160 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
9161 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
9162 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s5, v0
9163 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s1
9164 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s0
9165 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
9166 ; GFX8-NOHSA-NEXT:    s_endpgm
9168 ; EG-LABEL: constant_sextload_v16i8_to_v16i16:
9169 ; EG:       ; %bb.0:
9170 ; EG-NEXT:    ALU 1, @10, KC0[CB0:0-32], KC1[]
9171 ; EG-NEXT:    TEX 0 @8
9172 ; EG-NEXT:    ALU 104, @12, KC0[], KC1[]
9173 ; EG-NEXT:    ALU 46, @117, KC0[CB0:0-32], KC1[]
9174 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T22.X, 0
9175 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T21.X, 1
9176 ; EG-NEXT:    CF_END
9177 ; EG-NEXT:    PAD
9178 ; EG-NEXT:    Fetch clause starting at 8:
9179 ; EG-NEXT:     VTX_READ_128 T19.XYZW, T19.X, 0, #1
9180 ; EG-NEXT:    ALU clause starting at 10:
9181 ; EG-NEXT:     MOV * T0.Y, T16.X,
9182 ; EG-NEXT:     MOV * T19.X, KC0[2].Z,
9183 ; EG-NEXT:    ALU clause starting at 12:
9184 ; EG-NEXT:     BFE_INT * T0.W, T19.X, 0.0, literal.x,
9185 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9186 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
9187 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
9188 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
9189 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
9190 ; EG-NEXT:     MOV * T16.X, PV.W,
9191 ; EG-NEXT:     MOV T0.Y, PV.X,
9192 ; EG-NEXT:     LSHR * T0.W, T19.X, literal.x,
9193 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9194 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
9195 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9196 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
9197 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
9198 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9199 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
9200 ; EG-NEXT:     MOV T16.X, PV.W,
9201 ; EG-NEXT:     MOV T0.Y, T17.X,
9202 ; EG-NEXT:     LSHR * T0.W, T19.X, literal.x, BS:VEC_120/SCL_212
9203 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9204 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
9205 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9206 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
9207 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
9208 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
9209 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
9210 ; EG-NEXT:     MOV * T17.X, PV.W,
9211 ; EG-NEXT:     MOV T0.Y, PV.X,
9212 ; EG-NEXT:     ASHR * T0.W, T19.X, literal.x,
9213 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
9214 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9215 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
9216 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
9217 ; EG-NEXT:     OR_INT * T20.Y, PV.W, PS,
9218 ; EG-NEXT:     MOV T17.X, PV.Y,
9219 ; EG-NEXT:     MOV T0.Y, T12.X,
9220 ; EG-NEXT:     BFE_INT * T0.W, T19.Y, 0.0, literal.x,
9221 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9222 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9223 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
9224 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
9225 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
9226 ; EG-NEXT:     MOV * T12.X, PV.W,
9227 ; EG-NEXT:     MOV T0.Y, PV.X,
9228 ; EG-NEXT:     LSHR * T0.W, T19.Y, literal.x,
9229 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9230 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
9231 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9232 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
9233 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
9234 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9235 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
9236 ; EG-NEXT:     MOV T12.X, PV.W,
9237 ; EG-NEXT:     MOV T0.Y, T13.X,
9238 ; EG-NEXT:     LSHR * T0.W, T19.Y, literal.x,
9239 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9240 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
9241 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9242 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
9243 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
9244 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
9245 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
9246 ; EG-NEXT:     MOV * T13.X, PV.W,
9247 ; EG-NEXT:     MOV T0.Y, PV.X,
9248 ; EG-NEXT:     ASHR * T0.W, T19.Y, literal.x,
9249 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
9250 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9251 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
9252 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
9253 ; EG-NEXT:     OR_INT * T20.W, PV.W, PS,
9254 ; EG-NEXT:     MOV T13.X, PV.W,
9255 ; EG-NEXT:     MOV T0.Y, T8.X,
9256 ; EG-NEXT:     BFE_INT * T0.W, T19.Z, 0.0, literal.x,
9257 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9258 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9259 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
9260 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
9261 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
9262 ; EG-NEXT:     MOV * T8.X, PV.W,
9263 ; EG-NEXT:     MOV T0.Y, PV.X,
9264 ; EG-NEXT:     LSHR * T0.W, T19.Z, literal.x,
9265 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9266 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
9267 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9268 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
9269 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
9270 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9271 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
9272 ; EG-NEXT:     MOV T8.X, PV.W,
9273 ; EG-NEXT:     MOV T0.Y, T9.X,
9274 ; EG-NEXT:     LSHR * T0.W, T19.Z, literal.x,
9275 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9276 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
9277 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9278 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
9279 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
9280 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
9281 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
9282 ; EG-NEXT:     MOV * T9.X, PV.W,
9283 ; EG-NEXT:     MOV T0.Y, PV.X,
9284 ; EG-NEXT:     ASHR * T0.W, T19.Z, literal.x,
9285 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
9286 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9287 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
9288 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
9289 ; EG-NEXT:    ALU clause starting at 117:
9290 ; EG-NEXT:     OR_INT * T19.Y, T1.W, T0.W,
9291 ; EG-NEXT:     MOV T9.X, PV.Y,
9292 ; EG-NEXT:     MOV T0.Y, T4.X,
9293 ; EG-NEXT:     BFE_INT * T0.W, T19.W, 0.0, literal.x,
9294 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9295 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9296 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
9297 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
9298 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
9299 ; EG-NEXT:     MOV * T4.X, PV.W,
9300 ; EG-NEXT:     MOV T0.Y, PV.X,
9301 ; EG-NEXT:     LSHR * T0.W, T19.W, literal.x,
9302 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9303 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
9304 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9305 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
9306 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
9307 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9308 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
9309 ; EG-NEXT:     MOV T4.X, PV.W,
9310 ; EG-NEXT:     MOV T0.Y, T5.X,
9311 ; EG-NEXT:     LSHR * T0.W, T19.W, literal.x,
9312 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9313 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
9314 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
9315 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
9316 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
9317 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
9318 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
9319 ; EG-NEXT:     MOV * T5.X, PV.W,
9320 ; EG-NEXT:     MOV T0.Y, PV.X,
9321 ; EG-NEXT:     ASHR T0.W, T19.W, literal.x,
9322 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
9323 ; EG-NEXT:    24(3.363116e-44), 16(2.242078e-44)
9324 ; EG-NEXT:     LSHR T21.X, PS, literal.x,
9325 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.y,
9326 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.z,
9327 ; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
9328 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9329 ; EG-NEXT:     LSHR T22.X, KC0[2].Y, literal.x,
9330 ; EG-NEXT:     OR_INT * T19.W, PV.W, PS,
9331 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9332 ; EG-NEXT:     MOV T5.X, PV.W,
9333 ; EG-NEXT:     MOV * T20.X, T16.X,
9334 ; EG-NEXT:     MOV * T20.Z, T12.X,
9335 ; EG-NEXT:     MOV T19.X, T8.X,
9336 ; EG-NEXT:     MOV * T19.Z, T4.X, BS:VEC_120/SCL_212
9337   %load = load <16 x i8>, ptr addrspace(4) %in
9338   %ext = sext <16 x i8> %load to <16 x i16>
9339   store <16 x i16> %ext, ptr addrspace(1) %out
9340   ret void
9343 define amdgpu_kernel void @constant_zextload_v32i8_to_v32i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9344 ; GFX6-NOHSA-LABEL: constant_zextload_v32i8_to_v32i16:
9345 ; GFX6-NOHSA:       ; %bb.0:
9346 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x9
9347 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9348 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
9349 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, 0xf000
9350 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, -1
9351 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9352 ; GFX6-NOHSA-NEXT:    s_and_b32 s12, s6, 0xff00
9353 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s13, s6, 24
9354 ; GFX6-NOHSA-NEXT:    s_and_b32 s14, s7, 0xff00
9355 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s15, s7, 24
9356 ; GFX6-NOHSA-NEXT:    s_and_b32 s16, s4, 0xff00
9357 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s17, s4, 24
9358 ; GFX6-NOHSA-NEXT:    s_and_b32 s18, s5, 0xff00
9359 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s19, s5, 24
9360 ; GFX6-NOHSA-NEXT:    s_and_b32 s20, s2, 0xff00
9361 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s21, s2, 24
9362 ; GFX6-NOHSA-NEXT:    s_and_b32 s22, s3, 0xff00
9363 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s23, s3, 24
9364 ; GFX6-NOHSA-NEXT:    s_and_b32 s24, s0, 0xff00
9365 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s25, s0, 24
9366 ; GFX6-NOHSA-NEXT:    s_and_b32 s26, s1, 0xff00
9367 ; GFX6-NOHSA-NEXT:    s_lshr_b32 s27, s1, 24
9368 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s1
9369 ; GFX6-NOHSA-NEXT:    s_and_b32 s1, s1, 0xff
9370 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s0
9371 ; GFX6-NOHSA-NEXT:    s_and_b32 s0, s0, 0xff
9372 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s3
9373 ; GFX6-NOHSA-NEXT:    s_and_b32 s3, s3, 0xff
9374 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s2
9375 ; GFX6-NOHSA-NEXT:    s_and_b32 s2, s2, 0xff
9376 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s5
9377 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xff
9378 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v5, s4
9379 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff
9380 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s7
9381 ; GFX6-NOHSA-NEXT:    s_and_b32 s7, s7, 0xff
9382 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v7, s6
9383 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s6, 0xff
9384 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v0, s27, v0, 16
9385 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s26, s26, 8
9386 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v1, s25, v1, 16
9387 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s24, s24, 8
9388 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v2, s23, v2, 16
9389 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s22, s22, 8
9390 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v8, s21, v3, 16
9391 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s20, s20, 8
9392 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v4, s19, v4, 16
9393 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s18, s18, 8
9394 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v9, s17, v5, 16
9395 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s16, s16, 8
9396 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v6, s15, v6, 16
9397 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s14, s14, 8
9398 ; GFX6-NOHSA-NEXT:    v_alignbit_b32 v10, s13, v7, 16
9399 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s12, s12, 8
9400 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
9401 ; GFX6-NOHSA-NEXT:    s_or_b32 s1, s1, s26
9402 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v1
9403 ; GFX6-NOHSA-NEXT:    s_or_b32 s0, s0, s24
9404 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v7, 0xff00ff, v2
9405 ; GFX6-NOHSA-NEXT:    s_or_b32 s3, s3, s22
9406 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v5, 0xff00ff, v8
9407 ; GFX6-NOHSA-NEXT:    s_or_b32 s2, s2, s20
9408 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v11, 0xff00ff, v4
9409 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s18
9410 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v9, 0xff00ff, v9
9411 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s16
9412 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v15, 0xff00ff, v6
9413 ; GFX6-NOHSA-NEXT:    s_or_b32 s7, s7, s14
9414 ; GFX6-NOHSA-NEXT:    s_or_b32 s6, s6, s12
9415 ; GFX6-NOHSA-NEXT:    v_and_b32_e32 v13, 0xff00ff, v10
9416 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v12, s6
9417 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v14, s7
9418 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[12:15], off, s[8:11], 0 offset:48
9419 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v8, s4
9420 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v10, s5
9421 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[8:11], off, s[8:11], 0 offset:32
9422 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v4, s2
9423 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v6, s3
9424 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[4:7], off, s[8:11], 0 offset:16
9425 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
9426 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s1
9427 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
9428 ; GFX6-NOHSA-NEXT:    s_endpgm
9430 ; GFX7-HSA-LABEL: constant_zextload_v32i8_to_v32i16:
9431 ; GFX7-HSA:       ; %bb.0:
9432 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x0
9433 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9434 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
9435 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
9436 ; GFX7-HSA-NEXT:    s_lshr_b32 s25, s1, 24
9437 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s1
9438 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s25, v0, 16
9439 ; GFX7-HSA-NEXT:    s_lshr_b32 s23, s0, 24
9440 ; GFX7-HSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v0
9441 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s0
9442 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s23, v0, 16
9443 ; GFX7-HSA-NEXT:    s_lshr_b32 s21, s3, 24
9444 ; GFX7-HSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v0
9445 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s3
9446 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s21, v0, 16
9447 ; GFX7-HSA-NEXT:    s_lshr_b32 s19, s2, 24
9448 ; GFX7-HSA-NEXT:    s_and_b32 s24, s1, 0xff00
9449 ; GFX7-HSA-NEXT:    v_and_b32_e32 v7, 0xff00ff, v0
9450 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
9451 ; GFX7-HSA-NEXT:    s_and_b32 s22, s0, 0xff00
9452 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xff
9453 ; GFX7-HSA-NEXT:    s_lshl_b32 s24, s24, 8
9454 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s19, v0, 16
9455 ; GFX7-HSA-NEXT:    s_lshr_b32 s17, s5, 24
9456 ; GFX7-HSA-NEXT:    s_and_b32 s20, s3, 0xff00
9457 ; GFX7-HSA-NEXT:    s_or_b32 s24, s1, s24
9458 ; GFX7-HSA-NEXT:    s_and_b32 s0, s0, 0xff
9459 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s22, 8
9460 ; GFX7-HSA-NEXT:    v_and_b32_e32 v5, 0xff00ff, v0
9461 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s5
9462 ; GFX7-HSA-NEXT:    s_and_b32 s18, s2, 0xff00
9463 ; GFX7-HSA-NEXT:    s_or_b32 s22, s0, s1
9464 ; GFX7-HSA-NEXT:    s_and_b32 s0, s3, 0xff
9465 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s20, 8
9466 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s17, v0, 16
9467 ; GFX7-HSA-NEXT:    s_lshr_b32 s15, s4, 24
9468 ; GFX7-HSA-NEXT:    s_and_b32 s16, s5, 0xff00
9469 ; GFX7-HSA-NEXT:    s_or_b32 s3, s0, s1
9470 ; GFX7-HSA-NEXT:    s_and_b32 s0, s2, 0xff
9471 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s18, 8
9472 ; GFX7-HSA-NEXT:    v_and_b32_e32 v11, 0xff00ff, v0
9473 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
9474 ; GFX7-HSA-NEXT:    s_and_b32 s14, s4, 0xff00
9475 ; GFX7-HSA-NEXT:    s_or_b32 s2, s0, s1
9476 ; GFX7-HSA-NEXT:    s_and_b32 s0, s5, 0xff
9477 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s16, 8
9478 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s15, v0, 16
9479 ; GFX7-HSA-NEXT:    s_and_b32 s12, s7, 0xff00
9480 ; GFX7-HSA-NEXT:    s_lshr_b32 s13, s7, 24
9481 ; GFX7-HSA-NEXT:    s_or_b32 s5, s0, s1
9482 ; GFX7-HSA-NEXT:    v_and_b32_e32 v9, 0xff00ff, v0
9483 ; GFX7-HSA-NEXT:    s_and_b32 s0, s4, 0xff
9484 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s14, 8
9485 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s7
9486 ; GFX7-HSA-NEXT:    s_and_b32 s10, s6, 0xff00
9487 ; GFX7-HSA-NEXT:    s_or_b32 s4, s0, s1
9488 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s13, v0, 16
9489 ; GFX7-HSA-NEXT:    s_and_b32 s0, s7, 0xff
9490 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s12, 8
9491 ; GFX7-HSA-NEXT:    s_lshr_b32 s11, s6, 24
9492 ; GFX7-HSA-NEXT:    v_and_b32_e32 v15, 0xff00ff, v0
9493 ; GFX7-HSA-NEXT:    s_or_b32 s0, s0, s1
9494 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
9495 ; GFX7-HSA-NEXT:    s_and_b32 s1, s6, 0xff
9496 ; GFX7-HSA-NEXT:    s_lshl_b32 s6, s10, 8
9497 ; GFX7-HSA-NEXT:    s_or_b32 s1, s1, s6
9498 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v14, s0
9499 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 48
9500 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v12, s1
9501 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
9502 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v17, s1
9503 ; GFX7-HSA-NEXT:    v_alignbit_b32 v0, s11, v0, 16
9504 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v16, s0
9505 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 32
9506 ; GFX7-HSA-NEXT:    v_and_b32_e32 v13, 0xff00ff, v0
9507 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
9508 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
9509 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s4
9510 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v13, s1
9511 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v12, s0
9512 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 16
9513 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v10, s5
9514 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
9515 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
9516 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s2
9517 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v9, s1
9518 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v6, s3
9519 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v8, s0
9520 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
9521 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s22
9522 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s8
9523 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s24
9524 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s9
9525 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
9526 ; GFX7-HSA-NEXT:    s_endpgm
9528 ; GFX8-NOHSA-LABEL: constant_zextload_v32i8_to_v32i16:
9529 ; GFX8-NOHSA:       ; %bb.0:
9530 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x24
9531 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9532 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
9533 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9534 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s14, s1, 24
9535 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v0, 8, s0
9536 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s14, s14, 16
9537 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s15, s1, 0x80010
9538 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s13, s0, 24
9539 ; GFX8-NOHSA-NEXT:    s_or_b32 s14, s15, s14
9540 ; GFX8-NOHSA-NEXT:    s_and_b32 s15, s1, 0xff
9541 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s1, 8
9542 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v1, s0
9543 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s0, 0xff
9544 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
9545 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s1, 0xff0000
9546 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s0, v0
9547 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s3, 24
9548 ; GFX8-NOHSA-NEXT:    s_or_b32 s15, s15, s1
9549 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s0, s0, 16
9550 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s3, 0x80010
9551 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v1, s13, v1, 16
9552 ; GFX8-NOHSA-NEXT:    s_or_b32 s13, s1, s0
9553 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s3, 8
9554 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v2, 8, s2
9555 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s3, 0xff
9556 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s1, 0xff0000
9557 ; GFX8-NOHSA-NEXT:    s_or_b32 s3, s0, s1
9558 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s2, 0xff
9559 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
9560 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s0, v2
9561 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s5, 24
9562 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s0, s0, 16
9563 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s5, 0x80010
9564 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s12, s2, 24
9565 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s2
9566 ; GFX8-NOHSA-NEXT:    s_or_b32 s2, s1, s0
9567 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s1, s5, 8
9568 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v4, 8, s4
9569 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s5, 0xff
9570 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s1, 0xff0000
9571 ; GFX8-NOHSA-NEXT:    s_or_b32 s5, s0, s1
9572 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, s4, 0xff
9573 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
9574 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v4, s0, v4
9575 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s0, s7, 24
9576 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s11, s4, 24
9577 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s4
9578 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s0, s0, 16
9579 ; GFX8-NOHSA-NEXT:    s_bfe_u32 s1, s7, 0x80010
9580 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s4, s7, 8
9581 ; GFX8-NOHSA-NEXT:    s_or_b32 s0, s1, s0
9582 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, s7, 0xff
9583 ; GFX8-NOHSA-NEXT:    s_and_b32 s4, s4, 0xff0000
9584 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s6, 24
9585 ; GFX8-NOHSA-NEXT:    s_or_b32 s1, s1, s4
9586 ; GFX8-NOHSA-NEXT:    s_and_b32 s4, s6, 0xff
9587 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s0
9588 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 48
9589 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s1
9590 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
9591 ; GFX8-NOHSA-NEXT:    v_lshrrev_b16_e64 v6, 8, s6
9592 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s6
9593 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s1
9594 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v7, s10, v7, 16
9595 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v6, 16, v6
9596 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v10, s0
9597 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 32
9598 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v7, 0xff00ff, v7
9599 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v6, s4, v6
9600 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
9601 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[10:11], v[6:9]
9602 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v5, s11, v5, 16
9603 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s1
9604 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s0
9605 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 16
9606 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v5, 0xff00ff, v5
9607 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s5
9608 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s2
9609 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
9610 ; GFX8-NOHSA-NEXT:    v_alignbit_b32 v3, s12, v3, 16
9611 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
9612 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v3, 0xff00ff, v3
9613 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v7, s1
9614 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s3
9615 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s13
9616 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v6, s0
9617 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[6:7], v[2:5]
9618 ; GFX8-NOHSA-NEXT:    v_and_b32_e32 v1, 0xff00ff, v1
9619 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
9620 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v2, s15
9621 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v3, s14
9622 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
9623 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
9624 ; GFX8-NOHSA-NEXT:    s_endpgm
9626 ; EG-LABEL: constant_zextload_v32i8_to_v32i16:
9627 ; EG:       ; %bb.0:
9628 ; EG-NEXT:    ALU 1, @14, KC0[CB0:0-32], KC1[]
9629 ; EG-NEXT:    TEX 1 @10
9630 ; EG-NEXT:    ALU 103, @16, KC0[], KC1[]
9631 ; EG-NEXT:    ALU 104, @120, KC0[], KC1[]
9632 ; EG-NEXT:    ALU 41, @225, KC0[CB0:0-32], KC1[]
9633 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T42.X, 0
9634 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T41.X, 0
9635 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T40.X, 0
9636 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T39.X, 1
9637 ; EG-NEXT:    CF_END
9638 ; EG-NEXT:    Fetch clause starting at 10:
9639 ; EG-NEXT:     VTX_READ_128 T37.XYZW, T35.X, 16, #1
9640 ; EG-NEXT:     VTX_READ_128 T35.XYZW, T35.X, 0, #1
9641 ; EG-NEXT:    ALU clause starting at 14:
9642 ; EG-NEXT:     MOV * T0.Y, T16.X,
9643 ; EG-NEXT:     MOV * T35.X, KC0[2].Z,
9644 ; EG-NEXT:    ALU clause starting at 16:
9645 ; EG-NEXT:     AND_INT T0.W, T37.X, literal.x,
9646 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
9647 ; EG-NEXT:    255(3.573311e-43), -65536(nan)
9648 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
9649 ; EG-NEXT:     MOV * T16.X, PV.W,
9650 ; EG-NEXT:     MOV T0.Y, PV.X,
9651 ; EG-NEXT:     LSHL * T0.W, T37.X, literal.x,
9652 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9653 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9654 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
9655 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9656 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
9657 ; EG-NEXT:     MOV T16.X, PV.W,
9658 ; EG-NEXT:     MOV T0.Y, T17.X,
9659 ; EG-NEXT:     MOV * T0.W, literal.x,
9660 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9661 ; EG-NEXT:     BFE_UINT T1.W, T37.X, literal.x, PV.W,
9662 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.y,
9663 ; EG-NEXT:    16(2.242078e-44), -65536(nan)
9664 ; EG-NEXT:     OR_INT * T1.W, PS, PV.W,
9665 ; EG-NEXT:     MOV * T17.X, PV.W,
9666 ; EG-NEXT:     MOV T0.Y, PV.X,
9667 ; EG-NEXT:     LSHR * T1.W, T37.X, literal.x,
9668 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9669 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9670 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9671 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9672 ; EG-NEXT:     OR_INT * T36.Y, PV.W, PS,
9673 ; EG-NEXT:     MOV T17.X, PV.Y,
9674 ; EG-NEXT:     MOV * T0.Y, T12.X,
9675 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9676 ; EG-NEXT:     AND_INT * T2.W, T37.Y, literal.y,
9677 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
9678 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9679 ; EG-NEXT:     MOV * T12.X, PV.W,
9680 ; EG-NEXT:     MOV T0.Y, PV.X,
9681 ; EG-NEXT:     LSHL * T1.W, T37.Y, literal.x,
9682 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9683 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9684 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9685 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9686 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9687 ; EG-NEXT:     MOV T12.X, PV.W,
9688 ; EG-NEXT:     MOV T0.Y, T13.X,
9689 ; EG-NEXT:     BFE_UINT * T1.W, T37.Y, literal.x, T0.W,
9690 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9691 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
9692 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
9693 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
9694 ; EG-NEXT:     MOV * T13.X, PV.W,
9695 ; EG-NEXT:     MOV T0.Y, PV.X,
9696 ; EG-NEXT:     LSHR * T1.W, T37.Y, literal.x,
9697 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9698 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9699 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9700 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9701 ; EG-NEXT:     OR_INT * T36.W, PV.W, PS,
9702 ; EG-NEXT:     MOV T13.X, PV.W,
9703 ; EG-NEXT:     MOV * T0.Y, T8.X,
9704 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9705 ; EG-NEXT:     AND_INT * T2.W, T37.Z, literal.y,
9706 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
9707 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9708 ; EG-NEXT:     MOV * T8.X, PV.W,
9709 ; EG-NEXT:     MOV T0.Y, PV.X,
9710 ; EG-NEXT:     LSHL * T1.W, T37.Z, literal.x,
9711 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9712 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9713 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9714 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9715 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9716 ; EG-NEXT:     MOV T8.X, PV.W,
9717 ; EG-NEXT:     MOV T0.Y, T9.X,
9718 ; EG-NEXT:     BFE_UINT * T1.W, T37.Z, literal.x, T0.W,
9719 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9720 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
9721 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
9722 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
9723 ; EG-NEXT:     MOV * T9.X, PV.W,
9724 ; EG-NEXT:     MOV T0.Y, PV.X,
9725 ; EG-NEXT:     LSHR * T1.W, T37.Z, literal.x,
9726 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9727 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9728 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9729 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9730 ; EG-NEXT:     OR_INT * T37.Y, PV.W, PS,
9731 ; EG-NEXT:     MOV T9.X, PV.Y,
9732 ; EG-NEXT:     MOV * T0.Y, T4.X,
9733 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9734 ; EG-NEXT:     AND_INT * T2.W, T37.W, literal.y,
9735 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
9736 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9737 ; EG-NEXT:     MOV * T4.X, PV.W,
9738 ; EG-NEXT:     MOV T0.Y, PV.X,
9739 ; EG-NEXT:     LSHL * T1.W, T37.W, literal.x,
9740 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9741 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9742 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9743 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9744 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9745 ; EG-NEXT:     MOV T4.X, PV.W,
9746 ; EG-NEXT:     MOV T0.Y, T5.X,
9747 ; EG-NEXT:     BFE_UINT * T1.W, T37.W, literal.x, T0.W,
9748 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9749 ; EG-NEXT:    ALU clause starting at 120:
9750 ; EG-NEXT:     AND_INT * T2.W, T0.Y, literal.x,
9751 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
9752 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
9753 ; EG-NEXT:     MOV * T5.X, PV.W,
9754 ; EG-NEXT:     MOV T0.Y, PV.X,
9755 ; EG-NEXT:     LSHR * T1.W, T37.W, literal.x,
9756 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9757 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9758 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9759 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9760 ; EG-NEXT:     OR_INT * T37.W, PV.W, PS,
9761 ; EG-NEXT:     MOV T5.X, PV.W,
9762 ; EG-NEXT:     MOV * T0.Y, T32.X,
9763 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9764 ; EG-NEXT:     AND_INT * T2.W, T35.X, literal.y,
9765 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
9766 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9767 ; EG-NEXT:     MOV * T32.X, PV.W,
9768 ; EG-NEXT:     MOV T0.Y, PV.X,
9769 ; EG-NEXT:     LSHL * T1.W, T35.X, literal.x,
9770 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9771 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9772 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9773 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9774 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9775 ; EG-NEXT:     MOV T32.X, PV.W,
9776 ; EG-NEXT:     MOV T0.Y, T33.X,
9777 ; EG-NEXT:     BFE_UINT * T1.W, T35.X, literal.x, T0.W, BS:VEC_120/SCL_212
9778 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9779 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
9780 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
9781 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
9782 ; EG-NEXT:     MOV * T33.X, PV.W,
9783 ; EG-NEXT:     MOV T0.Y, PV.X,
9784 ; EG-NEXT:     LSHR * T1.W, T35.X, literal.x,
9785 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9786 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9787 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9788 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9789 ; EG-NEXT:     OR_INT * T38.Y, PV.W, PS,
9790 ; EG-NEXT:     MOV T33.X, PV.Y,
9791 ; EG-NEXT:     MOV * T0.Y, T28.X,
9792 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9793 ; EG-NEXT:     AND_INT * T2.W, T35.Y, literal.y,
9794 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
9795 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9796 ; EG-NEXT:     MOV * T28.X, PV.W,
9797 ; EG-NEXT:     MOV T0.Y, PV.X,
9798 ; EG-NEXT:     LSHL * T1.W, T35.Y, literal.x,
9799 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9800 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9801 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9802 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9803 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9804 ; EG-NEXT:     MOV T28.X, PV.W,
9805 ; EG-NEXT:     MOV T0.Y, T29.X,
9806 ; EG-NEXT:     BFE_UINT * T1.W, T35.Y, literal.x, T0.W,
9807 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9808 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
9809 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
9810 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
9811 ; EG-NEXT:     MOV * T29.X, PV.W,
9812 ; EG-NEXT:     MOV T0.Y, PV.X,
9813 ; EG-NEXT:     LSHR * T1.W, T35.Y, literal.x,
9814 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9815 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9816 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9817 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9818 ; EG-NEXT:     OR_INT * T38.W, PV.W, PS,
9819 ; EG-NEXT:     MOV T29.X, PV.W,
9820 ; EG-NEXT:     MOV * T0.Y, T24.X,
9821 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9822 ; EG-NEXT:     AND_INT * T2.W, T35.Z, literal.y,
9823 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
9824 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9825 ; EG-NEXT:     MOV * T24.X, PV.W,
9826 ; EG-NEXT:     MOV T0.Y, PV.X,
9827 ; EG-NEXT:     LSHL * T1.W, T35.Z, literal.x,
9828 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9829 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9830 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9831 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9832 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9833 ; EG-NEXT:     MOV T24.X, PV.W,
9834 ; EG-NEXT:     MOV T0.Y, T25.X,
9835 ; EG-NEXT:     BFE_UINT * T1.W, T35.Z, literal.x, T0.W,
9836 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9837 ; EG-NEXT:     AND_INT * T2.W, PV.Y, literal.x,
9838 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
9839 ; EG-NEXT:     OR_INT * T1.W, PV.W, T1.W,
9840 ; EG-NEXT:     MOV * T25.X, PV.W,
9841 ; EG-NEXT:     MOV T0.Y, PV.X,
9842 ; EG-NEXT:     LSHR * T1.W, T35.Z, literal.x,
9843 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9844 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9845 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9846 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9847 ; EG-NEXT:     OR_INT * T35.Y, PV.W, PS,
9848 ; EG-NEXT:     MOV T25.X, PV.Y,
9849 ; EG-NEXT:     MOV * T0.Y, T20.X,
9850 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
9851 ; EG-NEXT:     AND_INT * T2.W, T35.W, literal.y,
9852 ; EG-NEXT:    -65536(nan), 255(3.573311e-43)
9853 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9854 ; EG-NEXT:     MOV * T20.X, PV.W,
9855 ; EG-NEXT:    ALU clause starting at 225:
9856 ; EG-NEXT:     MOV T0.Y, T20.X,
9857 ; EG-NEXT:     LSHL * T1.W, T35.W, literal.x,
9858 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
9859 ; EG-NEXT:     AND_INT T2.W, PV.Y, literal.x,
9860 ; EG-NEXT:     AND_INT * T1.W, PV.W, literal.y,
9861 ; EG-NEXT:    65535(9.183409e-41), 16711680(2.341805e-38)
9862 ; EG-NEXT:     OR_INT * T1.W, PV.W, PS,
9863 ; EG-NEXT:     MOV T20.X, PV.W,
9864 ; EG-NEXT:     MOV T0.Y, T21.X,
9865 ; EG-NEXT:     BFE_UINT * T0.W, T35.W, literal.x, T0.W,
9866 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9867 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.x,
9868 ; EG-NEXT:    -65536(nan), 0(0.000000e+00)
9869 ; EG-NEXT:     OR_INT * T0.W, PV.W, T0.W,
9870 ; EG-NEXT:     MOV * T21.X, PV.W,
9871 ; EG-NEXT:     MOV T0.Y, PV.X,
9872 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
9873 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
9874 ; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
9875 ; EG-NEXT:     LSHR * T40.X, KC0[2].Y, literal.x,
9876 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9877 ; EG-NEXT:     LSHR T0.W, T35.W, literal.x,
9878 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
9879 ; EG-NEXT:    8(1.121039e-44), 48(6.726233e-44)
9880 ; EG-NEXT:     LSHR T41.X, PS, literal.x,
9881 ; EG-NEXT:     AND_INT T0.Z, T0.Y, literal.y,
9882 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.z,
9883 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
9884 ; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
9885 ; EG-NEXT:    16711680(2.341805e-38), 32(4.484155e-44)
9886 ; EG-NEXT:     LSHR T42.X, PS, literal.x,
9887 ; EG-NEXT:     OR_INT * T35.W, PV.Z, PV.W,
9888 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
9889 ; EG-NEXT:     MOV T21.X, PV.W,
9890 ; EG-NEXT:     MOV * T36.X, T16.X,
9891 ; EG-NEXT:     MOV * T36.Z, T12.X,
9892 ; EG-NEXT:     MOV T37.X, T8.X,
9893 ; EG-NEXT:     MOV T37.Z, T4.X, BS:VEC_120/SCL_212
9894 ; EG-NEXT:     MOV * T38.X, T32.X,
9895 ; EG-NEXT:     MOV * T38.Z, T28.X,
9896 ; EG-NEXT:     MOV T35.X, T24.X,
9897 ; EG-NEXT:     MOV * T35.Z, T20.X, BS:VEC_120/SCL_212
9898   %load = load <32 x i8>, ptr addrspace(4) %in
9899   %ext = zext <32 x i8> %load to <32 x i16>
9900   store <32 x i16> %ext, ptr addrspace(1) %out
9901   ret void
9904 define amdgpu_kernel void @constant_sextload_v32i8_to_v32i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
9905 ; GFX6-NOHSA-LABEL: constant_sextload_v32i8_to_v32i16:
9906 ; GFX6-NOHSA:       ; %bb.0:
9907 ; GFX6-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x9
9908 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9909 ; GFX6-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
9910 ; GFX6-NOHSA-NEXT:    s_mov_b32 s11, 0xf000
9911 ; GFX6-NOHSA-NEXT:    s_mov_b32 s10, -1
9912 ; GFX6-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
9913 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s12, s1, 24
9914 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s13, s1, 0x80010
9915 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s14, s1, 0x80008
9916 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s1, s1
9917 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s15, s0, 24
9918 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s16, s0, 0x80010
9919 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s17, s0, 0x80008
9920 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s0, s0
9921 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s18, s3, 24
9922 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s19, s3, 0x80010
9923 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s20, s3, 0x80008
9924 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s3, s3
9925 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s21, s2, 24
9926 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s22, s2, 0x80010
9927 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s23, s2, 0x80008
9928 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s2, s2
9929 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s24, s5, 24
9930 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s25, s5, 0x80010
9931 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s26, s5, 0x80008
9932 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s5, s5
9933 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s27, s4, 24
9934 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s28, s4, 0x80010
9935 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s29, s4, 0x80008
9936 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s4, s4
9937 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s30, s7, 24
9938 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s31, s7, 0x80010
9939 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s33, s7, 0x80008
9940 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s7, s7
9941 ; GFX6-NOHSA-NEXT:    s_ashr_i32 s34, s6, 24
9942 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s35, s6, 0x80010
9943 ; GFX6-NOHSA-NEXT:    s_bfe_i32 s36, s6, 0x80008
9944 ; GFX6-NOHSA-NEXT:    s_sext_i32_i8 s6, s6
9945 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s12, s12, 16
9946 ; GFX6-NOHSA-NEXT:    s_and_b32 s13, s13, 0xffff
9947 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s14, s14, 16
9948 ; GFX6-NOHSA-NEXT:    s_and_b32 s1, s1, 0xffff
9949 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s15, s15, 16
9950 ; GFX6-NOHSA-NEXT:    s_and_b32 s16, s16, 0xffff
9951 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s17, s17, 16
9952 ; GFX6-NOHSA-NEXT:    s_and_b32 s0, s0, 0xffff
9953 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s18, s18, 16
9954 ; GFX6-NOHSA-NEXT:    s_and_b32 s19, s19, 0xffff
9955 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s20, s20, 16
9956 ; GFX6-NOHSA-NEXT:    s_and_b32 s3, s3, 0xffff
9957 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s21, s21, 16
9958 ; GFX6-NOHSA-NEXT:    s_and_b32 s22, s22, 0xffff
9959 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s23, s23, 16
9960 ; GFX6-NOHSA-NEXT:    s_and_b32 s2, s2, 0xffff
9961 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s24, s24, 16
9962 ; GFX6-NOHSA-NEXT:    s_and_b32 s25, s25, 0xffff
9963 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s26, s26, 16
9964 ; GFX6-NOHSA-NEXT:    s_and_b32 s5, s5, 0xffff
9965 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s27, s27, 16
9966 ; GFX6-NOHSA-NEXT:    s_and_b32 s28, s28, 0xffff
9967 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s29, s29, 16
9968 ; GFX6-NOHSA-NEXT:    s_and_b32 s4, s4, 0xffff
9969 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s30, s30, 16
9970 ; GFX6-NOHSA-NEXT:    s_and_b32 s31, s31, 0xffff
9971 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s33, s33, 16
9972 ; GFX6-NOHSA-NEXT:    s_and_b32 s7, s7, 0xffff
9973 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s34, s34, 16
9974 ; GFX6-NOHSA-NEXT:    s_and_b32 s35, s35, 0xffff
9975 ; GFX6-NOHSA-NEXT:    s_lshl_b32 s36, s36, 16
9976 ; GFX6-NOHSA-NEXT:    s_and_b32 s6, s6, 0xffff
9977 ; GFX6-NOHSA-NEXT:    s_or_b32 s12, s13, s12
9978 ; GFX6-NOHSA-NEXT:    s_or_b32 s1, s1, s14
9979 ; GFX6-NOHSA-NEXT:    s_or_b32 s13, s16, s15
9980 ; GFX6-NOHSA-NEXT:    s_or_b32 s0, s0, s17
9981 ; GFX6-NOHSA-NEXT:    s_or_b32 s14, s19, s18
9982 ; GFX6-NOHSA-NEXT:    s_or_b32 s3, s3, s20
9983 ; GFX6-NOHSA-NEXT:    s_or_b32 s15, s22, s21
9984 ; GFX6-NOHSA-NEXT:    s_or_b32 s2, s2, s23
9985 ; GFX6-NOHSA-NEXT:    s_or_b32 s16, s25, s24
9986 ; GFX6-NOHSA-NEXT:    s_or_b32 s5, s5, s26
9987 ; GFX6-NOHSA-NEXT:    s_or_b32 s17, s28, s27
9988 ; GFX6-NOHSA-NEXT:    s_or_b32 s18, s31, s30
9989 ; GFX6-NOHSA-NEXT:    s_or_b32 s7, s7, s33
9990 ; GFX6-NOHSA-NEXT:    s_or_b32 s19, s35, s34
9991 ; GFX6-NOHSA-NEXT:    s_or_b32 s6, s6, s36
9992 ; GFX6-NOHSA-NEXT:    s_or_b32 s4, s4, s29
9993 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s6
9994 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s19
9995 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s7
9996 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s18
9997 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:48
9998 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
9999 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s4
10000 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s17
10001 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s5
10002 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s16
10003 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:32
10004 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
10005 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s2
10006 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s15
10007 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s3
10008 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s14
10009 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16
10010 ; GFX6-NOHSA-NEXT:    s_waitcnt expcnt(0)
10011 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v0, s0
10012 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v1, s13
10013 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v2, s1
10014 ; GFX6-NOHSA-NEXT:    v_mov_b32_e32 v3, s12
10015 ; GFX6-NOHSA-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
10016 ; GFX6-NOHSA-NEXT:    s_endpgm
10018 ; GFX7-HSA-LABEL: constant_sextload_v32i8_to_v32i16:
10019 ; GFX7-HSA:       ; %bb.0:
10020 ; GFX7-HSA-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x0
10021 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
10022 ; GFX7-HSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
10023 ; GFX7-HSA-NEXT:    s_waitcnt lgkmcnt(0)
10024 ; GFX7-HSA-NEXT:    s_ashr_i32 s10, s1, 24
10025 ; GFX7-HSA-NEXT:    s_bfe_i32 s11, s1, 0x80010
10026 ; GFX7-HSA-NEXT:    s_bfe_i32 s12, s1, 0x80008
10027 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s1
10028 ; GFX7-HSA-NEXT:    s_lshl_b32 s10, s10, 16
10029 ; GFX7-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
10030 ; GFX7-HSA-NEXT:    s_lshl_b32 s12, s12, 16
10031 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10032 ; GFX7-HSA-NEXT:    s_ashr_i32 s13, s0, 24
10033 ; GFX7-HSA-NEXT:    s_or_b32 s10, s11, s10
10034 ; GFX7-HSA-NEXT:    s_or_b32 s11, s1, s12
10035 ; GFX7-HSA-NEXT:    s_bfe_i32 s12, s0, 0x80010
10036 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s13, 16
10037 ; GFX7-HSA-NEXT:    s_and_b32 s12, s12, 0xffff
10038 ; GFX7-HSA-NEXT:    s_or_b32 s12, s12, s1
10039 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s0, 0x80008
10040 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s0, s0
10041 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s1, 16
10042 ; GFX7-HSA-NEXT:    s_and_b32 s0, s0, 0xffff
10043 ; GFX7-HSA-NEXT:    s_or_b32 s13, s0, s1
10044 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s3, 24
10045 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s3, 0x80010
10046 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
10047 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10048 ; GFX7-HSA-NEXT:    s_or_b32 s14, s1, s0
10049 ; GFX7-HSA-NEXT:    s_bfe_i32 s0, s3, 0x80008
10050 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s3
10051 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
10052 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10053 ; GFX7-HSA-NEXT:    s_or_b32 s3, s1, s0
10054 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s2, 24
10055 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s2, 0x80010
10056 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
10057 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10058 ; GFX7-HSA-NEXT:    s_or_b32 s15, s1, s0
10059 ; GFX7-HSA-NEXT:    s_bfe_i32 s0, s2, 0x80008
10060 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s2
10061 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
10062 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10063 ; GFX7-HSA-NEXT:    s_or_b32 s2, s1, s0
10064 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s5, 24
10065 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s5, 0x80010
10066 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
10067 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10068 ; GFX7-HSA-NEXT:    s_or_b32 s16, s1, s0
10069 ; GFX7-HSA-NEXT:    s_bfe_i32 s0, s5, 0x80008
10070 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s5
10071 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
10072 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10073 ; GFX7-HSA-NEXT:    s_or_b32 s5, s1, s0
10074 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s4, 24
10075 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s4, 0x80010
10076 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
10077 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10078 ; GFX7-HSA-NEXT:    s_or_b32 s17, s1, s0
10079 ; GFX7-HSA-NEXT:    s_bfe_i32 s0, s4, 0x80008
10080 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s1, s4
10081 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
10082 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10083 ; GFX7-HSA-NEXT:    s_or_b32 s4, s1, s0
10084 ; GFX7-HSA-NEXT:    s_ashr_i32 s0, s7, 24
10085 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s7, 0x80010
10086 ; GFX7-HSA-NEXT:    s_lshl_b32 s0, s0, 16
10087 ; GFX7-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
10088 ; GFX7-HSA-NEXT:    s_or_b32 s0, s1, s0
10089 ; GFX7-HSA-NEXT:    s_bfe_i32 s1, s7, 0x80008
10090 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s7, s7
10091 ; GFX7-HSA-NEXT:    s_lshl_b32 s1, s1, 16
10092 ; GFX7-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
10093 ; GFX7-HSA-NEXT:    s_or_b32 s1, s7, s1
10094 ; GFX7-HSA-NEXT:    s_ashr_i32 s7, s6, 24
10095 ; GFX7-HSA-NEXT:    s_bfe_i32 s18, s6, 0x80010
10096 ; GFX7-HSA-NEXT:    s_lshl_b32 s7, s7, 16
10097 ; GFX7-HSA-NEXT:    s_and_b32 s18, s18, 0xffff
10098 ; GFX7-HSA-NEXT:    s_or_b32 s7, s18, s7
10099 ; GFX7-HSA-NEXT:    s_bfe_i32 s18, s6, 0x80008
10100 ; GFX7-HSA-NEXT:    s_sext_i32_i8 s6, s6
10101 ; GFX7-HSA-NEXT:    s_lshl_b32 s18, s18, 16
10102 ; GFX7-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
10103 ; GFX7-HSA-NEXT:    s_or_b32 s6, s6, s18
10104 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s0
10105 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 48
10106 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s1
10107 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
10108 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
10109 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
10110 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 32
10111 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s6
10112 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s7
10113 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
10114 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10115 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
10116 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
10117 ; GFX7-HSA-NEXT:    s_add_u32 s0, s8, 16
10118 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s4
10119 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s17
10120 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s5
10121 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s16
10122 ; GFX7-HSA-NEXT:    s_addc_u32 s1, s9, 0
10123 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10124 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s1
10125 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s2
10126 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s15
10127 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s3
10128 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s14
10129 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s0
10130 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10131 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v4, s8
10132 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v0, s13
10133 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v1, s12
10134 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v2, s11
10135 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v3, s10
10136 ; GFX7-HSA-NEXT:    v_mov_b32_e32 v5, s9
10137 ; GFX7-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10138 ; GFX7-HSA-NEXT:    s_endpgm
10140 ; GFX8-NOHSA-LABEL: constant_sextload_v32i8_to_v32i16:
10141 ; GFX8-NOHSA:       ; %bb.0:
10142 ; GFX8-NOHSA-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x24
10143 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10144 ; GFX8-NOHSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
10145 ; GFX8-NOHSA-NEXT:    s_waitcnt lgkmcnt(0)
10146 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s18, s1, 0x80000
10147 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v0, 8, s1
10148 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s17, s1, 16
10149 ; GFX8-NOHSA-NEXT:    s_and_b32 s18, 0xffff, s18
10150 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
10151 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s16, s0, 16
10152 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v2, s18, v0
10153 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s0, 0x80000
10154 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v0, 8, s0
10155 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s17, 0x80000
10156 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v1, 8, s17
10157 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10158 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
10159 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v3, s0, v1
10160 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s16, 0x80000
10161 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v1, 8, s16
10162 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10163 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
10164 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v1, s0, v1
10165 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s3, 0x80000
10166 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v4, 8, s3
10167 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10168 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
10169 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v6, s0, v4
10170 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s2, 0x80000
10171 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v4, 8, s2
10172 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s15, s3, 16
10173 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10174 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
10175 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v4, s0, v4
10176 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s15, 0x80000
10177 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v5, 8, s15
10178 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s14, s2, 16
10179 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10180 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
10181 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v7, s0, v5
10182 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s14, 0x80000
10183 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v5, 8, s14
10184 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, 0xffff, s1
10185 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
10186 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10187 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
10188 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s13, s5, 16
10189 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v0, s1, v0
10190 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v5, s0, v5
10191 ; GFX8-NOHSA-NEXT:    s_ashr_i64 s[0:1], s[4:5], 56
10192 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s1, s13, 0x80000
10193 ; GFX8-NOHSA-NEXT:    s_lshl_b32 s0, s0, 16
10194 ; GFX8-NOHSA-NEXT:    s_and_b32 s1, 0xffff, s1
10195 ; GFX8-NOHSA-NEXT:    s_or_b32 s2, s1, s0
10196 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s5, 0x80000
10197 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v8, 8, s5
10198 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10199 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
10200 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v10, s0, v8
10201 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s4, 0x80000
10202 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v8, 8, s4
10203 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s12, s4, 16
10204 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10205 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v8, 16, v8
10206 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v8, s0, v8
10207 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s12, 0x80000
10208 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v9, 8, s12
10209 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10210 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
10211 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v9, s0, v9
10212 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s7, 0x80000
10213 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v11, 8, s7
10214 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10215 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
10216 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v13, s0, v11
10217 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s6, 0x80000
10218 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v11, 8, s6
10219 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s11, s7, 16
10220 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10221 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
10222 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v11, s0, v11
10223 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s11, 0x80000
10224 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v12, 8, s11
10225 ; GFX8-NOHSA-NEXT:    s_lshr_b32 s10, s6, 16
10226 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10227 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
10228 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v14, s0, v12
10229 ; GFX8-NOHSA-NEXT:    s_bfe_i32 s0, s10, 0x80000
10230 ; GFX8-NOHSA-NEXT:    v_ashrrev_i16_e64 v12, 8, s10
10231 ; GFX8-NOHSA-NEXT:    s_and_b32 s0, 0xffff, s0
10232 ; GFX8-NOHSA-NEXT:    v_lshlrev_b32_e32 v12, 16, v12
10233 ; GFX8-NOHSA-NEXT:    v_or_b32_e32 v12, s0, v12
10234 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 48
10235 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
10236 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v16, s1
10237 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v15, s0
10238 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 32
10239 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
10240 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[15:16], v[11:14]
10241 ; GFX8-NOHSA-NEXT:    s_nop 0
10242 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v13, s1
10243 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v12, s0
10244 ; GFX8-NOHSA-NEXT:    s_add_u32 s0, s8, 16
10245 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v11, s2
10246 ; GFX8-NOHSA-NEXT:    s_addc_u32 s1, s9, 0
10247 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
10248 ; GFX8-NOHSA-NEXT:    s_nop 0
10249 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v9, s1
10250 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v8, s0
10251 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
10252 ; GFX8-NOHSA-NEXT:    s_nop 0
10253 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v4, s8
10254 ; GFX8-NOHSA-NEXT:    v_mov_b32_e32 v5, s9
10255 ; GFX8-NOHSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
10256 ; GFX8-NOHSA-NEXT:    s_endpgm
10258 ; EG-LABEL: constant_sextload_v32i8_to_v32i16:
10259 ; EG:       ; %bb.0:
10260 ; EG-NEXT:    ALU 1, @14, KC0[CB0:0-32], KC1[]
10261 ; EG-NEXT:    TEX 1 @10
10262 ; EG-NEXT:    ALU 104, @16, KC0[], KC1[]
10263 ; EG-NEXT:    ALU 104, @121, KC0[], KC1[]
10264 ; EG-NEXT:    ALU 95, @226, KC0[CB0:0-32], KC1[]
10265 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T42.X, 0
10266 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T41.X, 0
10267 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T40.X, 0
10268 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T39.X, 1
10269 ; EG-NEXT:    CF_END
10270 ; EG-NEXT:    Fetch clause starting at 10:
10271 ; EG-NEXT:     VTX_READ_128 T37.XYZW, T35.X, 16, #1
10272 ; EG-NEXT:     VTX_READ_128 T35.XYZW, T35.X, 0, #1
10273 ; EG-NEXT:    ALU clause starting at 14:
10274 ; EG-NEXT:     MOV * T0.Y, T16.X,
10275 ; EG-NEXT:     MOV * T35.X, KC0[2].Z,
10276 ; EG-NEXT:    ALU clause starting at 16:
10277 ; EG-NEXT:     BFE_INT * T0.W, T37.X, 0.0, literal.x,
10278 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10279 ; EG-NEXT:     AND_INT T0.W, PV.W, literal.x,
10280 ; EG-NEXT:     AND_INT * T1.W, T0.Y, literal.y,
10281 ; EG-NEXT:    65535(9.183409e-41), -65536(nan)
10282 ; EG-NEXT:     OR_INT * T0.W, PS, PV.W,
10283 ; EG-NEXT:     MOV * T16.X, PV.W,
10284 ; EG-NEXT:     MOV T0.Y, PV.X,
10285 ; EG-NEXT:     LSHR * T0.W, T37.X, literal.x,
10286 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10287 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10288 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10289 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10290 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10291 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10292 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10293 ; EG-NEXT:     MOV T16.X, PV.W,
10294 ; EG-NEXT:     MOV T0.Y, T17.X,
10295 ; EG-NEXT:     LSHR * T0.W, T37.X, literal.x, BS:VEC_120/SCL_212
10296 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10297 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10298 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10299 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10300 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10301 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10302 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10303 ; EG-NEXT:     MOV * T17.X, PV.W,
10304 ; EG-NEXT:     MOV T0.Y, PV.X,
10305 ; EG-NEXT:     ASHR * T0.W, T37.X, literal.x,
10306 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10307 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10308 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10309 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10310 ; EG-NEXT:     OR_INT * T36.Y, PV.W, PS,
10311 ; EG-NEXT:     MOV T17.X, PV.Y,
10312 ; EG-NEXT:     MOV T0.Y, T12.X,
10313 ; EG-NEXT:     BFE_INT * T0.W, T37.Y, 0.0, literal.x,
10314 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10315 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10316 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10317 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10318 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10319 ; EG-NEXT:     MOV * T12.X, PV.W,
10320 ; EG-NEXT:     MOV T0.Y, PV.X,
10321 ; EG-NEXT:     LSHR * T0.W, T37.Y, literal.x,
10322 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10323 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10324 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10325 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10326 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10327 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10328 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10329 ; EG-NEXT:     MOV T12.X, PV.W,
10330 ; EG-NEXT:     MOV T0.Y, T13.X,
10331 ; EG-NEXT:     LSHR * T0.W, T37.Y, literal.x,
10332 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10333 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10334 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10335 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10336 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10337 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10338 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10339 ; EG-NEXT:     MOV * T13.X, PV.W,
10340 ; EG-NEXT:     MOV T0.Y, PV.X,
10341 ; EG-NEXT:     ASHR * T0.W, T37.Y, literal.x,
10342 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10343 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10344 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10345 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10346 ; EG-NEXT:     OR_INT * T36.W, PV.W, PS,
10347 ; EG-NEXT:     MOV T13.X, PV.W,
10348 ; EG-NEXT:     MOV T0.Y, T8.X,
10349 ; EG-NEXT:     BFE_INT * T0.W, T37.Z, 0.0, literal.x,
10350 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10351 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10352 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10353 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10354 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10355 ; EG-NEXT:     MOV * T8.X, PV.W,
10356 ; EG-NEXT:     MOV T0.Y, PV.X,
10357 ; EG-NEXT:     LSHR * T0.W, T37.Z, literal.x,
10358 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10359 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10360 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10361 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10362 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10363 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10364 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10365 ; EG-NEXT:     MOV T8.X, PV.W,
10366 ; EG-NEXT:     MOV T0.Y, T9.X,
10367 ; EG-NEXT:     LSHR * T0.W, T37.Z, literal.x,
10368 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10369 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10370 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10371 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10372 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10373 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10374 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10375 ; EG-NEXT:     MOV * T9.X, PV.W,
10376 ; EG-NEXT:     MOV T0.Y, PV.X,
10377 ; EG-NEXT:     ASHR * T0.W, T37.Z, literal.x,
10378 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10379 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10380 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10381 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10382 ; EG-NEXT:    ALU clause starting at 121:
10383 ; EG-NEXT:     OR_INT * T37.Y, T1.W, T0.W,
10384 ; EG-NEXT:     MOV T9.X, PV.Y,
10385 ; EG-NEXT:     MOV T0.Y, T4.X,
10386 ; EG-NEXT:     BFE_INT * T0.W, T37.W, 0.0, literal.x,
10387 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10388 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10389 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10390 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10391 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10392 ; EG-NEXT:     MOV * T4.X, PV.W,
10393 ; EG-NEXT:     MOV T0.Y, PV.X,
10394 ; EG-NEXT:     LSHR * T0.W, T37.W, literal.x,
10395 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10396 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10397 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10398 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10399 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10400 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10401 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10402 ; EG-NEXT:     MOV T4.X, PV.W,
10403 ; EG-NEXT:     MOV T0.Y, T5.X,
10404 ; EG-NEXT:     LSHR * T0.W, T37.W, literal.x,
10405 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10406 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10407 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10408 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10409 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10410 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10411 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10412 ; EG-NEXT:     MOV * T5.X, PV.W,
10413 ; EG-NEXT:     MOV T0.Y, PV.X,
10414 ; EG-NEXT:     ASHR * T0.W, T37.W, literal.x,
10415 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10416 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10417 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10418 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10419 ; EG-NEXT:     OR_INT * T37.W, PV.W, PS,
10420 ; EG-NEXT:     MOV T5.X, PV.W,
10421 ; EG-NEXT:     MOV T0.Y, T32.X,
10422 ; EG-NEXT:     BFE_INT * T0.W, T35.X, 0.0, literal.x, BS:VEC_120/SCL_212
10423 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10424 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10425 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10426 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10427 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10428 ; EG-NEXT:     MOV * T32.X, PV.W,
10429 ; EG-NEXT:     MOV T0.Y, PV.X,
10430 ; EG-NEXT:     LSHR * T0.W, T35.X, literal.x,
10431 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10432 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10433 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10434 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10435 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10436 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10437 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10438 ; EG-NEXT:     MOV T32.X, PV.W,
10439 ; EG-NEXT:     MOV T0.Y, T33.X,
10440 ; EG-NEXT:     LSHR * T0.W, T35.X, literal.x, BS:VEC_120/SCL_212
10441 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10442 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10443 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10444 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10445 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10446 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10447 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10448 ; EG-NEXT:     MOV * T33.X, PV.W,
10449 ; EG-NEXT:     MOV T0.Y, PV.X,
10450 ; EG-NEXT:     ASHR * T0.W, T35.X, literal.x,
10451 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10452 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10453 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10454 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10455 ; EG-NEXT:     OR_INT * T38.Y, PV.W, PS,
10456 ; EG-NEXT:     MOV T33.X, PV.Y,
10457 ; EG-NEXT:     MOV T0.Y, T28.X,
10458 ; EG-NEXT:     BFE_INT * T0.W, T35.Y, 0.0, literal.x,
10459 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10460 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10461 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10462 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10463 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10464 ; EG-NEXT:     MOV * T28.X, PV.W,
10465 ; EG-NEXT:     MOV T0.Y, PV.X,
10466 ; EG-NEXT:     LSHR * T0.W, T35.Y, literal.x,
10467 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10468 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10469 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10470 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10471 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10472 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10473 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10474 ; EG-NEXT:     MOV T28.X, PV.W,
10475 ; EG-NEXT:     MOV T0.Y, T29.X,
10476 ; EG-NEXT:     LSHR * T0.W, T35.Y, literal.x,
10477 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10478 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10479 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10480 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10481 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10482 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10483 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10484 ; EG-NEXT:     MOV * T29.X, PV.W,
10485 ; EG-NEXT:     MOV T0.Y, PV.X,
10486 ; EG-NEXT:     ASHR * T0.W, T35.Y, literal.x,
10487 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10488 ; EG-NEXT:    ALU clause starting at 226:
10489 ; EG-NEXT:     AND_INT T1.W, T0.Y, literal.x,
10490 ; EG-NEXT:     LSHL * T0.W, T0.W, literal.y,
10491 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10492 ; EG-NEXT:     OR_INT * T38.W, PV.W, PS,
10493 ; EG-NEXT:     MOV T29.X, PV.W,
10494 ; EG-NEXT:     MOV T0.Y, T24.X,
10495 ; EG-NEXT:     BFE_INT * T0.W, T35.Z, 0.0, literal.x,
10496 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10497 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10498 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10499 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10500 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10501 ; EG-NEXT:     MOV * T24.X, PV.W,
10502 ; EG-NEXT:     MOV T0.Y, PV.X,
10503 ; EG-NEXT:     LSHR * T0.W, T35.Z, literal.x,
10504 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10505 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10506 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10507 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10508 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10509 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10510 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10511 ; EG-NEXT:     MOV T24.X, PV.W,
10512 ; EG-NEXT:     MOV T0.Y, T25.X,
10513 ; EG-NEXT:     LSHR * T0.W, T35.Z, literal.x,
10514 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10515 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10516 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10517 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10518 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10519 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10520 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10521 ; EG-NEXT:     MOV * T25.X, PV.W,
10522 ; EG-NEXT:     MOV T0.Y, PV.X,
10523 ; EG-NEXT:     ASHR * T0.W, T35.Z, literal.x,
10524 ; EG-NEXT:    24(3.363116e-44), 0(0.000000e+00)
10525 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10526 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.y,
10527 ; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
10528 ; EG-NEXT:     OR_INT * T35.Y, PV.W, PS,
10529 ; EG-NEXT:     MOV T25.X, PV.Y,
10530 ; EG-NEXT:     MOV T0.Y, T20.X,
10531 ; EG-NEXT:     BFE_INT * T0.W, T35.W, 0.0, literal.x,
10532 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10533 ; EG-NEXT:     AND_INT T1.W, PV.Y, literal.x,
10534 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.y,
10535 ; EG-NEXT:    -65536(nan), 65535(9.183409e-41)
10536 ; EG-NEXT:     OR_INT * T0.W, PV.W, PS,
10537 ; EG-NEXT:     MOV * T20.X, PV.W,
10538 ; EG-NEXT:     MOV T0.Y, PV.X,
10539 ; EG-NEXT:     LSHR * T0.W, T35.W, literal.x,
10540 ; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
10541 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10542 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10543 ; EG-NEXT:    8(1.121039e-44), 65535(9.183409e-41)
10544 ; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
10545 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10546 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10547 ; EG-NEXT:     MOV T20.X, PV.W,
10548 ; EG-NEXT:     MOV T0.Y, T21.X,
10549 ; EG-NEXT:     LSHR * T0.W, T35.W, literal.x,
10550 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10551 ; EG-NEXT:     BFE_INT T0.W, PV.W, 0.0, literal.x,
10552 ; EG-NEXT:     AND_INT * T1.W, PV.Y, literal.y,
10553 ; EG-NEXT:    8(1.121039e-44), -65536(nan)
10554 ; EG-NEXT:     AND_INT * T0.W, PV.W, literal.x,
10555 ; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
10556 ; EG-NEXT:     OR_INT * T0.W, T1.W, PV.W,
10557 ; EG-NEXT:     MOV * T21.X, PV.W,
10558 ; EG-NEXT:     MOV T0.Y, PV.X,
10559 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
10560 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
10561 ; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
10562 ; EG-NEXT:     LSHR * T40.X, KC0[2].Y, literal.x,
10563 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
10564 ; EG-NEXT:     ASHR T0.W, T35.W, literal.x,
10565 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
10566 ; EG-NEXT:    24(3.363116e-44), 48(6.726233e-44)
10567 ; EG-NEXT:     LSHR T41.X, PS, literal.x,
10568 ; EG-NEXT:     AND_INT T0.Z, T0.Y, literal.y,
10569 ; EG-NEXT:     LSHL T0.W, PV.W, literal.z,
10570 ; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.w,
10571 ; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
10572 ; EG-NEXT:    16(2.242078e-44), 32(4.484155e-44)
10573 ; EG-NEXT:     LSHR T42.X, PS, literal.x,
10574 ; EG-NEXT:     OR_INT * T35.W, PV.Z, PV.W,
10575 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
10576 ; EG-NEXT:     MOV T21.X, PV.W,
10577 ; EG-NEXT:     MOV * T36.X, T16.X,
10578 ; EG-NEXT:     MOV * T36.Z, T12.X,
10579 ; EG-NEXT:     MOV T37.X, T8.X,
10580 ; EG-NEXT:     MOV T37.Z, T4.X, BS:VEC_120/SCL_212
10581 ; EG-NEXT:     MOV * T38.X, T32.X,
10582 ; EG-NEXT:     MOV * T38.Z, T28.X,
10583 ; EG-NEXT:     MOV T35.X, T24.X,
10584 ; EG-NEXT:     MOV * T35.Z, T20.X, BS:VEC_120/SCL_212
10585   %load = load <32 x i8>, ptr addrspace(4) %in
10586   %ext = sext <32 x i8> %load to <32 x i16>
10587   store <32 x i16> %ext, ptr addrspace(1) %out
10588   ret void
10591 ; XFUNC-LABEL: {{^}}constant_zextload_v64i8_to_v64i16:
10592 ; define amdgpu_kernel void @constant_zextload_v64i8_to_v64i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
10593 ;   %load = load <64 x i8>, ptr addrspace(4) %in
10594 ;   %ext = zext <64 x i8> %load to <64 x i16>
10595 ;   store <64 x i16> %ext, ptr addrspace(1) %out
10596 ;   ret void
10597 ; }
10599 ; XFUNC-LABEL: {{^}}constant_sextload_v64i8_to_v64i16:
10600 ; define amdgpu_kernel void @constant_sextload_v64i8_to_v64i16(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
10601 ;   %load = load <64 x i8>, ptr addrspace(4) %in
10602 ;   %ext = sext <64 x i8> %load to <64 x i16>
10603 ;   store <64 x i16> %ext, ptr addrspace(1) %out
10604 ;   ret void
10605 ; }
10607 attributes #0 = { nounwind }