1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-NOHSA-SI %s
3; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-HSA %s
4; RUN: llc -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-NOHSA-VI %s
5; RUN: llc -march=r600 -mcpu=redwood -verify-machineinstrs < %s | FileCheck --check-prefix=EG %s
6
7define amdgpu_kernel void @constant_load_i16(i16 addrspace(1)* %out, i16 addrspace(4)* %in) {
8; GCN-NOHSA-SI-LABEL: constant_load_i16:
9; GCN-NOHSA-SI:       ; %bb.0: ; %entry
10; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
11; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
12; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
13; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
14; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
15; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
16; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
17; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
18; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
19; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
20; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
21; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
22; GCN-NOHSA-SI-NEXT:    buffer_store_short v0, off, s[4:7], 0
23; GCN-NOHSA-SI-NEXT:    s_endpgm
24;
25; GCN-HSA-LABEL: constant_load_i16:
26; GCN-HSA:       ; %bb.0: ; %entry
27; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
28; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
29; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
30; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
31; GCN-HSA-NEXT:    flat_load_ushort v2, v[0:1]
32; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
33; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
34; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
35; GCN-HSA-NEXT:    flat_store_short v[0:1], v2
36; GCN-HSA-NEXT:    s_endpgm
37;
38; GCN-NOHSA-VI-LABEL: constant_load_i16:
39; GCN-NOHSA-VI:       ; %bb.0: ; %entry
40; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
41; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
42; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
43; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
44; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
45; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
46; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
47; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
48; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
49; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
50; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
51; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
52; GCN-NOHSA-VI-NEXT:    buffer_store_short v0, off, s[4:7], 0
53; GCN-NOHSA-VI-NEXT:    s_endpgm
54;
55; EG-LABEL: constant_load_i16:
56; EG:       ; %bb.0: ; %entry
57; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
58; EG-NEXT:    TEX 0 @6
59; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
60; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
61; EG-NEXT:    CF_END
62; EG-NEXT:    PAD
63; EG-NEXT:    Fetch clause starting at 6:
64; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
65; EG-NEXT:    ALU clause starting at 8:
66; EG-NEXT:     MOV * T0.X, KC0[2].Z,
67; EG-NEXT:    ALU clause starting at 9:
68; EG-NEXT:     AND_INT T0.W, KC0[2].Y, literal.x,
69; EG-NEXT:     AND_INT * T1.W, T0.X, literal.y,
70; EG-NEXT:    3(4.203895e-45), 65535(9.183409e-41)
71; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
72; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
73; EG-NEXT:     LSHL T0.X, T1.W, PV.W,
74; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
75; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
76; EG-NEXT:     MOV T0.Y, 0.0,
77; EG-NEXT:     MOV * T0.Z, 0.0,
78; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
79; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
80entry:
81  %ld = load i16, i16 addrspace(4)* %in
82  store i16 %ld, i16 addrspace(1)* %out
83  ret void
84}
85
86define amdgpu_kernel void @constant_load_v2i16(<2 x i16> addrspace(1)* %out, <2 x i16> addrspace(4)* %in) {
87; GCN-NOHSA-SI-LABEL: constant_load_v2i16:
88; GCN-NOHSA-SI:       ; %bb.0: ; %entry
89; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
90; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
91; GCN-NOHSA-SI-NEXT:    s_load_dword s4, s[2:3], 0x0
92; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
93; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
94; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
95; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
96; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
97; GCN-NOHSA-SI-NEXT:    s_endpgm
98;
99; GCN-HSA-LABEL: constant_load_v2i16:
100; GCN-HSA:       ; %bb.0: ; %entry
101; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
102; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
103; GCN-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
104; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
105; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
106; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
107; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
108; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
109; GCN-HSA-NEXT:    s_endpgm
110;
111; GCN-NOHSA-VI-LABEL: constant_load_v2i16:
112; GCN-NOHSA-VI:       ; %bb.0: ; %entry
113; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
114; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
115; GCN-NOHSA-VI-NEXT:    s_load_dword s4, s[2:3], 0x0
116; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
117; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
118; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
119; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
120; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
121; GCN-NOHSA-VI-NEXT:    s_endpgm
122;
123; EG-LABEL: constant_load_v2i16:
124; EG:       ; %bb.0: ; %entry
125; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
126; EG-NEXT:    TEX 0 @6
127; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
128; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
129; EG-NEXT:    CF_END
130; EG-NEXT:    PAD
131; EG-NEXT:    Fetch clause starting at 6:
132; EG-NEXT:     VTX_READ_32 T0.X, T0.X, 0, #1
133; EG-NEXT:    ALU clause starting at 8:
134; EG-NEXT:     MOV * T0.X, KC0[2].Z,
135; EG-NEXT:    ALU clause starting at 9:
136; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
137; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
138entry:
139  %ld = load <2 x i16>, <2 x i16> addrspace(4)* %in
140  store <2 x i16> %ld, <2 x i16> addrspace(1)* %out
141  ret void
142}
143
144define amdgpu_kernel void @constant_load_v3i16(<3 x i16> addrspace(1)* %out, <3 x i16> addrspace(4)* %in) {
145; GCN-NOHSA-SI-LABEL: constant_load_v3i16:
146; GCN-NOHSA-SI:       ; %bb.0: ; %entry
147; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
148; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
149; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
150; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
151; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
152; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
153; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
154; GCN-NOHSA-SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 offset:4
155; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
156; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
157; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0
158; GCN-NOHSA-SI-NEXT:    s_endpgm
159;
160; GCN-HSA-LABEL: constant_load_v3i16:
161; GCN-HSA:       ; %bb.0: ; %entry
162; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
163; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
164; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
165; GCN-HSA-NEXT:    s_add_u32 s4, s0, 4
166; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
167; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s4
168; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
169; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s5
170; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
171; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s3
172; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
173; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s2
174; GCN-HSA-NEXT:    flat_store_short v[2:3], v4
175; GCN-HSA-NEXT:    flat_store_dword v[0:1], v5
176; GCN-HSA-NEXT:    s_endpgm
177;
178; GCN-NOHSA-VI-LABEL: constant_load_v3i16:
179; GCN-NOHSA-VI:       ; %bb.0: ; %entry
180; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
181; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
182; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
183; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
184; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
185; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
186; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s5
187; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s4
188; GCN-NOHSA-VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 offset:4
189; GCN-NOHSA-VI-NEXT:    buffer_store_dword v1, off, s[0:3], 0
190; GCN-NOHSA-VI-NEXT:    s_endpgm
191;
192; EG-LABEL: constant_load_v3i16:
193; EG:       ; %bb.0: ; %entry
194; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
195; EG-NEXT:    TEX 2 @6
196; EG-NEXT:    ALU 19, @13, KC0[CB0:0-32], KC1[]
197; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.X, T7.X, 0
198; EG-NEXT:    MEM_RAT MSKOR T5.XW, T8.X
199; EG-NEXT:    CF_END
200; EG-NEXT:    Fetch clause starting at 6:
201; EG-NEXT:     VTX_READ_16 T6.X, T5.X, 0, #1
202; EG-NEXT:     VTX_READ_16 T7.X, T5.X, 2, #1
203; EG-NEXT:     VTX_READ_16 T5.X, T5.X, 4, #1
204; EG-NEXT:    ALU clause starting at 12:
205; EG-NEXT:     MOV * T5.X, KC0[2].Z,
206; EG-NEXT:    ALU clause starting at 13:
207; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
208; EG-NEXT:    4(5.605194e-45), 0(0.000000e+00)
209; EG-NEXT:     AND_INT T1.W, PV.W, literal.x,
210; EG-NEXT:     AND_INT * T2.W, T5.X, literal.y,
211; EG-NEXT:    3(4.203895e-45), 65535(9.183409e-41)
212; EG-NEXT:     LSHL * T1.W, PV.W, literal.x,
213; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
214; EG-NEXT:     LSHL T5.X, T2.W, PV.W,
215; EG-NEXT:     LSHL * T5.W, literal.x, PV.W,
216; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
217; EG-NEXT:     MOV T5.Y, 0.0,
218; EG-NEXT:     MOV * T5.Z, 0.0,
219; EG-NEXT:     LSHR T8.X, T0.W, literal.x,
220; EG-NEXT:     LSHL T0.W, T7.X, literal.y,
221; EG-NEXT:     AND_INT * T1.W, T6.X, literal.z,
222; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
223; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
224; EG-NEXT:     OR_INT T6.X, PV.W, PS,
225; EG-NEXT:     LSHR * T7.X, KC0[2].Y, literal.x,
226; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
227entry:
228  %ld = load <3 x i16>, <3 x i16> addrspace(4)* %in
229  store <3 x i16> %ld, <3 x i16> addrspace(1)* %out
230  ret void
231}
232
233define amdgpu_kernel void @constant_load_v4i16(<4 x i16> addrspace(1)* %out, <4 x i16> addrspace(4)* %in) {
234; GCN-NOHSA-SI-LABEL: constant_load_v4i16:
235; GCN-NOHSA-SI:       ; %bb.0: ; %entry
236; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
237; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
238; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
239; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
240; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
241; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
242; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
243; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s5
244; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
245; GCN-NOHSA-SI-NEXT:    s_endpgm
246;
247; GCN-HSA-LABEL: constant_load_v4i16:
248; GCN-HSA:       ; %bb.0: ; %entry
249; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
250; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
251; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
252; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
253; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
254; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
255; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
256; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s3
257; GCN-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
258; GCN-HSA-NEXT:    s_endpgm
259;
260; GCN-NOHSA-VI-LABEL: constant_load_v4i16:
261; GCN-NOHSA-VI:       ; %bb.0: ; %entry
262; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
263; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
264; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
265; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
266; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
267; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
268; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
269; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s5
270; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
271; GCN-NOHSA-VI-NEXT:    s_endpgm
272;
273; EG-LABEL: constant_load_v4i16:
274; EG:       ; %bb.0: ; %entry
275; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
276; EG-NEXT:    TEX 0 @6
277; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
278; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
279; EG-NEXT:    CF_END
280; EG-NEXT:    PAD
281; EG-NEXT:    Fetch clause starting at 6:
282; EG-NEXT:     VTX_READ_64 T0.XY, T0.X, 0, #1
283; EG-NEXT:    ALU clause starting at 8:
284; EG-NEXT:     MOV * T0.X, KC0[2].Z,
285; EG-NEXT:    ALU clause starting at 9:
286; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
287; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
288entry:
289  %ld = load <4 x i16>, <4 x i16> addrspace(4)* %in
290  store <4 x i16> %ld, <4 x i16> addrspace(1)* %out
291  ret void
292}
293
294define amdgpu_kernel void @constant_load_v8i16(<8 x i16> addrspace(1)* %out, <8 x i16> addrspace(4)* %in) {
295; GCN-NOHSA-SI-LABEL: constant_load_v8i16:
296; GCN-NOHSA-SI:       ; %bb.0: ; %entry
297; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
298; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
299; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
300; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
301; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
302; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
303; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
304; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s5
305; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s6
306; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s7
307; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
308; GCN-NOHSA-SI-NEXT:    s_endpgm
309;
310; GCN-HSA-LABEL: constant_load_v8i16:
311; GCN-HSA:       ; %bb.0: ; %entry
312; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
313; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
314; GCN-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
315; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
316; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
317; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
318; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
319; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
320; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
321; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
322; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
323; GCN-HSA-NEXT:    s_endpgm
324;
325; GCN-NOHSA-VI-LABEL: constant_load_v8i16:
326; GCN-NOHSA-VI:       ; %bb.0: ; %entry
327; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
328; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
329; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
330; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
331; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
332; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
333; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
334; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s5
335; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
336; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s7
337; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
338; GCN-NOHSA-VI-NEXT:    s_endpgm
339;
340; EG-LABEL: constant_load_v8i16:
341; EG:       ; %bb.0: ; %entry
342; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
343; EG-NEXT:    TEX 0 @6
344; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
345; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
346; EG-NEXT:    CF_END
347; EG-NEXT:    PAD
348; EG-NEXT:    Fetch clause starting at 6:
349; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
350; EG-NEXT:    ALU clause starting at 8:
351; EG-NEXT:     MOV * T0.X, KC0[2].Z,
352; EG-NEXT:    ALU clause starting at 9:
353; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
354; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
355entry:
356  %ld = load <8 x i16>, <8 x i16> addrspace(4)* %in
357  store <8 x i16> %ld, <8 x i16> addrspace(1)* %out
358  ret void
359}
360
361define amdgpu_kernel void @constant_load_v16i16(<16 x i16> addrspace(1)* %out, <16 x i16> addrspace(4)* %in) {
362; GCN-NOHSA-SI-LABEL: constant_load_v16i16:
363; GCN-NOHSA-SI:       ; %bb.0: ; %entry
364; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x9
365; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
366; GCN-NOHSA-SI-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
367; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, 0xf000
368; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, -1
369; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
370; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
371; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s5
372; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s6
373; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s7
374; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16
375; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
376; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s0
377; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s1
378; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s2
379; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s3
380; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
381; GCN-NOHSA-SI-NEXT:    s_endpgm
382;
383; GCN-HSA-LABEL: constant_load_v16i16:
384; GCN-HSA:       ; %bb.0: ; %entry
385; GCN-HSA-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x0
386; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
387; GCN-HSA-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
388; GCN-HSA-NEXT:    s_add_u32 s10, s8, 16
389; GCN-HSA-NEXT:    s_addc_u32 s11, s9, 0
390; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s10
391; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s11
392; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
393; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
394; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
395; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
396; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
397; GCN-HSA-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
398; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
399; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
400; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
401; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s2
402; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s3
403; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
404; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
405; GCN-HSA-NEXT:    s_endpgm
406;
407; GCN-NOHSA-VI-LABEL: constant_load_v16i16:
408; GCN-NOHSA-VI:       ; %bb.0: ; %entry
409; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x24
410; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
411; GCN-NOHSA-VI-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
412; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, 0xf000
413; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, -1
414; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
415; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
416; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s5
417; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
418; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s7
419; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, s0
420; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, s1
421; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v6, s2
422; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v7, s3
423; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16
424; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[8:11], 0
425; GCN-NOHSA-VI-NEXT:    s_endpgm
426;
427; EG-LABEL: constant_load_v16i16:
428; EG:       ; %bb.0: ; %entry
429; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
430; EG-NEXT:    TEX 0 @8
431; EG-NEXT:    ALU 3, @13, KC0[CB0:0-32], KC1[]
432; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
433; EG-NEXT:    ALU 1, @17, KC0[CB0:0-32], KC1[]
434; EG-NEXT:    TEX 0 @10
435; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
436; EG-NEXT:    CF_END
437; EG-NEXT:    Fetch clause starting at 8:
438; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1
439; EG-NEXT:    Fetch clause starting at 10:
440; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
441; EG-NEXT:    ALU clause starting at 12:
442; EG-NEXT:     MOV * T0.X, KC0[2].Z,
443; EG-NEXT:    ALU clause starting at 13:
444; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
445; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
446; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
447; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
448; EG-NEXT:    ALU clause starting at 17:
449; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
450; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
451entry:
452  %ld = load <16 x i16>, <16 x i16> addrspace(4)* %in
453  store <16 x i16> %ld, <16 x i16> addrspace(1)* %out
454  ret void
455}
456
457define amdgpu_kernel void @constant_load_v16i16_align2(<16 x i16> addrspace(4)* %ptr0) #0 {
458; GCN-NOHSA-SI-LABEL: constant_load_v16i16_align2:
459; GCN-NOHSA-SI:       ; %bb.0: ; %entry
460; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x9
461; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
462; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
463; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
464; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[0:3], 0
465; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v1, off, s[0:3], 0 offset:2
466; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v4, off, s[0:3], 0 offset:4
467; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v2, off, s[0:3], 0 offset:6
468; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v5, off, s[0:3], 0 offset:8
469; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v3, off, s[0:3], 0 offset:10
470; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v6, off, s[0:3], 0 offset:12
471; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v7, off, s[0:3], 0 offset:14
472; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v8, off, s[0:3], 0 offset:16
473; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v9, off, s[0:3], 0 offset:18
474; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v10, off, s[0:3], 0 offset:20
475; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v11, off, s[0:3], 0 offset:22
476; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v12, off, s[0:3], 0 offset:24
477; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v13, off, s[0:3], 0 offset:26
478; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v14, off, s[0:3], 0 offset:28
479; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v15, off, s[0:3], 0 offset:30
480; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(8)
481; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
482; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v3
483; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v2
484; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v18, 16, v1
485; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
486; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
487; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
488; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
489; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
490; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v3, v7, v6
491; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v2, v16, v5
492; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v1, v17, v4
493; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v0, v18, v0
494; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v7, v15, v14
495; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v6, v13, v12
496; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v5, v11, v10
497; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v4, v9, v8
498; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
499; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
500; GCN-NOHSA-SI-NEXT:    s_endpgm
501;
502; GCN-HSA-LABEL: constant_load_v16i16_align2:
503; GCN-HSA:       ; %bb.0: ; %entry
504; GCN-HSA-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0
505; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
506; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
507; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
508; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
509; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
510; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
511; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
512; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
513; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
514; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
515; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[0:3]
516; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
517; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
518; GCN-HSA-NEXT:    s_endpgm
519;
520; GCN-NOHSA-VI-LABEL: constant_load_v16i16_align2:
521; GCN-NOHSA-VI:       ; %bb.0: ; %entry
522; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x24
523; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
524; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
525; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
526; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[0:3], 0 offset:14
527; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v1, off, s[0:3], 0 offset:10
528; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v2, off, s[0:3], 0 offset:6
529; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v3, off, s[0:3], 0 offset:2
530; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v4, off, s[0:3], 0 offset:30
531; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v5, off, s[0:3], 0 offset:26
532; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v6, off, s[0:3], 0 offset:22
533; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v7, off, s[0:3], 0 offset:18
534; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v8, off, s[0:3], 0 offset:12
535; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v9, off, s[0:3], 0 offset:8
536; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v10, off, s[0:3], 0 offset:4
537; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v11, off, s[0:3], 0
538; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v12, off, s[0:3], 0 offset:28
539; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v13, off, s[0:3], 0 offset:24
540; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v14, off, s[0:3], 0 offset:20
541; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v15, off, s[0:3], 0 offset:16
542; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(14)
543; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
544; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
545; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(13)
546; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v16, 16, v2
547; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(12)
548; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v17, 16, v3
549; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(11)
550; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
551; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(10)
552; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
553; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(9)
554; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v18, 16, v6
555; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(8)
556; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v19, 16, v7
557; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(7)
558; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v3, v0, v8
559; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(6)
560; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v2, v1, v9
561; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(5)
562; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v1, v16, v10
563; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(4)
564; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v0, v17, v11
565; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(3)
566; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v7, v4, v12
567; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(2)
568; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v6, v5, v13
569; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
570; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v5, v18, v14
571; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
572; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v4, v19, v15
573; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
574; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
575; GCN-NOHSA-VI-NEXT:    s_endpgm
576;
577; EG-LABEL: constant_load_v16i16_align2:
578; EG:       ; %bb.0: ; %entry
579; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
580; EG-NEXT:    TEX 0 @8
581; EG-NEXT:    ALU 1, @13, KC0[], KC1[]
582; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
583; EG-NEXT:    TEX 0 @10
584; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T2.X, 1
585; EG-NEXT:    CF_END
586; EG-NEXT:    PAD
587; EG-NEXT:    Fetch clause starting at 8:
588; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1
589; EG-NEXT:    Fetch clause starting at 10:
590; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
591; EG-NEXT:    ALU clause starting at 12:
592; EG-NEXT:     MOV * T0.X, KC0[2].Y,
593; EG-NEXT:    ALU clause starting at 13:
594; EG-NEXT:     MOV * T2.X, literal.x,
595; EG-NEXT:    0(0.000000e+00), 0(0.000000e+00)
596entry:
597  %ld =  load <16 x i16>, <16 x i16> addrspace(4)* %ptr0, align 2
598  store <16 x i16> %ld, <16 x i16> addrspace(1)* undef, align 32
599  ret void
600}
601
602define amdgpu_kernel void @constant_zextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(4)* %in) #0 {
603; GCN-NOHSA-SI-LABEL: constant_zextload_i16_to_i32:
604; GCN-NOHSA-SI:       ; %bb.0:
605; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
606; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
607; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
608; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
609; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
610; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
611; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
612; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
613; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
614; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
615; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
616; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
617; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
618; GCN-NOHSA-SI-NEXT:    s_endpgm
619;
620; GCN-HSA-LABEL: constant_zextload_i16_to_i32:
621; GCN-HSA:       ; %bb.0:
622; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
623; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
624; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
625; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
626; GCN-HSA-NEXT:    flat_load_ushort v2, v[0:1]
627; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
628; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
629; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
630; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
631; GCN-HSA-NEXT:    s_endpgm
632;
633; GCN-NOHSA-VI-LABEL: constant_zextload_i16_to_i32:
634; GCN-NOHSA-VI:       ; %bb.0:
635; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
636; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
637; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
638; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
639; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
640; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
641; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
642; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
643; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
644; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
645; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
646; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
647; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
648; GCN-NOHSA-VI-NEXT:    s_endpgm
649;
650; EG-LABEL: constant_zextload_i16_to_i32:
651; EG:       ; %bb.0:
652; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
653; EG-NEXT:    TEX 0 @6
654; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
655; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
656; EG-NEXT:    CF_END
657; EG-NEXT:    PAD
658; EG-NEXT:    Fetch clause starting at 6:
659; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
660; EG-NEXT:    ALU clause starting at 8:
661; EG-NEXT:     MOV * T0.X, KC0[2].Z,
662; EG-NEXT:    ALU clause starting at 9:
663; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
664; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
665  %a = load i16, i16 addrspace(4)* %in
666  %ext = zext i16 %a to i32
667  store i32 %ext, i32 addrspace(1)* %out
668  ret void
669}
670
671define amdgpu_kernel void @constant_sextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(4)* %in) #0 {
672; GCN-NOHSA-SI-LABEL: constant_sextload_i16_to_i32:
673; GCN-NOHSA-SI:       ; %bb.0:
674; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
675; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
676; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
677; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
678; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
679; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
680; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
681; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
682; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
683; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
684; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
685; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
686; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
687; GCN-NOHSA-SI-NEXT:    s_endpgm
688;
689; GCN-HSA-LABEL: constant_sextload_i16_to_i32:
690; GCN-HSA:       ; %bb.0:
691; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
692; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
693; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
694; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
695; GCN-HSA-NEXT:    flat_load_sshort v2, v[0:1]
696; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
697; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
698; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
699; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
700; GCN-HSA-NEXT:    s_endpgm
701;
702; GCN-NOHSA-VI-LABEL: constant_sextload_i16_to_i32:
703; GCN-NOHSA-VI:       ; %bb.0:
704; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
705; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
706; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
707; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
708; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
709; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
710; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
711; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
712; GCN-NOHSA-VI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
713; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
714; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
715; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
716; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
717; GCN-NOHSA-VI-NEXT:    s_endpgm
718;
719; EG-LABEL: constant_sextload_i16_to_i32:
720; EG:       ; %bb.0:
721; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
722; EG-NEXT:    TEX 0 @6
723; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
724; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
725; EG-NEXT:    CF_END
726; EG-NEXT:    PAD
727; EG-NEXT:    Fetch clause starting at 6:
728; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
729; EG-NEXT:    ALU clause starting at 8:
730; EG-NEXT:     MOV * T0.X, KC0[2].Z,
731; EG-NEXT:    ALU clause starting at 9:
732; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
733; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
734; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
735  %a = load i16, i16 addrspace(4)* %in
736  %ext = sext i16 %a to i32
737  store i32 %ext, i32 addrspace(1)* %out
738  ret void
739}
740
741define amdgpu_kernel void @constant_zextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(4)* %in) #0 {
742; GCN-NOHSA-SI-LABEL: constant_zextload_v1i16_to_v1i32:
743; GCN-NOHSA-SI:       ; %bb.0:
744; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
745; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
746; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
747; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
748; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
749; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
750; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
751; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
752; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
753; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
754; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
755; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
756; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
757; GCN-NOHSA-SI-NEXT:    s_endpgm
758;
759; GCN-HSA-LABEL: constant_zextload_v1i16_to_v1i32:
760; GCN-HSA:       ; %bb.0:
761; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
762; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
763; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
764; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
765; GCN-HSA-NEXT:    flat_load_ushort v2, v[0:1]
766; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
767; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
768; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
769; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
770; GCN-HSA-NEXT:    s_endpgm
771;
772; GCN-NOHSA-VI-LABEL: constant_zextload_v1i16_to_v1i32:
773; GCN-NOHSA-VI:       ; %bb.0:
774; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
775; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
776; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
777; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
778; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
779; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
780; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
781; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
782; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
783; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
784; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
785; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
786; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
787; GCN-NOHSA-VI-NEXT:    s_endpgm
788;
789; EG-LABEL: constant_zextload_v1i16_to_v1i32:
790; EG:       ; %bb.0:
791; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
792; EG-NEXT:    TEX 0 @6
793; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
794; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
795; EG-NEXT:    CF_END
796; EG-NEXT:    PAD
797; EG-NEXT:    Fetch clause starting at 6:
798; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
799; EG-NEXT:    ALU clause starting at 8:
800; EG-NEXT:     MOV * T0.X, KC0[2].Z,
801; EG-NEXT:    ALU clause starting at 9:
802; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
803; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
804  %load = load <1 x i16>, <1 x i16> addrspace(4)* %in
805  %ext = zext <1 x i16> %load to <1 x i32>
806  store <1 x i32> %ext, <1 x i32> addrspace(1)* %out
807  ret void
808}
809
810define amdgpu_kernel void @constant_sextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(4)* %in) #0 {
811; GCN-NOHSA-SI-LABEL: constant_sextload_v1i16_to_v1i32:
812; GCN-NOHSA-SI:       ; %bb.0:
813; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
814; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
815; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
816; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
817; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
818; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
819; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
820; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
821; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
822; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
823; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
824; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
825; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
826; GCN-NOHSA-SI-NEXT:    s_endpgm
827;
828; GCN-HSA-LABEL: constant_sextload_v1i16_to_v1i32:
829; GCN-HSA:       ; %bb.0:
830; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
831; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
832; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
833; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
834; GCN-HSA-NEXT:    flat_load_sshort v2, v[0:1]
835; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
836; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
837; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
838; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
839; GCN-HSA-NEXT:    s_endpgm
840;
841; GCN-NOHSA-VI-LABEL: constant_sextload_v1i16_to_v1i32:
842; GCN-NOHSA-VI:       ; %bb.0:
843; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
844; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
845; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
846; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
847; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
848; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
849; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
850; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
851; GCN-NOHSA-VI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
852; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
853; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
854; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
855; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
856; GCN-NOHSA-VI-NEXT:    s_endpgm
857;
858; EG-LABEL: constant_sextload_v1i16_to_v1i32:
859; EG:       ; %bb.0:
860; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
861; EG-NEXT:    TEX 0 @6
862; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
863; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
864; EG-NEXT:    CF_END
865; EG-NEXT:    PAD
866; EG-NEXT:    Fetch clause starting at 6:
867; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
868; EG-NEXT:    ALU clause starting at 8:
869; EG-NEXT:     MOV * T0.X, KC0[2].Z,
870; EG-NEXT:    ALU clause starting at 9:
871; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
872; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
873; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
874  %load = load <1 x i16>, <1 x i16> addrspace(4)* %in
875  %ext = sext <1 x i16> %load to <1 x i32>
876  store <1 x i32> %ext, <1 x i32> addrspace(1)* %out
877  ret void
878}
879
880define amdgpu_kernel void @constant_zextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(4)* %in) #0 {
881; GCN-NOHSA-SI-LABEL: constant_zextload_v2i16_to_v2i32:
882; GCN-NOHSA-SI:       ; %bb.0:
883; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
884; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
885; GCN-NOHSA-SI-NEXT:    s_load_dword s2, s[2:3], 0x0
886; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
887; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
888; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s4, s2, 16
889; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s2, 0xffff
890; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
891; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
892; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s4
893; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
894; GCN-NOHSA-SI-NEXT:    s_endpgm
895;
896; GCN-HSA-LABEL: constant_zextload_v2i16_to_v2i32:
897; GCN-HSA:       ; %bb.0:
898; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
899; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
900; GCN-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
901; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
902; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
903; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
904; GCN-HSA-NEXT:    s_lshr_b32 s0, s2, 16
905; GCN-HSA-NEXT:    s_and_b32 s1, s2, 0xffff
906; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
907; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
908; GCN-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
909; GCN-HSA-NEXT:    s_endpgm
910;
911; GCN-NOHSA-VI-LABEL: constant_zextload_v2i16_to_v2i32:
912; GCN-NOHSA-VI:       ; %bb.0:
913; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
914; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
915; GCN-NOHSA-VI-NEXT:    s_load_dword s4, s[2:3], 0x0
916; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
917; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
918; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
919; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s5, s4, 16
920; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
921; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
922; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s5
923; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
924; GCN-NOHSA-VI-NEXT:    s_endpgm
925;
926; EG-LABEL: constant_zextload_v2i16_to_v2i32:
927; EG:       ; %bb.0:
928; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
929; EG-NEXT:    TEX 0 @6
930; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
931; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XY, T5.X, 1
932; EG-NEXT:    CF_END
933; EG-NEXT:    PAD
934; EG-NEXT:    Fetch clause starting at 6:
935; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
936; EG-NEXT:    ALU clause starting at 8:
937; EG-NEXT:     MOV * T4.X, KC0[2].Z,
938; EG-NEXT:    ALU clause starting at 9:
939; EG-NEXT:     LSHR * T4.Y, T4.X, literal.x,
940; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
941; EG-NEXT:     AND_INT T4.X, T4.X, literal.x,
942; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
943; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
944  %load = load <2 x i16>, <2 x i16> addrspace(4)* %in
945  %ext = zext <2 x i16> %load to <2 x i32>
946  store <2 x i32> %ext, <2 x i32> addrspace(1)* %out
947  ret void
948}
949
950; TODO: We should use ASHR instead of LSHR + BFE
951define amdgpu_kernel void @constant_sextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(4)* %in) #0 {
952; GCN-NOHSA-SI-LABEL: constant_sextload_v2i16_to_v2i32:
953; GCN-NOHSA-SI:       ; %bb.0:
954; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
955; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
956; GCN-NOHSA-SI-NEXT:    s_load_dword s2, s[2:3], 0x0
957; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
958; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
959; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s4, s2, 16
960; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s2
961; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
962; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
963; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s4
964; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
965; GCN-NOHSA-SI-NEXT:    s_endpgm
966;
967; GCN-HSA-LABEL: constant_sextload_v2i16_to_v2i32:
968; GCN-HSA:       ; %bb.0:
969; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
970; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
971; GCN-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
972; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
973; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
974; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
975; GCN-HSA-NEXT:    s_ashr_i32 s0, s2, 16
976; GCN-HSA-NEXT:    s_sext_i32_i16 s1, s2
977; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
978; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
979; GCN-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
980; GCN-HSA-NEXT:    s_endpgm
981;
982; GCN-NOHSA-VI-LABEL: constant_sextload_v2i16_to_v2i32:
983; GCN-NOHSA-VI:       ; %bb.0:
984; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
985; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
986; GCN-NOHSA-VI-NEXT:    s_load_dword s4, s[2:3], 0x0
987; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
988; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
989; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
990; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s5, s4, 16
991; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
992; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
993; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s5
994; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
995; GCN-NOHSA-VI-NEXT:    s_endpgm
996;
997; EG-LABEL: constant_sextload_v2i16_to_v2i32:
998; EG:       ; %bb.0:
999; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1000; EG-NEXT:    TEX 0 @6
1001; EG-NEXT:    ALU 5, @9, KC0[CB0:0-32], KC1[]
1002; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XY, T4.X, 1
1003; EG-NEXT:    CF_END
1004; EG-NEXT:    PAD
1005; EG-NEXT:    Fetch clause starting at 6:
1006; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1007; EG-NEXT:    ALU clause starting at 8:
1008; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1009; EG-NEXT:    ALU clause starting at 9:
1010; EG-NEXT:     BFE_INT T5.X, T4.X, 0.0, literal.x,
1011; EG-NEXT:     LSHR T0.W, T4.X, literal.x,
1012; EG-NEXT:     LSHR * T4.X, KC0[2].Y, literal.y,
1013; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
1014; EG-NEXT:     BFE_INT * T5.Y, PV.W, 0.0, literal.x,
1015; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1016  %load = load <2 x i16>, <2 x i16> addrspace(4)* %in
1017  %ext = sext <2 x i16> %load to <2 x i32>
1018  store <2 x i32> %ext, <2 x i32> addrspace(1)* %out
1019  ret void
1020}
1021
1022define amdgpu_kernel void @constant_zextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(4)* %in) {
1023; GCN-NOHSA-SI-LABEL: constant_zextload_v3i16_to_v3i32:
1024; GCN-NOHSA-SI:       ; %bb.0: ; %entry
1025; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1026; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1027; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1028; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1029; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1030; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1031; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s6, s4, 16
1032; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
1033; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
1034; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
1035; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:8
1036; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1037; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1038; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s6
1039; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
1040; GCN-NOHSA-SI-NEXT:    s_endpgm
1041;
1042; GCN-HSA-LABEL: constant_zextload_v3i16_to_v3i32:
1043; GCN-HSA:       ; %bb.0: ; %entry
1044; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1045; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1046; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1047; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
1048; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s1
1049; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1050; GCN-HSA-NEXT:    s_lshr_b32 s0, s2, 16
1051; GCN-HSA-NEXT:    s_and_b32 s1, s3, 0xffff
1052; GCN-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
1053; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1054; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s0
1055; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
1056; GCN-HSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1057; GCN-HSA-NEXT:    s_endpgm
1058;
1059; GCN-NOHSA-VI-LABEL: constant_zextload_v3i16_to_v3i32:
1060; GCN-NOHSA-VI:       ; %bb.0: ; %entry
1061; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1062; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1063; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1064; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
1065; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
1066; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1067; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
1068; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s4, 16
1069; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
1070; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
1071; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s6
1072; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
1073; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx3 v[0:2], off, s[0:3], 0
1074; GCN-NOHSA-VI-NEXT:    s_endpgm
1075;
1076; EG-LABEL: constant_zextload_v3i16_to_v3i32:
1077; EG:       ; %bb.0: ; %entry
1078; EG-NEXT:    ALU 4, @12, KC0[CB0:0-32], KC1[]
1079; EG-NEXT:    TEX 2 @6
1080; EG-NEXT:    ALU 2, @17, KC0[], KC1[]
1081; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T2.X, T4.X, 0
1082; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T3.XY, T0.X, 1
1083; EG-NEXT:    CF_END
1084; EG-NEXT:    Fetch clause starting at 6:
1085; EG-NEXT:     VTX_READ_16 T2.X, T1.X, 4, #1
1086; EG-NEXT:     VTX_READ_16 T3.X, T1.X, 0, #1
1087; EG-NEXT:     VTX_READ_16 T1.X, T1.X, 2, #1
1088; EG-NEXT:    ALU clause starting at 12:
1089; EG-NEXT:     LSHR T0.X, KC0[2].Y, literal.x,
1090; EG-NEXT:     MOV * T1.X, KC0[2].Z,
1091; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1092; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
1093; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1094; EG-NEXT:    ALU clause starting at 17:
1095; EG-NEXT:     LSHR T4.X, T0.W, literal.x,
1096; EG-NEXT:     MOV * T3.Y, T1.X,
1097; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1098entry:
1099  %ld = load <3 x i16>, <3 x i16> addrspace(4)* %in
1100  %ext = zext <3 x i16> %ld to <3 x i32>
1101  store <3 x i32> %ext, <3 x i32> addrspace(1)* %out
1102  ret void
1103}
1104
1105define amdgpu_kernel void @constant_sextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(4)* %in) {
1106; GCN-NOHSA-SI-LABEL: constant_sextload_v3i16_to_v3i32:
1107; GCN-NOHSA-SI:       ; %bb.0: ; %entry
1108; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1109; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1110; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1111; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1112; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1113; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1114; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s6, s4, 16
1115; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
1116; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
1117; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
1118; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:8
1119; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1120; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1121; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s6
1122; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
1123; GCN-NOHSA-SI-NEXT:    s_endpgm
1124;
1125; GCN-HSA-LABEL: constant_sextload_v3i16_to_v3i32:
1126; GCN-HSA:       ; %bb.0: ; %entry
1127; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1128; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1129; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1130; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
1131; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s1
1132; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1133; GCN-HSA-NEXT:    s_ashr_i32 s0, s2, 16
1134; GCN-HSA-NEXT:    s_sext_i32_i16 s1, s3
1135; GCN-HSA-NEXT:    s_sext_i32_i16 s2, s2
1136; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1137; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s0
1138; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
1139; GCN-HSA-NEXT:    flat_store_dwordx3 v[3:4], v[0:2]
1140; GCN-HSA-NEXT:    s_endpgm
1141;
1142; GCN-NOHSA-VI-LABEL: constant_sextload_v3i16_to_v3i32:
1143; GCN-NOHSA-VI:       ; %bb.0: ; %entry
1144; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1145; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1146; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1147; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
1148; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
1149; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1150; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s6, s4, 16
1151; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s5, s5
1152; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
1153; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
1154; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s6
1155; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
1156; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx3 v[0:2], off, s[0:3], 0
1157; GCN-NOHSA-VI-NEXT:    s_endpgm
1158;
1159; EG-LABEL: constant_sextload_v3i16_to_v3i32:
1160; EG:       ; %bb.0: ; %entry
1161; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
1162; EG-NEXT:    TEX 2 @6
1163; EG-NEXT:    ALU 9, @13, KC0[CB0:0-32], KC1[]
1164; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T2.X, T3.X, 0
1165; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
1166; EG-NEXT:    CF_END
1167; EG-NEXT:    Fetch clause starting at 6:
1168; EG-NEXT:     VTX_READ_16 T1.X, T0.X, 2, #1
1169; EG-NEXT:     VTX_READ_16 T2.X, T0.X, 4, #1
1170; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
1171; EG-NEXT:    ALU clause starting at 12:
1172; EG-NEXT:     MOV * T0.X, KC0[2].Z,
1173; EG-NEXT:    ALU clause starting at 13:
1174; EG-NEXT:     BFE_INT * T0.Y, T1.X, 0.0, literal.x,
1175; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1176; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
1177; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
1178; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
1179; EG-NEXT:     BFE_INT T2.X, T2.X, 0.0, literal.x,
1180; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1181; EG-NEXT:    16(2.242078e-44), 8(1.121039e-44)
1182; EG-NEXT:     LSHR * T3.X, PV.W, literal.x,
1183; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1184entry:
1185  %ld = load <3 x i16>, <3 x i16> addrspace(4)* %in
1186  %ext = sext <3 x i16> %ld to <3 x i32>
1187  store <3 x i32> %ext, <3 x i32> addrspace(1)* %out
1188  ret void
1189}
1190
1191; v4i16 is naturally 8 byte aligned
1192; TODO: This should use LD, but for some there are redundant MOVs
1193define amdgpu_kernel void @constant_zextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(4)* %in) #0 {
1194; GCN-NOHSA-SI-LABEL: constant_zextload_v4i16_to_v4i32:
1195; GCN-NOHSA-SI:       ; %bb.0:
1196; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1197; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1198; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1199; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1200; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1201; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s6, s5, 16
1202; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s7, s4, 16
1203; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
1204; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
1205; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1206; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1207; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s7
1208; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1209; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s6
1210; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1211; GCN-NOHSA-SI-NEXT:    s_endpgm
1212;
1213; GCN-HSA-LABEL: constant_zextload_v4i16_to_v4i32:
1214; GCN-HSA:       ; %bb.0:
1215; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1216; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1217; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1218; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1219; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1220; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1221; GCN-HSA-NEXT:    s_lshr_b32 s0, s3, 16
1222; GCN-HSA-NEXT:    s_lshr_b32 s1, s2, 16
1223; GCN-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
1224; GCN-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
1225; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1226; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
1227; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s3
1228; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
1229; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1230; GCN-HSA-NEXT:    s_endpgm
1231;
1232; GCN-NOHSA-VI-LABEL: constant_zextload_v4i16_to_v4i32:
1233; GCN-NOHSA-VI:       ; %bb.0:
1234; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1235; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1236; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1237; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
1238; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
1239; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1240; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s5, 16
1241; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
1242; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s7, s4, 16
1243; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
1244; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
1245; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s7
1246; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
1247; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s6
1248; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1249; GCN-NOHSA-VI-NEXT:    s_endpgm
1250;
1251; EG-LABEL: constant_zextload_v4i16_to_v4i32:
1252; EG:       ; %bb.0:
1253; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1254; EG-NEXT:    TEX 0 @6
1255; EG-NEXT:    ALU 12, @9, KC0[CB0:0-32], KC1[]
1256; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1
1257; EG-NEXT:    CF_END
1258; EG-NEXT:    PAD
1259; EG-NEXT:    Fetch clause starting at 6:
1260; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1261; EG-NEXT:    ALU clause starting at 8:
1262; EG-NEXT:     MOV * T5.X, KC0[2].Z,
1263; EG-NEXT:    ALU clause starting at 9:
1264; EG-NEXT:     MOV T2.X, T5.X,
1265; EG-NEXT:     MOV * T3.X, T5.Y,
1266; EG-NEXT:     MOV T0.Y, PV.X,
1267; EG-NEXT:     MOV * T0.Z, PS,
1268; EG-NEXT:     LSHR * T5.W, PV.Z, literal.x,
1269; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1270; EG-NEXT:     AND_INT * T5.Z, T0.Z, literal.x,
1271; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1272; EG-NEXT:     LSHR * T5.Y, T0.Y, literal.x,
1273; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1274; EG-NEXT:     AND_INT T5.X, T0.Y, literal.x,
1275; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.y,
1276; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
1277  %load = load <4 x i16>, <4 x i16> addrspace(4)* %in
1278  %ext = zext <4 x i16> %load to <4 x i32>
1279  store <4 x i32> %ext, <4 x i32> addrspace(1)* %out
1280  ret void
1281}
1282
1283; v4i16 is naturally 8 byte aligned
1284; TODO: This should use LD, but for some there are redundant MOVs
1285; TODO: We should use ASHR instead of LSHR + BFE
1286define amdgpu_kernel void @constant_sextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(4)* %in) #0 {
1287; GCN-NOHSA-SI-LABEL: constant_sextload_v4i16_to_v4i32:
1288; GCN-NOHSA-SI:       ; %bb.0:
1289; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1290; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1291; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1292; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1293; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1294; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s8, s4, 16
1295; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[6:7], s[4:5], 48
1296; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
1297; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
1298; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1299; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1300; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s8
1301; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1302; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s6
1303; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1304; GCN-NOHSA-SI-NEXT:    s_endpgm
1305;
1306; GCN-HSA-LABEL: constant_sextload_v4i16_to_v4i32:
1307; GCN-HSA:       ; %bb.0:
1308; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1309; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1310; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
1311; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1312; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1313; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1314; GCN-HSA-NEXT:    s_ashr_i64 s[0:1], s[2:3], 48
1315; GCN-HSA-NEXT:    s_ashr_i32 s4, s2, 16
1316; GCN-HSA-NEXT:    s_sext_i32_i16 s1, s3
1317; GCN-HSA-NEXT:    s_sext_i32_i16 s2, s2
1318; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1319; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s4
1320; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
1321; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s0
1322; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1323; GCN-HSA-NEXT:    s_endpgm
1324;
1325; GCN-NOHSA-VI-LABEL: constant_sextload_v4i16_to_v4i32:
1326; GCN-NOHSA-VI:       ; %bb.0:
1327; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1328; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1329; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
1330; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
1331; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
1332; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1333; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s6, s5, 16
1334; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s7, s4, 16
1335; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s5, s5
1336; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
1337; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
1338; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s7
1339; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
1340; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s6
1341; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1342; GCN-NOHSA-VI-NEXT:    s_endpgm
1343;
1344; EG-LABEL: constant_sextload_v4i16_to_v4i32:
1345; EG:       ; %bb.0:
1346; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1347; EG-NEXT:    TEX 0 @6
1348; EG-NEXT:    ALU 14, @9, KC0[CB0:0-32], KC1[]
1349; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1
1350; EG-NEXT:    CF_END
1351; EG-NEXT:    PAD
1352; EG-NEXT:    Fetch clause starting at 6:
1353; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1354; EG-NEXT:    ALU clause starting at 8:
1355; EG-NEXT:     MOV * T5.X, KC0[2].Z,
1356; EG-NEXT:    ALU clause starting at 9:
1357; EG-NEXT:     MOV T2.X, T5.X,
1358; EG-NEXT:     MOV * T3.X, T5.Y,
1359; EG-NEXT:     MOV T0.Y, PV.X,
1360; EG-NEXT:     MOV * T0.Z, PS,
1361; EG-NEXT:     BFE_INT * T5.Z, PV.Z, 0.0, literal.x,
1362; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1363; EG-NEXT:     BFE_INT T5.X, T0.Y, 0.0, literal.x,
1364; EG-NEXT:     LSHR * T0.W, T0.Z, literal.x,
1365; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1366; EG-NEXT:     BFE_INT T5.W, PV.W, 0.0, literal.x,
1367; EG-NEXT:     LSHR * T0.W, T0.Y, literal.x,
1368; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1369; EG-NEXT:     LSHR T6.X, KC0[2].Y, literal.x,
1370; EG-NEXT:     BFE_INT * T5.Y, PS, 0.0, literal.y,
1371; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1372  %load = load <4 x i16>, <4 x i16> addrspace(4)* %in
1373  %ext = sext <4 x i16> %load to <4 x i32>
1374  store <4 x i32> %ext, <4 x i32> addrspace(1)* %out
1375  ret void
1376}
1377
1378; v8i16 is naturally 16 byte aligned
1379; TODO: These should use LSHR instead of BFE_UINT
1380; TODO: This should use DST, but for some there are redundant MOVs
1381define amdgpu_kernel void @constant_zextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(4)* %in) #0 {
1382; GCN-NOHSA-SI-LABEL: constant_zextload_v8i16_to_v8i32:
1383; GCN-NOHSA-SI:       ; %bb.0:
1384; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1385; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1386; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1387; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1388; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1389; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1390; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s8, s5, 16
1391; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s9, s4, 16
1392; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s10, s7, 16
1393; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s11, s6, 16
1394; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
1395; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
1396; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
1397; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
1398; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
1399; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s11
1400; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
1401; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s10
1402; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1403; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1404; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1405; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s9
1406; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1407; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s8
1408; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1409; GCN-NOHSA-SI-NEXT:    s_endpgm
1410;
1411; GCN-HSA-LABEL: constant_zextload_v8i16_to_v8i32:
1412; GCN-HSA:       ; %bb.0:
1413; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1414; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1415; GCN-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1416; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1417; GCN-HSA-NEXT:    s_lshr_b32 s8, s5, 16
1418; GCN-HSA-NEXT:    s_lshr_b32 s9, s4, 16
1419; GCN-HSA-NEXT:    s_lshr_b32 s2, s7, 16
1420; GCN-HSA-NEXT:    s_lshr_b32 s3, s6, 16
1421; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
1422; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
1423; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
1424; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
1425; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s2
1426; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
1427; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1428; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1429; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1430; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
1431; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
1432; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1433; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1434; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1435; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
1436; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
1437; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
1438; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s8
1439; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1440; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1441; GCN-HSA-NEXT:    s_endpgm
1442;
1443; GCN-NOHSA-VI-LABEL: constant_zextload_v8i16_to_v8i32:
1444; GCN-NOHSA-VI:       ; %bb.0:
1445; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1446; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1447; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1448; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
1449; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
1450; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1451; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s10, s7, 16
1452; GCN-NOHSA-VI-NEXT:    s_and_b32 s7, s7, 0xffff
1453; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s11, s6, 16
1454; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
1455; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s8, s5, 16
1456; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
1457; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s9, s4, 16
1458; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
1459; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
1460; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s11
1461; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
1462; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s10
1463; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1464; GCN-NOHSA-VI-NEXT:    s_nop 0
1465; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
1466; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s9
1467; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
1468; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s8
1469; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1470; GCN-NOHSA-VI-NEXT:    s_endpgm
1471;
1472; EG-LABEL: constant_zextload_v8i16_to_v8i32:
1473; EG:       ; %bb.0:
1474; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1475; EG-NEXT:    TEX 0 @6
1476; EG-NEXT:    ALU 17, @9, KC0[CB0:0-32], KC1[]
1477; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0
1478; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1
1479; EG-NEXT:    CF_END
1480; EG-NEXT:    Fetch clause starting at 6:
1481; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
1482; EG-NEXT:    ALU clause starting at 8:
1483; EG-NEXT:     MOV * T7.X, KC0[2].Z,
1484; EG-NEXT:    ALU clause starting at 9:
1485; EG-NEXT:     LSHR * T8.W, T7.Y, literal.x,
1486; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1487; EG-NEXT:     AND_INT * T8.Z, T7.Y, literal.x,
1488; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1489; EG-NEXT:     LSHR T8.Y, T7.X, literal.x,
1490; EG-NEXT:     LSHR * T9.W, T7.W, literal.x,
1491; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1492; EG-NEXT:     AND_INT T8.X, T7.X, literal.x,
1493; EG-NEXT:     AND_INT T9.Z, T7.W, literal.x,
1494; EG-NEXT:     LSHR * T7.X, KC0[2].Y, literal.y,
1495; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
1496; EG-NEXT:     LSHR * T9.Y, T7.Z, literal.x,
1497; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1498; EG-NEXT:     AND_INT T9.X, T7.Z, literal.x,
1499; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1500; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
1501; EG-NEXT:     LSHR * T10.X, PV.W, literal.x,
1502; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1503  %load = load <8 x i16>, <8 x i16> addrspace(4)* %in
1504  %ext = zext <8 x i16> %load to <8 x i32>
1505  store <8 x i32> %ext, <8 x i32> addrspace(1)* %out
1506  ret void
1507}
1508
1509; v8i16 is naturally 16 byte aligned
1510; TODO: 4 of these should use ASHR instead of LSHR + BFE_INT
1511; TODO: This should use DST, but for some there are redundant MOVs
1512define amdgpu_kernel void @constant_sextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(4)* %in) #0 {
1513; GCN-NOHSA-SI-LABEL: constant_sextload_v8i16_to_v8i32:
1514; GCN-NOHSA-SI:       ; %bb.0:
1515; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1516; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1517; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1518; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1519; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1520; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1521; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s8, s5, 16
1522; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s9, s4, 16
1523; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
1524; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s10, s7, 16
1525; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s11, s6, 16
1526; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s7, s7
1527; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s6, s6
1528; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
1529; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
1530; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s11
1531; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
1532; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s10
1533; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1534; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1535; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1536; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s9
1537; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1538; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s8
1539; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1540; GCN-NOHSA-SI-NEXT:    s_endpgm
1541;
1542; GCN-HSA-LABEL: constant_sextload_v8i16_to_v8i32:
1543; GCN-HSA:       ; %bb.0:
1544; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1545; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1546; GCN-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1547; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1548; GCN-HSA-NEXT:    s_ashr_i32 s8, s5, 16
1549; GCN-HSA-NEXT:    s_ashr_i32 s9, s4, 16
1550; GCN-HSA-NEXT:    s_ashr_i32 s2, s7, 16
1551; GCN-HSA-NEXT:    s_ashr_i32 s3, s6, 16
1552; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s2
1553; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
1554; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1555; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1556; GCN-HSA-NEXT:    s_sext_i32_i16 s7, s7
1557; GCN-HSA-NEXT:    s_sext_i32_i16 s6, s6
1558; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1559; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
1560; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
1561; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1562; GCN-HSA-NEXT:    s_sext_i32_i16 s5, s5
1563; GCN-HSA-NEXT:    s_sext_i32_i16 s4, s4
1564; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1565; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1566; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
1567; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
1568; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
1569; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s8
1570; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1571; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1572; GCN-HSA-NEXT:    s_endpgm
1573;
1574; GCN-NOHSA-VI-LABEL: constant_sextload_v8i16_to_v8i32:
1575; GCN-NOHSA-VI:       ; %bb.0:
1576; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1577; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1578; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
1579; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
1580; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
1581; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1582; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s10, s7, 16
1583; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s11, s6, 16
1584; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s7, s7
1585; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s6, s6
1586; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s8, s5, 16
1587; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s9, s4, 16
1588; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s5, s5
1589; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
1590; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
1591; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s11
1592; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
1593; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s10
1594; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1595; GCN-NOHSA-VI-NEXT:    s_nop 0
1596; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
1597; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s9
1598; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
1599; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s8
1600; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1601; GCN-NOHSA-VI-NEXT:    s_endpgm
1602;
1603; EG-LABEL: constant_sextload_v8i16_to_v8i32:
1604; EG:       ; %bb.0:
1605; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1606; EG-NEXT:    TEX 0 @6
1607; EG-NEXT:    ALU 19, @9, KC0[CB0:0-32], KC1[]
1608; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0
1609; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1
1610; EG-NEXT:    CF_END
1611; EG-NEXT:    Fetch clause starting at 6:
1612; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
1613; EG-NEXT:    ALU clause starting at 8:
1614; EG-NEXT:     MOV * T7.X, KC0[2].Z,
1615; EG-NEXT:    ALU clause starting at 9:
1616; EG-NEXT:     BFE_INT * T8.Z, T7.Y, 0.0, literal.x,
1617; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1618; EG-NEXT:     BFE_INT T8.X, T7.X, 0.0, literal.x,
1619; EG-NEXT:     BFE_INT T9.Z, T7.W, 0.0, literal.x,
1620; EG-NEXT:     LSHR * T0.W, T7.Y, literal.x,
1621; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1622; EG-NEXT:     BFE_INT T9.X, T7.Z, 0.0, literal.x,
1623; EG-NEXT:     LSHR T0.Z, T7.W, literal.x,
1624; EG-NEXT:     BFE_INT T8.W, PV.W, 0.0, literal.x,
1625; EG-NEXT:     LSHR * T0.W, T7.X, literal.x,
1626; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1627; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
1628; EG-NEXT:     BFE_INT T8.Y, PS, 0.0, literal.y,
1629; EG-NEXT:     LSHR T1.Z, T7.Z, literal.y,
1630; EG-NEXT:     BFE_INT T9.W, PV.Z, 0.0, literal.y,
1631; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1632; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1633; EG-NEXT:     LSHR T10.X, PS, literal.x,
1634; EG-NEXT:     BFE_INT * T9.Y, PV.Z, 0.0, literal.y,
1635; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1636  %load = load <8 x i16>, <8 x i16> addrspace(4)* %in
1637  %ext = sext <8 x i16> %load to <8 x i32>
1638  store <8 x i32> %ext, <8 x i32> addrspace(1)* %out
1639  ret void
1640}
1641
1642define amdgpu_kernel void @constant_zextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(4)* %in) #0 {
1643; GCN-NOHSA-SI-LABEL: constant_zextload_v16i16_to_v16i32:
1644; GCN-NOHSA-SI:       ; %bb.0:
1645; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1646; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1647; GCN-NOHSA-SI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1648; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1649; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1650; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1651; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s12, s5, 16
1652; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s13, s4, 16
1653; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s14, s7, 16
1654; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s15, s6, 16
1655; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s16, s9, 16
1656; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s17, s8, 16
1657; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s18, s11, 16
1658; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s19, s10, 16
1659; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
1660; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
1661; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
1662; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
1663; GCN-NOHSA-SI-NEXT:    s_and_b32 s9, s9, 0xffff
1664; GCN-NOHSA-SI-NEXT:    s_and_b32 s11, s11, 0xffff
1665; GCN-NOHSA-SI-NEXT:    s_and_b32 s10, s10, 0xffff
1666; GCN-NOHSA-SI-NEXT:    s_and_b32 s8, s8, 0xffff
1667; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
1668; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
1669; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
1670; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s18
1671; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
1672; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1673; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
1674; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s17
1675; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
1676; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s16
1677; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
1678; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1679; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
1680; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s15
1681; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
1682; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s14
1683; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1684; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1685; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1686; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s13
1687; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1688; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s12
1689; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1690; GCN-NOHSA-SI-NEXT:    s_endpgm
1691;
1692; GCN-HSA-LABEL: constant_zextload_v16i16_to_v16i32:
1693; GCN-HSA:       ; %bb.0:
1694; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1695; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1696; GCN-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1697; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1698; GCN-HSA-NEXT:    s_lshr_b32 s12, s5, 16
1699; GCN-HSA-NEXT:    s_lshr_b32 s13, s4, 16
1700; GCN-HSA-NEXT:    s_lshr_b32 s14, s7, 16
1701; GCN-HSA-NEXT:    s_lshr_b32 s15, s6, 16
1702; GCN-HSA-NEXT:    s_lshr_b32 s16, s9, 16
1703; GCN-HSA-NEXT:    s_lshr_b32 s17, s8, 16
1704; GCN-HSA-NEXT:    s_lshr_b32 s2, s11, 16
1705; GCN-HSA-NEXT:    s_lshr_b32 s3, s10, 16
1706; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
1707; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
1708; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
1709; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
1710; GCN-HSA-NEXT:    s_and_b32 s9, s9, 0xffff
1711; GCN-HSA-NEXT:    s_and_b32 s8, s8, 0xffff
1712; GCN-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
1713; GCN-HSA-NEXT:    s_and_b32 s10, s10, 0xffff
1714; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s2
1715; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
1716; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1717; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1718; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1719; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1720; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
1721; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
1722; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s11
1723; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1724; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1725; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1726; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1727; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
1728; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
1729; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s17
1730; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
1731; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s16
1732; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1733; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1734; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1735; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
1736; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s15
1737; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
1738; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s14
1739; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1740; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1741; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1742; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
1743; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s13
1744; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
1745; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s12
1746; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1747; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1748; GCN-HSA-NEXT:    s_endpgm
1749;
1750; GCN-NOHSA-VI-LABEL: constant_zextload_v16i16_to_v16i32:
1751; GCN-NOHSA-VI:       ; %bb.0:
1752; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1753; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1754; GCN-NOHSA-VI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1755; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
1756; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
1757; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1758; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s18, s11, 16
1759; GCN-NOHSA-VI-NEXT:    s_and_b32 s11, s11, 0xffff
1760; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s19, s10, 16
1761; GCN-NOHSA-VI-NEXT:    s_and_b32 s10, s10, 0xffff
1762; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s16, s9, 16
1763; GCN-NOHSA-VI-NEXT:    s_and_b32 s9, s9, 0xffff
1764; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s17, s8, 16
1765; GCN-NOHSA-VI-NEXT:    s_and_b32 s8, s8, 0xffff
1766; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
1767; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s19
1768; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
1769; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s18
1770; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s14, s7, 16
1771; GCN-NOHSA-VI-NEXT:    s_and_b32 s7, s7, 0xffff
1772; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s15, s6, 16
1773; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
1774; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
1775; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s12, s5, 16
1776; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
1777; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s17
1778; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
1779; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s16
1780; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
1781; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s13, s4, 16
1782; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
1783; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
1784; GCN-NOHSA-VI-NEXT:    s_nop 0
1785; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
1786; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s15
1787; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
1788; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s14
1789; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1790; GCN-NOHSA-VI-NEXT:    s_nop 0
1791; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
1792; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s13
1793; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
1794; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s12
1795; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1796; GCN-NOHSA-VI-NEXT:    s_endpgm
1797;
1798; EG-LABEL: constant_zextload_v16i16_to_v16i32:
1799; EG:       ; %bb.0:
1800; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
1801; EG-NEXT:    TEX 1 @8
1802; EG-NEXT:    ALU 35, @13, KC0[CB0:0-32], KC1[]
1803; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T18.X, 0
1804; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T11.X, 0
1805; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T16.X, 0
1806; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T12.X, 1
1807; EG-NEXT:    CF_END
1808; EG-NEXT:    Fetch clause starting at 8:
1809; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 0, #1
1810; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 16, #1
1811; EG-NEXT:    ALU clause starting at 12:
1812; EG-NEXT:     MOV * T11.X, KC0[2].Z,
1813; EG-NEXT:    ALU clause starting at 13:
1814; EG-NEXT:     LSHR * T13.W, T12.Y, literal.x,
1815; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1816; EG-NEXT:     AND_INT * T13.Z, T12.Y, literal.x,
1817; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1818; EG-NEXT:     LSHR T13.Y, T12.X, literal.x,
1819; EG-NEXT:     LSHR * T14.W, T12.W, literal.x,
1820; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1821; EG-NEXT:     AND_INT T13.X, T12.X, literal.x,
1822; EG-NEXT:     AND_INT T14.Z, T12.W, literal.x,
1823; EG-NEXT:     LSHR * T12.X, KC0[2].Y, literal.y,
1824; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
1825; EG-NEXT:     LSHR T14.Y, T12.Z, literal.x,
1826; EG-NEXT:     LSHR * T15.W, T11.Y, literal.x,
1827; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1828; EG-NEXT:     AND_INT T14.X, T12.Z, literal.x,
1829; EG-NEXT:     AND_INT T15.Z, T11.Y, literal.x,
1830; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1831; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
1832; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
1833; EG-NEXT:     LSHR T15.Y, T11.X, literal.y,
1834; EG-NEXT:     LSHR T17.W, T11.W, literal.y,
1835; EG-NEXT:     AND_INT * T15.X, T11.X, literal.z,
1836; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1837; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1838; EG-NEXT:     AND_INT T17.Z, T11.W, literal.x,
1839; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1840; EG-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
1841; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
1842; EG-NEXT:     LSHR T17.Y, T11.Z, literal.y,
1843; EG-NEXT:     AND_INT * T17.X, T11.Z, literal.z,
1844; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1845; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1846; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
1847; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
1848; EG-NEXT:     LSHR * T18.X, PV.W, literal.x,
1849; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1850  %load = load <16 x i16>, <16 x i16> addrspace(4)* %in
1851  %ext = zext <16 x i16> %load to <16 x i32>
1852  store <16 x i32> %ext, <16 x i32> addrspace(1)* %out
1853  ret void
1854}
1855
1856define amdgpu_kernel void @constant_sextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(4)* %in) #0 {
1857; GCN-NOHSA-SI-LABEL: constant_sextload_v16i16_to_v16i32:
1858; GCN-NOHSA-SI:       ; %bb.0:
1859; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1860; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1861; GCN-NOHSA-SI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1862; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
1863; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
1864; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1865; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s12, s5, 16
1866; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s13, s4, 16
1867; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
1868; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
1869; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s14, s7, 16
1870; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s15, s6, 16
1871; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s7, s7
1872; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s6, s6
1873; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s16, s9, 16
1874; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s17, s8, 16
1875; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s9, s9
1876; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s18, s11, 16
1877; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s19, s10, 16
1878; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s11, s11
1879; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s10, s10
1880; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s8, s8
1881; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
1882; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
1883; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
1884; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s18
1885; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
1886; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1887; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
1888; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s17
1889; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
1890; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s16
1891; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
1892; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1893; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
1894; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s15
1895; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
1896; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s14
1897; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
1898; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
1899; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
1900; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s13
1901; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
1902; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s12
1903; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
1904; GCN-NOHSA-SI-NEXT:    s_endpgm
1905;
1906; GCN-HSA-LABEL: constant_sextload_v16i16_to_v16i32:
1907; GCN-HSA:       ; %bb.0:
1908; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1909; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1910; GCN-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1911; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1912; GCN-HSA-NEXT:    s_ashr_i32 s12, s5, 16
1913; GCN-HSA-NEXT:    s_ashr_i32 s13, s4, 16
1914; GCN-HSA-NEXT:    s_ashr_i32 s14, s7, 16
1915; GCN-HSA-NEXT:    s_ashr_i32 s15, s6, 16
1916; GCN-HSA-NEXT:    s_ashr_i32 s16, s9, 16
1917; GCN-HSA-NEXT:    s_ashr_i32 s17, s8, 16
1918; GCN-HSA-NEXT:    s_ashr_i32 s2, s11, 16
1919; GCN-HSA-NEXT:    s_ashr_i32 s3, s10, 16
1920; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s2
1921; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
1922; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1923; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1924; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1925; GCN-HSA-NEXT:    s_sext_i32_i16 s11, s11
1926; GCN-HSA-NEXT:    s_sext_i32_i16 s10, s10
1927; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1928; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
1929; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
1930; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s11
1931; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1932; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1933; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1934; GCN-HSA-NEXT:    s_sext_i32_i16 s9, s9
1935; GCN-HSA-NEXT:    s_sext_i32_i16 s8, s8
1936; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1937; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
1938; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
1939; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s17
1940; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
1941; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s16
1942; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1943; GCN-HSA-NEXT:    s_sext_i32_i16 s7, s7
1944; GCN-HSA-NEXT:    s_sext_i32_i16 s6, s6
1945; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1946; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
1947; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
1948; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s15
1949; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
1950; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s14
1951; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
1952; GCN-HSA-NEXT:    s_sext_i32_i16 s5, s5
1953; GCN-HSA-NEXT:    s_sext_i32_i16 s4, s4
1954; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1955; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
1956; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
1957; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s13
1958; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
1959; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s12
1960; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
1961; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
1962; GCN-HSA-NEXT:    s_endpgm
1963;
1964; GCN-NOHSA-VI-LABEL: constant_sextload_v16i16_to_v16i32:
1965; GCN-NOHSA-VI:       ; %bb.0:
1966; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1967; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1968; GCN-NOHSA-VI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
1969; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
1970; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
1971; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1972; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s18, s11, 16
1973; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s19, s10, 16
1974; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s11, s11
1975; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s10, s10
1976; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s16, s9, 16
1977; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s17, s8, 16
1978; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s9, s9
1979; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s8, s8
1980; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
1981; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s19
1982; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
1983; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s18
1984; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s14, s7, 16
1985; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s15, s6, 16
1986; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s7, s7
1987; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s6, s6
1988; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
1989; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s12, s5, 16
1990; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
1991; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s17
1992; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
1993; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s16
1994; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s13, s4, 16
1995; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s5, s5
1996; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
1997; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
1998; GCN-NOHSA-VI-NEXT:    s_nop 0
1999; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
2000; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s15
2001; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
2002; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s14
2003; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
2004; GCN-NOHSA-VI-NEXT:    s_nop 0
2005; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
2006; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s13
2007; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
2008; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s12
2009; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
2010; GCN-NOHSA-VI-NEXT:    s_endpgm
2011;
2012; EG-LABEL: constant_sextload_v16i16_to_v16i32:
2013; EG:       ; %bb.0:
2014; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
2015; EG-NEXT:    TEX 1 @8
2016; EG-NEXT:    ALU 39, @13, KC0[CB0:0-32], KC1[]
2017; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T12.X, 0
2018; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T11.X, 0
2019; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T14.X, 0
2020; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T13.X, 1
2021; EG-NEXT:    CF_END
2022; EG-NEXT:    Fetch clause starting at 8:
2023; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
2024; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
2025; EG-NEXT:    ALU clause starting at 12:
2026; EG-NEXT:     MOV * T11.X, KC0[2].Z,
2027; EG-NEXT:    ALU clause starting at 13:
2028; EG-NEXT:     LSHR T13.X, KC0[2].Y, literal.x,
2029; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2030; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2031; EG-NEXT:     LSHR T14.X, PV.W, literal.x,
2032; EG-NEXT:     BFE_INT * T15.Z, T11.Y, 0.0, literal.y,
2033; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2034; EG-NEXT:     BFE_INT T15.X, T11.X, 0.0, literal.x,
2035; EG-NEXT:     LSHR T0.Y, T12.W, literal.x,
2036; EG-NEXT:     BFE_INT T16.Z, T11.W, 0.0, literal.x, BS:VEC_120/SCL_212
2037; EG-NEXT:     LSHR T0.W, T12.Y, literal.x,
2038; EG-NEXT:     LSHR * T1.W, T11.Y, literal.x,
2039; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2040; EG-NEXT:     BFE_INT T16.X, T11.Z, 0.0, literal.x,
2041; EG-NEXT:     LSHR T1.Y, T11.W, literal.x,
2042; EG-NEXT:     BFE_INT T17.Z, T12.Y, 0.0, literal.x,
2043; EG-NEXT:     BFE_INT T15.W, PS, 0.0, literal.x,
2044; EG-NEXT:     LSHR * T1.W, T11.X, literal.x,
2045; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2046; EG-NEXT:     BFE_INT T17.X, T12.X, 0.0, literal.x,
2047; EG-NEXT:     BFE_INT T15.Y, PS, 0.0, literal.x,
2048; EG-NEXT:     BFE_INT T18.Z, T12.W, 0.0, literal.x,
2049; EG-NEXT:     BFE_INT T16.W, PV.Y, 0.0, literal.x,
2050; EG-NEXT:     LSHR * T1.W, T11.Z, literal.x,
2051; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2052; EG-NEXT:     BFE_INT T18.X, T12.Z, 0.0, literal.x,
2053; EG-NEXT:     BFE_INT T16.Y, PS, 0.0, literal.x,
2054; EG-NEXT:     LSHR T0.Z, T12.X, literal.x,
2055; EG-NEXT:     BFE_INT T17.W, T0.W, 0.0, literal.x,
2056; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2057; EG-NEXT:    16(2.242078e-44), 32(4.484155e-44)
2058; EG-NEXT:     LSHR T11.X, PS, literal.x,
2059; EG-NEXT:     BFE_INT T17.Y, PV.Z, 0.0, literal.y,
2060; EG-NEXT:     LSHR T0.Z, T12.Z, literal.y,
2061; EG-NEXT:     BFE_INT T18.W, T0.Y, 0.0, literal.y,
2062; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
2063; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2064; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
2065; EG-NEXT:     LSHR T12.X, PS, literal.x,
2066; EG-NEXT:     BFE_INT * T18.Y, PV.Z, 0.0, literal.y,
2067; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2068  %load = load <16 x i16>, <16 x i16> addrspace(4)* %in
2069  %ext = sext <16 x i16> %load to <16 x i32>
2070  store <16 x i32> %ext, <16 x i32> addrspace(1)* %out
2071  ret void
2072}
2073
2074define amdgpu_kernel void @constant_zextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(4)* %in) #0 {
2075; GCN-NOHSA-SI-LABEL: constant_zextload_v32i16_to_v32i32:
2076; GCN-NOHSA-SI:       ; %bb.0:
2077; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
2078; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2079; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2080; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2081; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s18, s1, 16
2082; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s19, s0, 16
2083; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s20, s3, 16
2084; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s21, s2, 16
2085; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s22, s5, 16
2086; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s23, s4, 16
2087; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s24, s7, 16
2088; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s25, s6, 16
2089; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s26, s9, 16
2090; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s27, s8, 16
2091; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s28, s11, 16
2092; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s29, s10, 16
2093; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s30, s13, 16
2094; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s31, s12, 16
2095; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s33, s15, 16
2096; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s34, s14, 16
2097; GCN-NOHSA-SI-NEXT:    s_and_b32 s35, s1, 0xffff
2098; GCN-NOHSA-SI-NEXT:    s_and_b32 s36, s0, 0xffff
2099; GCN-NOHSA-SI-NEXT:    s_and_b32 s37, s3, 0xffff
2100; GCN-NOHSA-SI-NEXT:    s_and_b32 s38, s2, 0xffff
2101; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
2102; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
2103; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
2104; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
2105; GCN-NOHSA-SI-NEXT:    s_and_b32 s9, s9, 0xffff
2106; GCN-NOHSA-SI-NEXT:    s_and_b32 s8, s8, 0xffff
2107; GCN-NOHSA-SI-NEXT:    s_and_b32 s11, s11, 0xffff
2108; GCN-NOHSA-SI-NEXT:    s_and_b32 s10, s10, 0xffff
2109; GCN-NOHSA-SI-NEXT:    s_and_b32 s13, s13, 0xffff
2110; GCN-NOHSA-SI-NEXT:    s_and_b32 s12, s12, 0xffff
2111; GCN-NOHSA-SI-NEXT:    s_and_b32 s15, s15, 0xffff
2112; GCN-NOHSA-SI-NEXT:    s_and_b32 s14, s14, 0xffff
2113; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
2114; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
2115; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s16
2116; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s17
2117; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
2118; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s34
2119; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s15
2120; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s33
2121; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
2122; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2123; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
2124; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s31
2125; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s13
2126; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s30
2127; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
2128; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2129; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
2130; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s29
2131; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
2132; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s28
2133; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
2134; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2135; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
2136; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s27
2137; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
2138; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s26
2139; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
2140; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2141; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
2142; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s25
2143; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
2144; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s24
2145; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
2146; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2147; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
2148; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s23
2149; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
2150; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s22
2151; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2152; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2153; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s38
2154; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s21
2155; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s37
2156; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s20
2157; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
2158; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2159; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s36
2160; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
2161; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s35
2162; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s18
2163; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
2164; GCN-NOHSA-SI-NEXT:    s_endpgm
2165;
2166; GCN-HSA-LABEL: constant_zextload_v32i16_to_v32i32:
2167; GCN-HSA:       ; %bb.0:
2168; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
2169; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2170; GCN-HSA-NEXT:    s_load_dwordx16 s[4:19], s[2:3], 0x0
2171; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2172; GCN-HSA-NEXT:    s_lshr_b32 s20, s5, 16
2173; GCN-HSA-NEXT:    s_lshr_b32 s21, s4, 16
2174; GCN-HSA-NEXT:    s_lshr_b32 s22, s7, 16
2175; GCN-HSA-NEXT:    s_lshr_b32 s23, s6, 16
2176; GCN-HSA-NEXT:    s_lshr_b32 s24, s9, 16
2177; GCN-HSA-NEXT:    s_lshr_b32 s25, s8, 16
2178; GCN-HSA-NEXT:    s_lshr_b32 s26, s11, 16
2179; GCN-HSA-NEXT:    s_lshr_b32 s27, s10, 16
2180; GCN-HSA-NEXT:    s_lshr_b32 s28, s13, 16
2181; GCN-HSA-NEXT:    s_lshr_b32 s29, s12, 16
2182; GCN-HSA-NEXT:    s_lshr_b32 s30, s15, 16
2183; GCN-HSA-NEXT:    s_lshr_b32 s31, s14, 16
2184; GCN-HSA-NEXT:    s_lshr_b32 s33, s17, 16
2185; GCN-HSA-NEXT:    s_lshr_b32 s34, s16, 16
2186; GCN-HSA-NEXT:    s_lshr_b32 s35, s19, 16
2187; GCN-HSA-NEXT:    s_lshr_b32 s36, s18, 16
2188; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
2189; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
2190; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
2191; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
2192; GCN-HSA-NEXT:    s_and_b32 s9, s9, 0xffff
2193; GCN-HSA-NEXT:    s_and_b32 s8, s8, 0xffff
2194; GCN-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
2195; GCN-HSA-NEXT:    s_and_b32 s10, s10, 0xffff
2196; GCN-HSA-NEXT:    s_and_b32 s13, s13, 0xffff
2197; GCN-HSA-NEXT:    s_and_b32 s12, s12, 0xffff
2198; GCN-HSA-NEXT:    s_and_b32 s15, s15, 0xffff
2199; GCN-HSA-NEXT:    s_and_b32 s14, s14, 0xffff
2200; GCN-HSA-NEXT:    s_and_b32 s17, s17, 0xffff
2201; GCN-HSA-NEXT:    s_and_b32 s16, s16, 0xffff
2202; GCN-HSA-NEXT:    s_and_b32 s19, s19, 0xffff
2203; GCN-HSA-NEXT:    s_and_b32 s18, s18, 0xffff
2204; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x70
2205; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2206; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
2207; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
2208; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x60
2209; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2210; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s3
2211; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s2
2212; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x50
2213; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s18
2214; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s36
2215; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s19
2216; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s35
2217; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
2218; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s34
2219; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2220; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s17
2221; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s33
2222; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]
2223; GCN-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]
2224; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s14
2225; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2226; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2227; GCN-HSA-NEXT:    s_add_u32 s2, s0, 64
2228; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s31
2229; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s15
2230; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s30
2231; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2232; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2233; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2234; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2235; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
2236; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s12
2237; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s29
2238; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s13
2239; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s28
2240; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2241; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2242; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2243; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2244; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
2245; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
2246; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s27
2247; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s11
2248; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s26
2249; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2250; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2251; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2252; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2253; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
2254; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
2255; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s25
2256; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
2257; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s24
2258; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2259; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2260; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2261; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
2262; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s23
2263; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
2264; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s22
2265; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2266; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2267; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2268; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
2269; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
2270; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
2271; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s20
2272; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2273; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2274; GCN-HSA-NEXT:    s_endpgm
2275;
2276; GCN-NOHSA-VI-LABEL: constant_zextload_v32i16_to_v32i32:
2277; GCN-NOHSA-VI:       ; %bb.0:
2278; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
2279; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2280; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2281; GCN-NOHSA-VI-NEXT:    s_mov_b32 s19, 0xf000
2282; GCN-NOHSA-VI-NEXT:    s_mov_b32 s18, -1
2283; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2284; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s35, s15, 16
2285; GCN-NOHSA-VI-NEXT:    s_and_b32 s15, s15, 0xffff
2286; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s36, s14, 16
2287; GCN-NOHSA-VI-NEXT:    s_and_b32 s14, s14, 0xffff
2288; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s33, s13, 16
2289; GCN-NOHSA-VI-NEXT:    s_and_b32 s13, s13, 0xffff
2290; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s34, s12, 16
2291; GCN-NOHSA-VI-NEXT:    s_and_b32 s12, s12, 0xffff
2292; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
2293; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s36
2294; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s15
2295; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s35
2296; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s30, s11, 16
2297; GCN-NOHSA-VI-NEXT:    s_and_b32 s11, s11, 0xffff
2298; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s31, s10, 16
2299; GCN-NOHSA-VI-NEXT:    s_and_b32 s10, s10, 0xffff
2300; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:112
2301; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s28, s9, 16
2302; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
2303; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s34
2304; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s13
2305; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s33
2306; GCN-NOHSA-VI-NEXT:    s_and_b32 s9, s9, 0xffff
2307; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s29, s8, 16
2308; GCN-NOHSA-VI-NEXT:    s_and_b32 s8, s8, 0xffff
2309; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:96
2310; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s26, s7, 16
2311; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
2312; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s31
2313; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
2314; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s30
2315; GCN-NOHSA-VI-NEXT:    s_and_b32 s7, s7, 0xffff
2316; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s27, s6, 16
2317; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
2318; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:80
2319; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s24, s5, 16
2320; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
2321; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s29
2322; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
2323; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s28
2324; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
2325; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s25, s4, 16
2326; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
2327; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:64
2328; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s22, s3, 16
2329; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
2330; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s27
2331; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
2332; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s26
2333; GCN-NOHSA-VI-NEXT:    s_and_b32 s3, s3, 0xffff
2334; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s23, s2, 16
2335; GCN-NOHSA-VI-NEXT:    s_and_b32 s2, s2, 0xffff
2336; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:48
2337; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s20, s1, 16
2338; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
2339; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s25
2340; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
2341; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s24
2342; GCN-NOHSA-VI-NEXT:    s_and_b32 s1, s1, 0xffff
2343; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s21, s0, 16
2344; GCN-NOHSA-VI-NEXT:    s_and_b32 s0, s0, 0xffff
2345; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:32
2346; GCN-NOHSA-VI-NEXT:    s_nop 0
2347; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
2348; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s23
2349; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
2350; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s22
2351; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:16
2352; GCN-NOHSA-VI-NEXT:    s_nop 0
2353; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
2354; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s21
2355; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s1
2356; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s20
2357; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0
2358; GCN-NOHSA-VI-NEXT:    s_endpgm
2359;
2360; EG-LABEL: constant_zextload_v32i16_to_v32i32:
2361; EG:       ; %bb.0:
2362; EG-NEXT:    ALU 0, @20, KC0[CB0:0-32], KC1[]
2363; EG-NEXT:    TEX 3 @12
2364; EG-NEXT:    ALU 71, @21, KC0[CB0:0-32], KC1[]
2365; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T34.X, 0
2366; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T21.X, 0
2367; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T32.X, 0
2368; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T22.X, 0
2369; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T29.X, 0
2370; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T19.X, 0
2371; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T26.X, 0
2372; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T20.X, 1
2373; EG-NEXT:    CF_END
2374; EG-NEXT:    Fetch clause starting at 12:
2375; EG-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 0, #1
2376; EG-NEXT:     VTX_READ_128 T21.XYZW, T19.X, 48, #1
2377; EG-NEXT:     VTX_READ_128 T22.XYZW, T19.X, 32, #1
2378; EG-NEXT:     VTX_READ_128 T19.XYZW, T19.X, 16, #1
2379; EG-NEXT:    ALU clause starting at 20:
2380; EG-NEXT:     MOV * T19.X, KC0[2].Z,
2381; EG-NEXT:    ALU clause starting at 21:
2382; EG-NEXT:     LSHR * T23.W, T20.Y, literal.x,
2383; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2384; EG-NEXT:     AND_INT * T23.Z, T20.Y, literal.x,
2385; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2386; EG-NEXT:     LSHR T23.Y, T20.X, literal.x,
2387; EG-NEXT:     LSHR * T24.W, T20.W, literal.x,
2388; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2389; EG-NEXT:     AND_INT T23.X, T20.X, literal.x,
2390; EG-NEXT:     AND_INT T24.Z, T20.W, literal.x,
2391; EG-NEXT:     LSHR * T20.X, KC0[2].Y, literal.y,
2392; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
2393; EG-NEXT:     LSHR T24.Y, T20.Z, literal.x,
2394; EG-NEXT:     LSHR * T25.W, T19.Y, literal.x,
2395; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2396; EG-NEXT:     AND_INT T24.X, T20.Z, literal.x,
2397; EG-NEXT:     AND_INT T25.Z, T19.Y, literal.x,
2398; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2399; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
2400; EG-NEXT:     LSHR T26.X, PV.W, literal.x,
2401; EG-NEXT:     LSHR T25.Y, T19.X, literal.y,
2402; EG-NEXT:     LSHR T27.W, T19.W, literal.y,
2403; EG-NEXT:     AND_INT * T25.X, T19.X, literal.z,
2404; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2405; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2406; EG-NEXT:     AND_INT T27.Z, T19.W, literal.x,
2407; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2408; EG-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
2409; EG-NEXT:     LSHR T19.X, PV.W, literal.x,
2410; EG-NEXT:     LSHR T27.Y, T19.Z, literal.y,
2411; EG-NEXT:     LSHR T28.W, T22.Y, literal.y,
2412; EG-NEXT:     AND_INT * T27.X, T19.Z, literal.z,
2413; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2414; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2415; EG-NEXT:     AND_INT T28.Z, T22.Y, literal.x,
2416; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2417; EG-NEXT:    65535(9.183409e-41), 48(6.726233e-44)
2418; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
2419; EG-NEXT:     LSHR T28.Y, T22.X, literal.y,
2420; EG-NEXT:     LSHR T30.W, T22.W, literal.y,
2421; EG-NEXT:     AND_INT * T28.X, T22.X, literal.z,
2422; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2423; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2424; EG-NEXT:     AND_INT T30.Z, T22.W, literal.x,
2425; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2426; EG-NEXT:    65535(9.183409e-41), 64(8.968310e-44)
2427; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
2428; EG-NEXT:     LSHR T30.Y, T22.Z, literal.y,
2429; EG-NEXT:     LSHR T31.W, T21.Y, literal.y,
2430; EG-NEXT:     AND_INT * T30.X, T22.Z, literal.z,
2431; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2432; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2433; EG-NEXT:     AND_INT T31.Z, T21.Y, literal.x,
2434; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2435; EG-NEXT:    65535(9.183409e-41), 80(1.121039e-43)
2436; EG-NEXT:     LSHR T32.X, PV.W, literal.x,
2437; EG-NEXT:     LSHR T31.Y, T21.X, literal.y,
2438; EG-NEXT:     LSHR T33.W, T21.W, literal.y,
2439; EG-NEXT:     AND_INT * T31.X, T21.X, literal.z,
2440; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2441; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2442; EG-NEXT:     AND_INT T33.Z, T21.W, literal.x,
2443; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2444; EG-NEXT:    65535(9.183409e-41), 96(1.345247e-43)
2445; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
2446; EG-NEXT:     LSHR T33.Y, T21.Z, literal.y,
2447; EG-NEXT:     AND_INT * T33.X, T21.Z, literal.z,
2448; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2449; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2450; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
2451; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
2452; EG-NEXT:     LSHR * T34.X, PV.W, literal.x,
2453; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2454  %load = load <32 x i16>, <32 x i16> addrspace(4)* %in
2455  %ext = zext <32 x i16> %load to <32 x i32>
2456  store <32 x i32> %ext, <32 x i32> addrspace(1)* %out
2457  ret void
2458}
2459
2460define amdgpu_kernel void @constant_sextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(4)* %in) #0 {
2461; GCN-NOHSA-SI-LABEL: constant_sextload_v32i16_to_v32i32:
2462; GCN-NOHSA-SI:       ; %bb.0:
2463; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
2464; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2465; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2466; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2467; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s18, s1, 16
2468; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s19, s0, 16
2469; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s20, s1
2470; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s21, s0
2471; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s22, s3, 16
2472; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s23, s2, 16
2473; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s24, s3
2474; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s25, s2
2475; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s26, s5, 16
2476; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s27, s4, 16
2477; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
2478; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
2479; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s28, s7, 16
2480; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s29, s6, 16
2481; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s7, s7
2482; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s6, s6
2483; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s30, s9, 16
2484; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s31, s8, 16
2485; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s9, s9
2486; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s8, s8
2487; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s33, s11, 16
2488; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s34, s10, 16
2489; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s11, s11
2490; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s10, s10
2491; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s35, s13, 16
2492; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s36, s12, 16
2493; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s13, s13
2494; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s12, s12
2495; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s37, s15, 16
2496; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s38, s14, 16
2497; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s15, s15
2498; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s14, s14
2499; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
2500; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
2501; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s16
2502; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s17
2503; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
2504; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s38
2505; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s15
2506; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s37
2507; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
2508; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2509; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
2510; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s36
2511; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s13
2512; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s35
2513; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
2514; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2515; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
2516; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s34
2517; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
2518; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s33
2519; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
2520; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2521; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
2522; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s31
2523; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
2524; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s30
2525; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
2526; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2527; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
2528; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s29
2529; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
2530; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s28
2531; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
2532; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2533; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
2534; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s27
2535; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
2536; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s26
2537; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2538; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2539; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s25
2540; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s23
2541; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s24
2542; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s22
2543; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
2544; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2545; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s21
2546; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
2547; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s20
2548; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s18
2549; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
2550; GCN-NOHSA-SI-NEXT:    s_endpgm
2551;
2552; GCN-HSA-LABEL: constant_sextload_v32i16_to_v32i32:
2553; GCN-HSA:       ; %bb.0:
2554; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
2555; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2556; GCN-HSA-NEXT:    s_load_dwordx16 s[4:19], s[2:3], 0x0
2557; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2558; GCN-HSA-NEXT:    s_ashr_i32 s20, s5, 16
2559; GCN-HSA-NEXT:    s_ashr_i32 s21, s4, 16
2560; GCN-HSA-NEXT:    s_ashr_i32 s22, s7, 16
2561; GCN-HSA-NEXT:    s_ashr_i32 s23, s6, 16
2562; GCN-HSA-NEXT:    s_ashr_i32 s24, s9, 16
2563; GCN-HSA-NEXT:    s_ashr_i32 s25, s8, 16
2564; GCN-HSA-NEXT:    s_ashr_i32 s26, s11, 16
2565; GCN-HSA-NEXT:    s_ashr_i32 s27, s10, 16
2566; GCN-HSA-NEXT:    s_ashr_i32 s28, s13, 16
2567; GCN-HSA-NEXT:    s_ashr_i32 s29, s12, 16
2568; GCN-HSA-NEXT:    s_ashr_i32 s30, s15, 16
2569; GCN-HSA-NEXT:    s_ashr_i32 s31, s14, 16
2570; GCN-HSA-NEXT:    s_ashr_i32 s33, s17, 16
2571; GCN-HSA-NEXT:    s_ashr_i32 s34, s16, 16
2572; GCN-HSA-NEXT:    s_ashr_i32 s35, s19, 16
2573; GCN-HSA-NEXT:    s_ashr_i32 s36, s18, 16
2574; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x70
2575; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2576; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
2577; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
2578; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x60
2579; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2580; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s3
2581; GCN-HSA-NEXT:    s_sext_i32_i16 s16, s16
2582; GCN-HSA-NEXT:    s_sext_i32_i16 s19, s19
2583; GCN-HSA-NEXT:    s_sext_i32_i16 s18, s18
2584; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s2
2585; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x50
2586; GCN-HSA-NEXT:    s_sext_i32_i16 s17, s17
2587; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s18
2588; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s36
2589; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s19
2590; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s35
2591; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
2592; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s34
2593; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2594; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s17
2595; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s33
2596; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]
2597; GCN-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]
2598; GCN-HSA-NEXT:    s_sext_i32_i16 s15, s15
2599; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2600; GCN-HSA-NEXT:    s_sext_i32_i16 s14, s14
2601; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2602; GCN-HSA-NEXT:    s_add_u32 s2, s0, 64
2603; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s14
2604; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s31
2605; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s15
2606; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s30
2607; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2608; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2609; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2610; GCN-HSA-NEXT:    s_sext_i32_i16 s13, s13
2611; GCN-HSA-NEXT:    s_sext_i32_i16 s12, s12
2612; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2613; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
2614; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s12
2615; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s29
2616; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s13
2617; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s28
2618; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2619; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2620; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2621; GCN-HSA-NEXT:    s_sext_i32_i16 s11, s11
2622; GCN-HSA-NEXT:    s_sext_i32_i16 s10, s10
2623; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2624; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
2625; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
2626; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s27
2627; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s11
2628; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s26
2629; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2630; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2631; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2632; GCN-HSA-NEXT:    s_sext_i32_i16 s9, s9
2633; GCN-HSA-NEXT:    s_sext_i32_i16 s8, s8
2634; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2635; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
2636; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
2637; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s25
2638; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
2639; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s24
2640; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2641; GCN-HSA-NEXT:    s_sext_i32_i16 s7, s7
2642; GCN-HSA-NEXT:    s_sext_i32_i16 s6, s6
2643; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2644; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2645; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
2646; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s23
2647; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s7
2648; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s22
2649; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2650; GCN-HSA-NEXT:    s_sext_i32_i16 s5, s5
2651; GCN-HSA-NEXT:    s_sext_i32_i16 s4, s4
2652; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2653; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
2654; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
2655; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
2656; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
2657; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s20
2658; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
2659; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
2660; GCN-HSA-NEXT:    s_endpgm
2661;
2662; GCN-NOHSA-VI-LABEL: constant_sextload_v32i16_to_v32i32:
2663; GCN-NOHSA-VI:       ; %bb.0:
2664; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
2665; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2666; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2667; GCN-NOHSA-VI-NEXT:    s_mov_b32 s19, 0xf000
2668; GCN-NOHSA-VI-NEXT:    s_mov_b32 s18, -1
2669; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2670; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s35, s15, 16
2671; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s36, s14, 16
2672; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s15, s15
2673; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s14, s14
2674; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s33, s13, 16
2675; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s34, s12, 16
2676; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s13, s13
2677; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s12, s12
2678; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
2679; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s36
2680; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s15
2681; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s35
2682; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s30, s11, 16
2683; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s31, s10, 16
2684; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s11, s11
2685; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s10, s10
2686; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:112
2687; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s28, s9, 16
2688; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
2689; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s34
2690; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s13
2691; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s33
2692; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s29, s8, 16
2693; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s9, s9
2694; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s8, s8
2695; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:96
2696; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s26, s7, 16
2697; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
2698; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s31
2699; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
2700; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s30
2701; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s27, s6, 16
2702; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s7, s7
2703; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s6, s6
2704; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:80
2705; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s24, s5, 16
2706; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
2707; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s29
2708; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
2709; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s28
2710; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s25, s4, 16
2711; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s5, s5
2712; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
2713; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:64
2714; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s22, s3, 16
2715; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
2716; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s27
2717; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
2718; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s26
2719; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s23, s2, 16
2720; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s3, s3
2721; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s2, s2
2722; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:48
2723; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s20, s1, 16
2724; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
2725; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s25
2726; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
2727; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s24
2728; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s21, s0, 16
2729; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s1, s1
2730; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s0, s0
2731; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:32
2732; GCN-NOHSA-VI-NEXT:    s_nop 0
2733; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
2734; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s23
2735; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
2736; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s22
2737; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:16
2738; GCN-NOHSA-VI-NEXT:    s_nop 0
2739; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
2740; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s21
2741; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s1
2742; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s20
2743; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0
2744; GCN-NOHSA-VI-NEXT:    s_endpgm
2745;
2746; EG-LABEL: constant_sextload_v32i16_to_v32i32:
2747; EG:       ; %bb.0:
2748; EG-NEXT:    ALU 8, @20, KC0[CB0:0-32], KC1[]
2749; EG-NEXT:    TEX 3 @12
2750; EG-NEXT:    ALU 73, @29, KC0[CB0:0-32], KC1[]
2751; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T24.X, 0
2752; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T22.X, 0
2753; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T28.X, 0
2754; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T27.X, 0
2755; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T26.X, 0
2756; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T21.X, 0
2757; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T20.X, 0
2758; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T19.X, 1
2759; EG-NEXT:    CF_END
2760; EG-NEXT:    Fetch clause starting at 12:
2761; EG-NEXT:     VTX_READ_128 T23.XYZW, T22.X, 16, #1
2762; EG-NEXT:     VTX_READ_128 T24.XYZW, T22.X, 32, #1
2763; EG-NEXT:     VTX_READ_128 T25.XYZW, T22.X, 0, #1
2764; EG-NEXT:     VTX_READ_128 T22.XYZW, T22.X, 48, #1
2765; EG-NEXT:    ALU clause starting at 20:
2766; EG-NEXT:     LSHR T19.X, KC0[2].Y, literal.x,
2767; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2768; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2769; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
2770; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2771; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
2772; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
2773; EG-NEXT:     MOV * T22.X, KC0[2].Z,
2774; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2775; EG-NEXT:    ALU clause starting at 29:
2776; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
2777; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
2778; EG-NEXT:     LSHR T26.X, PV.W, literal.x,
2779; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2780; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
2781; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
2782; EG-NEXT:     LSHR T0.W, T22.W, literal.y,
2783; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
2784; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2785; EG-NEXT:    80(1.121039e-43), 0(0.000000e+00)
2786; EG-NEXT:     LSHR T28.X, PS, literal.x,
2787; EG-NEXT:     LSHR T0.Y, T22.Y, literal.y,
2788; EG-NEXT:     BFE_INT T29.Z, T25.Y, 0.0, literal.y, BS:VEC_120/SCL_212
2789; EG-NEXT:     LSHR T1.W, T24.W, literal.y,
2790; EG-NEXT:     LSHR * T2.W, T24.Y, literal.y,
2791; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2792; EG-NEXT:     BFE_INT T29.X, T25.X, 0.0, literal.x,
2793; EG-NEXT:     LSHR T1.Y, T23.W, literal.x,
2794; EG-NEXT:     BFE_INT T30.Z, T25.W, 0.0, literal.x, BS:VEC_120/SCL_212
2795; EG-NEXT:     LSHR T3.W, T23.Y, literal.x,
2796; EG-NEXT:     LSHR * T4.W, T25.Y, literal.x,
2797; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2798; EG-NEXT:     BFE_INT T30.X, T25.Z, 0.0, literal.x,
2799; EG-NEXT:     LSHR T2.Y, T25.W, literal.x,
2800; EG-NEXT:     BFE_INT T31.Z, T23.Y, 0.0, literal.x,
2801; EG-NEXT:     BFE_INT T29.W, PS, 0.0, literal.x,
2802; EG-NEXT:     LSHR * T4.W, T25.X, literal.x,
2803; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2804; EG-NEXT:     BFE_INT T31.X, T23.X, 0.0, literal.x,
2805; EG-NEXT:     BFE_INT T29.Y, PS, 0.0, literal.x,
2806; EG-NEXT:     BFE_INT T32.Z, T23.W, 0.0, literal.x,
2807; EG-NEXT:     BFE_INT T30.W, PV.Y, 0.0, literal.x,
2808; EG-NEXT:     LSHR * T4.W, T25.Z, literal.x,
2809; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2810; EG-NEXT:     BFE_INT T32.X, T23.Z, 0.0, literal.x,
2811; EG-NEXT:     BFE_INT T30.Y, PS, 0.0, literal.x,
2812; EG-NEXT:     BFE_INT T25.Z, T24.Y, 0.0, literal.x,
2813; EG-NEXT:     BFE_INT T31.W, T3.W, 0.0, literal.x,
2814; EG-NEXT:     LSHR * T3.W, T23.X, literal.x,
2815; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2816; EG-NEXT:     BFE_INT T25.X, T24.X, 0.0, literal.x,
2817; EG-NEXT:     BFE_INT T31.Y, PS, 0.0, literal.x,
2818; EG-NEXT:     BFE_INT T33.Z, T24.W, 0.0, literal.x,
2819; EG-NEXT:     BFE_INT T32.W, T1.Y, 0.0, literal.x,
2820; EG-NEXT:     LSHR * T3.W, T23.Z, literal.x,
2821; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2822; EG-NEXT:     BFE_INT T33.X, T24.Z, 0.0, literal.x,
2823; EG-NEXT:     BFE_INT T32.Y, PS, 0.0, literal.x,
2824; EG-NEXT:     BFE_INT T23.Z, T22.Y, 0.0, literal.x,
2825; EG-NEXT:     BFE_INT T25.W, T2.W, 0.0, literal.x,
2826; EG-NEXT:     LSHR * T2.W, T24.X, literal.x,
2827; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2828; EG-NEXT:     BFE_INT T23.X, T22.X, 0.0, literal.x,
2829; EG-NEXT:     BFE_INT T25.Y, PS, 0.0, literal.x,
2830; EG-NEXT:     BFE_INT T34.Z, T22.W, 0.0, literal.x,
2831; EG-NEXT:     BFE_INT T33.W, T1.W, 0.0, literal.x, BS:VEC_120/SCL_212
2832; EG-NEXT:     LSHR * T1.W, T24.Z, literal.x,
2833; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2834; EG-NEXT:     BFE_INT T34.X, T22.Z, 0.0, literal.x,
2835; EG-NEXT:     BFE_INT T33.Y, PS, 0.0, literal.x,
2836; EG-NEXT:     LSHR T0.Z, T22.X, literal.x,
2837; EG-NEXT:     BFE_INT T23.W, T0.Y, 0.0, literal.x,
2838; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
2839; EG-NEXT:    16(2.242078e-44), 96(1.345247e-43)
2840; EG-NEXT:     LSHR T22.X, PS, literal.x,
2841; EG-NEXT:     BFE_INT T23.Y, PV.Z, 0.0, literal.y,
2842; EG-NEXT:     LSHR T0.Z, T22.Z, literal.y,
2843; EG-NEXT:     BFE_INT T34.W, T0.W, 0.0, literal.y,
2844; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
2845; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2846; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
2847; EG-NEXT:     LSHR T24.X, PS, literal.x,
2848; EG-NEXT:     BFE_INT * T34.Y, PV.Z, 0.0, literal.y,
2849; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2850  %load = load <32 x i16>, <32 x i16> addrspace(4)* %in
2851  %ext = sext <32 x i16> %load to <32 x i32>
2852  store <32 x i32> %ext, <32 x i32> addrspace(1)* %out
2853  ret void
2854}
2855
2856define amdgpu_kernel void @constant_zextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(4)* %in) #0 {
2857; GCN-NOHSA-SI-LABEL: constant_zextload_v64i16_to_v64i32:
2858; GCN-NOHSA-SI:       ; %bb.0:
2859; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
2860; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2861; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
2862; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[36:51], s[18:19], 0x10
2863; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2864; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s18, s1, 16
2865; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s19, s0, 16
2866; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s20, s3, 16
2867; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s21, s2, 16
2868; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s22, s5, 16
2869; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s23, s4, 16
2870; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s24, s7, 16
2871; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s25, s6, 16
2872; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s26, s9, 16
2873; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s27, s8, 16
2874; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s28, s11, 16
2875; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s29, s10, 16
2876; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s30, s13, 16
2877; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s31, s12, 16
2878; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s33, s15, 16
2879; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s34, s14, 16
2880; GCN-NOHSA-SI-NEXT:    s_and_b32 s35, s1, 0xffff
2881; GCN-NOHSA-SI-NEXT:    s_and_b32 s52, s0, 0xffff
2882; GCN-NOHSA-SI-NEXT:    s_and_b32 s53, s3, 0xffff
2883; GCN-NOHSA-SI-NEXT:    s_and_b32 s54, s2, 0xffff
2884; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
2885; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
2886; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
2887; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
2888; GCN-NOHSA-SI-NEXT:    s_and_b32 s9, s9, 0xffff
2889; GCN-NOHSA-SI-NEXT:    s_and_b32 s8, s8, 0xffff
2890; GCN-NOHSA-SI-NEXT:    s_and_b32 s11, s11, 0xffff
2891; GCN-NOHSA-SI-NEXT:    s_and_b32 s10, s10, 0xffff
2892; GCN-NOHSA-SI-NEXT:    s_and_b32 s13, s13, 0xffff
2893; GCN-NOHSA-SI-NEXT:    s_and_b32 s12, s12, 0xffff
2894; GCN-NOHSA-SI-NEXT:    s_and_b32 s15, s15, 0xffff
2895; GCN-NOHSA-SI-NEXT:    s_and_b32 s14, s14, 0xffff
2896; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s55, s37, 16
2897; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s56, s36, 16
2898; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s57, s39, 16
2899; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s58, s38, 16
2900; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s59, s41, 16
2901; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s60, s40, 16
2902; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s61, s43, 16
2903; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s62, s42, 16
2904; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s63, s45, 16
2905; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s64, s44, 16
2906; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s65, s47, 16
2907; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s66, s46, 16
2908; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s67, s49, 16
2909; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s68, s48, 16
2910; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s69, s51, 16
2911; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s70, s50, 16
2912; GCN-NOHSA-SI-NEXT:    s_and_b32 s37, s37, 0xffff
2913; GCN-NOHSA-SI-NEXT:    s_and_b32 s36, s36, 0xffff
2914; GCN-NOHSA-SI-NEXT:    s_and_b32 s39, s39, 0xffff
2915; GCN-NOHSA-SI-NEXT:    s_and_b32 s38, s38, 0xffff
2916; GCN-NOHSA-SI-NEXT:    s_and_b32 s40, s40, 0xffff
2917; GCN-NOHSA-SI-NEXT:    s_and_b32 s43, s43, 0xffff
2918; GCN-NOHSA-SI-NEXT:    s_and_b32 s42, s42, 0xffff
2919; GCN-NOHSA-SI-NEXT:    s_and_b32 s45, s45, 0xffff
2920; GCN-NOHSA-SI-NEXT:    s_and_b32 s44, s44, 0xffff
2921; GCN-NOHSA-SI-NEXT:    s_and_b32 s47, s47, 0xffff
2922; GCN-NOHSA-SI-NEXT:    s_and_b32 s46, s46, 0xffff
2923; GCN-NOHSA-SI-NEXT:    s_and_b32 s49, s49, 0xffff
2924; GCN-NOHSA-SI-NEXT:    s_and_b32 s48, s48, 0xffff
2925; GCN-NOHSA-SI-NEXT:    s_and_b32 s51, s51, 0xffff
2926; GCN-NOHSA-SI-NEXT:    s_and_b32 s50, s50, 0xffff
2927; GCN-NOHSA-SI-NEXT:    s_and_b32 s41, s41, 0xffff
2928; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s16
2929; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s17
2930; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
2931; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
2932; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s50
2933; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s70
2934; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s51
2935; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s69
2936; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s48
2937; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s68
2938; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s49
2939; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s67
2940; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s46
2941; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s66
2942; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s47
2943; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s65
2944; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, s44
2945; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, s64
2946; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v14, s45
2947; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, s63
2948; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v16, s42
2949; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v17, s62
2950; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v18, s43
2951; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v20, s40
2952; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v19, s61
2953; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v21, s60
2954; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v22, s41
2955; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v23, s59
2956; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
2957; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:224
2958; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208
2959; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192
2960; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:176
2961; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:160
2962; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(5)
2963; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s38
2964; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s58
2965; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s39
2966; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s57
2967; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
2968; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2969; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s36
2970; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s56
2971; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s37
2972; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s55
2973; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
2974; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2975; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
2976; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s34
2977; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s15
2978; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s33
2979; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
2980; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2981; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
2982; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s31
2983; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s13
2984; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s30
2985; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
2986; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2987; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
2988; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s29
2989; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
2990; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s28
2991; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
2992; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2993; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
2994; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s27
2995; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
2996; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s26
2997; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
2998; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
2999; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
3000; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s25
3001; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
3002; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s24
3003; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
3004; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3005; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
3006; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s23
3007; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
3008; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s22
3009; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
3010; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3011; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s54
3012; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s21
3013; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s53
3014; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s20
3015; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
3016; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3017; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s52
3018; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
3019; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s35
3020; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s18
3021; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
3022; GCN-NOHSA-SI-NEXT:    s_endpgm
3023;
3024; GCN-HSA-LABEL: constant_zextload_v64i16_to_v64i32:
3025; GCN-HSA:       ; %bb.0:
3026; GCN-HSA-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
3027; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3028; GCN-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
3029; GCN-HSA-NEXT:    s_load_dwordx16 s[36:51], s[18:19], 0x10
3030; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3031; GCN-HSA-NEXT:    s_lshr_b32 s20, s1, 16
3032; GCN-HSA-NEXT:    s_lshr_b32 s21, s0, 16
3033; GCN-HSA-NEXT:    s_lshr_b32 s22, s3, 16
3034; GCN-HSA-NEXT:    s_lshr_b32 s23, s2, 16
3035; GCN-HSA-NEXT:    s_lshr_b32 s24, s5, 16
3036; GCN-HSA-NEXT:    s_lshr_b32 s25, s4, 16
3037; GCN-HSA-NEXT:    s_lshr_b32 s26, s7, 16
3038; GCN-HSA-NEXT:    s_lshr_b32 s27, s6, 16
3039; GCN-HSA-NEXT:    s_lshr_b32 s28, s9, 16
3040; GCN-HSA-NEXT:    s_lshr_b32 s29, s8, 16
3041; GCN-HSA-NEXT:    s_lshr_b32 s30, s11, 16
3042; GCN-HSA-NEXT:    s_lshr_b32 s31, s10, 16
3043; GCN-HSA-NEXT:    s_lshr_b32 s33, s13, 16
3044; GCN-HSA-NEXT:    s_lshr_b32 s34, s12, 16
3045; GCN-HSA-NEXT:    s_lshr_b32 s35, s15, 16
3046; GCN-HSA-NEXT:    s_lshr_b32 s52, s14, 16
3047; GCN-HSA-NEXT:    s_and_b32 s1, s1, 0xffff
3048; GCN-HSA-NEXT:    s_and_b32 s0, s0, 0xffff
3049; GCN-HSA-NEXT:    s_and_b32 s3, s3, 0xffff
3050; GCN-HSA-NEXT:    s_and_b32 s2, s2, 0xffff
3051; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
3052; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
3053; GCN-HSA-NEXT:    s_and_b32 s53, s7, 0xffff
3054; GCN-HSA-NEXT:    s_and_b32 s54, s6, 0xffff
3055; GCN-HSA-NEXT:    s_and_b32 s9, s9, 0xffff
3056; GCN-HSA-NEXT:    s_and_b32 s8, s8, 0xffff
3057; GCN-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
3058; GCN-HSA-NEXT:    s_and_b32 s10, s10, 0xffff
3059; GCN-HSA-NEXT:    s_and_b32 s13, s13, 0xffff
3060; GCN-HSA-NEXT:    s_and_b32 s12, s12, 0xffff
3061; GCN-HSA-NEXT:    s_and_b32 s15, s15, 0xffff
3062; GCN-HSA-NEXT:    s_and_b32 s14, s14, 0xffff
3063; GCN-HSA-NEXT:    s_lshr_b32 s18, s37, 16
3064; GCN-HSA-NEXT:    s_lshr_b32 s19, s36, 16
3065; GCN-HSA-NEXT:    s_lshr_b32 s55, s39, 16
3066; GCN-HSA-NEXT:    s_lshr_b32 s56, s38, 16
3067; GCN-HSA-NEXT:    s_lshr_b32 s57, s41, 16
3068; GCN-HSA-NEXT:    s_lshr_b32 s58, s40, 16
3069; GCN-HSA-NEXT:    s_lshr_b32 s59, s43, 16
3070; GCN-HSA-NEXT:    s_lshr_b32 s60, s42, 16
3071; GCN-HSA-NEXT:    s_lshr_b32 s61, s45, 16
3072; GCN-HSA-NEXT:    s_lshr_b32 s62, s44, 16
3073; GCN-HSA-NEXT:    s_lshr_b32 s63, s47, 16
3074; GCN-HSA-NEXT:    s_lshr_b32 s64, s46, 16
3075; GCN-HSA-NEXT:    s_lshr_b32 s65, s49, 16
3076; GCN-HSA-NEXT:    s_lshr_b32 s66, s48, 16
3077; GCN-HSA-NEXT:    s_lshr_b32 s67, s51, 16
3078; GCN-HSA-NEXT:    s_lshr_b32 s68, s50, 16
3079; GCN-HSA-NEXT:    s_and_b32 s37, s37, 0xffff
3080; GCN-HSA-NEXT:    s_and_b32 s36, s36, 0xffff
3081; GCN-HSA-NEXT:    s_and_b32 s39, s39, 0xffff
3082; GCN-HSA-NEXT:    s_and_b32 s38, s38, 0xffff
3083; GCN-HSA-NEXT:    s_and_b32 s41, s41, 0xffff
3084; GCN-HSA-NEXT:    s_and_b32 s40, s40, 0xffff
3085; GCN-HSA-NEXT:    s_and_b32 s43, s43, 0xffff
3086; GCN-HSA-NEXT:    s_and_b32 s42, s42, 0xffff
3087; GCN-HSA-NEXT:    s_and_b32 s45, s45, 0xffff
3088; GCN-HSA-NEXT:    s_and_b32 s44, s44, 0xffff
3089; GCN-HSA-NEXT:    s_and_b32 s47, s47, 0xffff
3090; GCN-HSA-NEXT:    s_and_b32 s46, s46, 0xffff
3091; GCN-HSA-NEXT:    s_and_b32 s49, s49, 0xffff
3092; GCN-HSA-NEXT:    s_and_b32 s48, s48, 0xffff
3093; GCN-HSA-NEXT:    s_and_b32 s51, s51, 0xffff
3094; GCN-HSA-NEXT:    s_and_b32 s50, s50, 0xffff
3095; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0xf0
3096; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3097; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s7
3098; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s6
3099; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0xe0
3100; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3101; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s7
3102; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s6
3103; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0xd0
3104; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3105; GCN-HSA-NEXT:    v_mov_b32_e32 v27, s7
3106; GCN-HSA-NEXT:    v_mov_b32_e32 v26, s6
3107; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0xc0
3108; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3109; GCN-HSA-NEXT:    v_mov_b32_e32 v29, s7
3110; GCN-HSA-NEXT:    v_mov_b32_e32 v28, s6
3111; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0xb0
3112; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3113; GCN-HSA-NEXT:    v_mov_b32_e32 v31, s7
3114; GCN-HSA-NEXT:    v_mov_b32_e32 v30, s6
3115; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0xa0
3116; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3117; GCN-HSA-NEXT:    v_mov_b32_e32 v33, s7
3118; GCN-HSA-NEXT:    v_mov_b32_e32 v32, s6
3119; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0x90
3120; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s48
3121; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s66
3122; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s49
3123; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s65
3124; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3125; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
3126; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s7
3127; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s6
3128; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0x80
3129; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3130; GCN-HSA-NEXT:    v_mov_b32_e32 v35, s7
3131; GCN-HSA-NEXT:    v_mov_b32_e32 v34, s6
3132; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0x70
3133; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s42
3134; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s60
3135; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s43
3136; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s59
3137; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3138; GCN-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
3139; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s50
3140; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s7
3141; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s6
3142; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0x60
3143; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3144; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s68
3145; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s51
3146; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s67
3147; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s7
3148; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s46
3149; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s64
3150; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s47
3151; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s63
3152; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s44
3153; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s62
3154; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s45
3155; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s61
3156; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s40
3157; GCN-HSA-NEXT:    flat_store_dwordx4 v[21:22], v[0:3]
3158; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s58
3159; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s38
3160; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s41
3161; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s57
3162; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s56
3163; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s39
3164; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s36
3165; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s55
3166; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s19
3167; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s6
3168; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0x50
3169; GCN-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
3170; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s37
3171; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s14
3172; GCN-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
3173; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s18
3174; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s12
3175; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s52
3176; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s15
3177; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s35
3178; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s34
3179; GCN-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
3180; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s13
3181; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s33
3182; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[0:3]
3183; GCN-HSA-NEXT:    flat_store_dwordx4 v[34:35], v[4:7]
3184; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[8:11]
3185; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[12:15]
3186; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3187; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s6
3188; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
3189; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s31
3190; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s11
3191; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s30
3192; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s7
3193; GCN-HSA-NEXT:    s_add_u32 s6, s16, 64
3194; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3195; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3196; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s6
3197; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
3198; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s29
3199; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
3200; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s28
3201; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s7
3202; GCN-HSA-NEXT:    s_add_u32 s6, s16, 48
3203; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3204; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
3205; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s6
3206; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s54
3207; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s27
3208; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s53
3209; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s26
3210; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s7
3211; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3212; GCN-HSA-NEXT:    s_nop 0
3213; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
3214; GCN-HSA-NEXT:    s_add_u32 s4, s16, 32
3215; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
3216; GCN-HSA-NEXT:    s_addc_u32 s5, s17, 0
3217; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
3218; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s25
3219; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s24
3220; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
3221; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3222; GCN-HSA-NEXT:    s_nop 0
3223; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
3224; GCN-HSA-NEXT:    s_add_u32 s2, s16, 16
3225; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s3
3226; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
3227; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
3228; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s23
3229; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s22
3230; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
3231; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3232; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
3233; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
3234; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
3235; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s1
3236; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s20
3237; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s17
3238; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3239; GCN-HSA-NEXT:    s_endpgm
3240;
3241; GCN-NOHSA-VI-LABEL: constant_zextload_v64i16_to_v64i32:
3242; GCN-NOHSA-VI:       ; %bb.0:
3243; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[36:39], s[0:1], 0x24
3244; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
3245; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[16:31], s[38:39], 0x0
3246; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[38:39], 0x40
3247; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
3248; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s49, s31, 16
3249; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s69, s15, 16
3250; GCN-NOHSA-VI-NEXT:    s_and_b32 s15, s15, 0xffff
3251; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s70, s14, 16
3252; GCN-NOHSA-VI-NEXT:    s_and_b32 s14, s14, 0xffff
3253; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s51, s1, 16
3254; GCN-NOHSA-VI-NEXT:    s_and_b32 s52, s1, 0xffff
3255; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s53, s0, 16
3256; GCN-NOHSA-VI-NEXT:    s_and_b32 s54, s0, 0xffff
3257; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s55, s3, 16
3258; GCN-NOHSA-VI-NEXT:    s_and_b32 s56, s3, 0xffff
3259; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s57, s2, 16
3260; GCN-NOHSA-VI-NEXT:    s_and_b32 s58, s2, 0xffff
3261; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s67, s13, 16
3262; GCN-NOHSA-VI-NEXT:    s_and_b32 s13, s13, 0xffff
3263; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s68, s12, 16
3264; GCN-NOHSA-VI-NEXT:    s_and_b32 s12, s12, 0xffff
3265; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
3266; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
3267; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s36
3268; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s37
3269; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
3270; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s70
3271; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s15
3272; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s69
3273; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s65, s11, 16
3274; GCN-NOHSA-VI-NEXT:    s_and_b32 s11, s11, 0xffff
3275; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s66, s10, 16
3276; GCN-NOHSA-VI-NEXT:    s_and_b32 s10, s10, 0xffff
3277; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
3278; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s63, s9, 16
3279; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
3280; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s68
3281; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s13
3282; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s67
3283; GCN-NOHSA-VI-NEXT:    s_and_b32 s9, s9, 0xffff
3284; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s64, s8, 16
3285; GCN-NOHSA-VI-NEXT:    s_and_b32 s8, s8, 0xffff
3286; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224
3287; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s61, s7, 16
3288; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
3289; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s66
3290; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
3291; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s65
3292; GCN-NOHSA-VI-NEXT:    s_and_b32 s7, s7, 0xffff
3293; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s62, s6, 16
3294; GCN-NOHSA-VI-NEXT:    s_and_b32 s6, s6, 0xffff
3295; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:208
3296; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s59, s5, 16
3297; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
3298; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s64
3299; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
3300; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s63
3301; GCN-NOHSA-VI-NEXT:    s_and_b32 s5, s5, 0xffff
3302; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s60, s4, 16
3303; GCN-NOHSA-VI-NEXT:    s_and_b32 s4, s4, 0xffff
3304; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:192
3305; GCN-NOHSA-VI-NEXT:    s_and_b32 s31, s31, 0xffff
3306; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
3307; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s62
3308; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
3309; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s61
3310; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
3311; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s50, s30, 16
3312; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
3313; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s60
3314; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
3315; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s59
3316; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160
3317; GCN-NOHSA-VI-NEXT:    s_and_b32 s30, s30, 0xffff
3318; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s58
3319; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s57
3320; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s56
3321; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s55
3322; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
3323; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s47, s29, 16
3324; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s54
3325; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s53
3326; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s52
3327; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s51
3328; GCN-NOHSA-VI-NEXT:    s_and_b32 s29, s29, 0xffff
3329; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s48, s28, 16
3330; GCN-NOHSA-VI-NEXT:    s_and_b32 s28, s28, 0xffff
3331; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
3332; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s45, s27, 16
3333; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s30
3334; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s50
3335; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s31
3336; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s49
3337; GCN-NOHSA-VI-NEXT:    s_and_b32 s27, s27, 0xffff
3338; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s46, s26, 16
3339; GCN-NOHSA-VI-NEXT:    s_and_b32 s26, s26, 0xffff
3340; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
3341; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s43, s25, 16
3342; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s28
3343; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s48
3344; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s29
3345; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s47
3346; GCN-NOHSA-VI-NEXT:    s_and_b32 s25, s25, 0xffff
3347; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s44, s24, 16
3348; GCN-NOHSA-VI-NEXT:    s_and_b32 s24, s24, 0xffff
3349; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
3350; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s41, s23, 16
3351; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s26
3352; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s46
3353; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s27
3354; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s45
3355; GCN-NOHSA-VI-NEXT:    s_and_b32 s23, s23, 0xffff
3356; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s42, s22, 16
3357; GCN-NOHSA-VI-NEXT:    s_and_b32 s22, s22, 0xffff
3358; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
3359; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s39, s21, 16
3360; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s24
3361; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s44
3362; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s25
3363; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s43
3364; GCN-NOHSA-VI-NEXT:    s_and_b32 s21, s21, 0xffff
3365; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s40, s20, 16
3366; GCN-NOHSA-VI-NEXT:    s_and_b32 s20, s20, 0xffff
3367; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
3368; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s35, s19, 16
3369; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s22
3370; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s42
3371; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s23
3372; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s41
3373; GCN-NOHSA-VI-NEXT:    s_and_b32 s19, s19, 0xffff
3374; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s38, s18, 16
3375; GCN-NOHSA-VI-NEXT:    s_and_b32 s18, s18, 0xffff
3376; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
3377; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s33, s17, 16
3378; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s20
3379; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s40
3380; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s21
3381; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s39
3382; GCN-NOHSA-VI-NEXT:    s_and_b32 s17, s17, 0xffff
3383; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s34, s16, 16
3384; GCN-NOHSA-VI-NEXT:    s_and_b32 s16, s16, 0xffff
3385; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
3386; GCN-NOHSA-VI-NEXT:    s_nop 0
3387; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s18
3388; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s38
3389; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s19
3390; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s35
3391; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
3392; GCN-NOHSA-VI-NEXT:    s_nop 0
3393; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s16
3394; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s34
3395; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s17
3396; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s33
3397; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
3398; GCN-NOHSA-VI-NEXT:    s_endpgm
3399;
3400; EG-LABEL: constant_zextload_v64i16_to_v64i32:
3401; EG:       ; %bb.0:
3402; EG-NEXT:    ALU 0, @38, KC0[CB0:0-32], KC1[]
3403; EG-NEXT:    TEX 3 @22
3404; EG-NEXT:    ALU 55, @39, KC0[CB0:0-32], KC1[]
3405; EG-NEXT:    TEX 3 @30
3406; EG-NEXT:    ALU 87, @95, KC0[CB0:0-32], KC1[]
3407; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T65.XYZW, T66.X, 0
3408; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T49.X, 0
3409; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T62.XYZW, T64.X, 0
3410; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T50.X, 0
3411; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T59.XYZW, T61.X, 0
3412; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T51.X, 0
3413; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T56.XYZW, T58.X, 0
3414; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T54.XYZW, T52.X, 0
3415; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T53.XYZW, T55.X, 0
3416; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T39.X, 0
3417; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T48.X, 0
3418; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T40.X, 0
3419; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T46.X, 0
3420; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T41.X, 0
3421; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T43.X, 0
3422; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T36.X, 1
3423; EG-NEXT:    CF_END
3424; EG-NEXT:    Fetch clause starting at 22:
3425; EG-NEXT:     VTX_READ_128 T36.XYZW, T35.X, 0, #1
3426; EG-NEXT:     VTX_READ_128 T39.XYZW, T35.X, 48, #1
3427; EG-NEXT:     VTX_READ_128 T40.XYZW, T35.X, 32, #1
3428; EG-NEXT:     VTX_READ_128 T41.XYZW, T35.X, 16, #1
3429; EG-NEXT:    Fetch clause starting at 30:
3430; EG-NEXT:     VTX_READ_128 T49.XYZW, T35.X, 112, #1
3431; EG-NEXT:     VTX_READ_128 T50.XYZW, T35.X, 96, #1
3432; EG-NEXT:     VTX_READ_128 T51.XYZW, T35.X, 80, #1
3433; EG-NEXT:     VTX_READ_128 T52.XYZW, T35.X, 64, #1
3434; EG-NEXT:    ALU clause starting at 38:
3435; EG-NEXT:     MOV * T35.X, KC0[2].Z,
3436; EG-NEXT:    ALU clause starting at 39:
3437; EG-NEXT:     LSHR * T37.W, T36.Y, literal.x,
3438; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3439; EG-NEXT:     AND_INT * T37.Z, T36.Y, literal.x,
3440; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3441; EG-NEXT:     LSHR T37.Y, T36.X, literal.x,
3442; EG-NEXT:     LSHR * T38.W, T36.W, literal.x,
3443; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3444; EG-NEXT:     AND_INT T37.X, T36.X, literal.x,
3445; EG-NEXT:     AND_INT T38.Z, T36.W, literal.x,
3446; EG-NEXT:     LSHR * T36.X, KC0[2].Y, literal.y,
3447; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
3448; EG-NEXT:     LSHR T38.Y, T36.Z, literal.x,
3449; EG-NEXT:     LSHR * T42.W, T41.Y, literal.x,
3450; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3451; EG-NEXT:     AND_INT T38.X, T36.Z, literal.x,
3452; EG-NEXT:     AND_INT T42.Z, T41.Y, literal.x,
3453; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3454; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
3455; EG-NEXT:     LSHR T43.X, PV.W, literal.x,
3456; EG-NEXT:     LSHR T42.Y, T41.X, literal.y,
3457; EG-NEXT:     LSHR T44.W, T41.W, literal.y,
3458; EG-NEXT:     AND_INT * T42.X, T41.X, literal.z,
3459; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3460; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3461; EG-NEXT:     AND_INT T44.Z, T41.W, literal.x,
3462; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3463; EG-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
3464; EG-NEXT:     LSHR T41.X, PV.W, literal.x,
3465; EG-NEXT:     LSHR T44.Y, T41.Z, literal.y,
3466; EG-NEXT:     LSHR T45.W, T40.Y, literal.y,
3467; EG-NEXT:     AND_INT * T44.X, T41.Z, literal.z,
3468; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3469; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3470; EG-NEXT:     AND_INT T45.Z, T40.Y, literal.x,
3471; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3472; EG-NEXT:    65535(9.183409e-41), 48(6.726233e-44)
3473; EG-NEXT:     LSHR T46.X, PV.W, literal.x,
3474; EG-NEXT:     LSHR T45.Y, T40.X, literal.y,
3475; EG-NEXT:     LSHR T47.W, T40.W, literal.y,
3476; EG-NEXT:     AND_INT * T45.X, T40.X, literal.z,
3477; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3478; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3479; EG-NEXT:     AND_INT T47.Z, T40.W, literal.x,
3480; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3481; EG-NEXT:    65535(9.183409e-41), 64(8.968310e-44)
3482; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
3483; EG-NEXT:     LSHR T47.Y, T40.Z, literal.y,
3484; EG-NEXT:     AND_INT * T47.X, T40.Z, literal.z,
3485; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3486; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3487; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.x,
3488; EG-NEXT:     LSHR * T35.W, T39.Y, literal.y,
3489; EG-NEXT:    80(1.121039e-43), 16(2.242078e-44)
3490; EG-NEXT:     LSHR T48.X, PV.W, literal.x,
3491; EG-NEXT:     AND_INT * T35.Z, T39.Y, literal.y,
3492; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
3493; EG-NEXT:    ALU clause starting at 95:
3494; EG-NEXT:     LSHR T35.Y, T39.X, literal.x,
3495; EG-NEXT:     LSHR * T53.W, T39.W, literal.x,
3496; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3497; EG-NEXT:     AND_INT T35.X, T39.X, literal.x,
3498; EG-NEXT:     AND_INT T53.Z, T39.W, literal.x,
3499; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3500; EG-NEXT:    65535(9.183409e-41), 96(1.345247e-43)
3501; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
3502; EG-NEXT:     LSHR T53.Y, T39.Z, literal.y,
3503; EG-NEXT:     LSHR T54.W, T52.Y, literal.y,
3504; EG-NEXT:     AND_INT * T53.X, T39.Z, literal.z,
3505; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3506; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3507; EG-NEXT:     AND_INT T54.Z, T52.Y, literal.x,
3508; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3509; EG-NEXT:    65535(9.183409e-41), 112(1.569454e-43)
3510; EG-NEXT:     LSHR T55.X, PV.W, literal.x,
3511; EG-NEXT:     LSHR T54.Y, T52.X, literal.y,
3512; EG-NEXT:     LSHR T56.W, T52.W, literal.y,
3513; EG-NEXT:     AND_INT * T54.X, T52.X, literal.z,
3514; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3515; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3516; EG-NEXT:     AND_INT T56.Z, T52.W, literal.x,
3517; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3518; EG-NEXT:    65535(9.183409e-41), 128(1.793662e-43)
3519; EG-NEXT:     LSHR T52.X, PV.W, literal.x,
3520; EG-NEXT:     LSHR T56.Y, T52.Z, literal.y,
3521; EG-NEXT:     LSHR T57.W, T51.Y, literal.y,
3522; EG-NEXT:     AND_INT * T56.X, T52.Z, literal.z,
3523; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3524; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3525; EG-NEXT:     AND_INT T57.Z, T51.Y, literal.x,
3526; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3527; EG-NEXT:    65535(9.183409e-41), 144(2.017870e-43)
3528; EG-NEXT:     LSHR T58.X, PV.W, literal.x,
3529; EG-NEXT:     LSHR T57.Y, T51.X, literal.y,
3530; EG-NEXT:     LSHR T59.W, T51.W, literal.y,
3531; EG-NEXT:     AND_INT * T57.X, T51.X, literal.z,
3532; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3533; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3534; EG-NEXT:     AND_INT T59.Z, T51.W, literal.x,
3535; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3536; EG-NEXT:    65535(9.183409e-41), 160(2.242078e-43)
3537; EG-NEXT:     LSHR T51.X, PV.W, literal.x,
3538; EG-NEXT:     LSHR T59.Y, T51.Z, literal.y,
3539; EG-NEXT:     LSHR T60.W, T50.Y, literal.y,
3540; EG-NEXT:     AND_INT * T59.X, T51.Z, literal.z,
3541; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3542; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3543; EG-NEXT:     AND_INT T60.Z, T50.Y, literal.x,
3544; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3545; EG-NEXT:    65535(9.183409e-41), 176(2.466285e-43)
3546; EG-NEXT:     LSHR T61.X, PV.W, literal.x,
3547; EG-NEXT:     LSHR T60.Y, T50.X, literal.y,
3548; EG-NEXT:     LSHR T62.W, T50.W, literal.y,
3549; EG-NEXT:     AND_INT * T60.X, T50.X, literal.z,
3550; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3551; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3552; EG-NEXT:     AND_INT T62.Z, T50.W, literal.x,
3553; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3554; EG-NEXT:    65535(9.183409e-41), 192(2.690493e-43)
3555; EG-NEXT:     LSHR T50.X, PV.W, literal.x,
3556; EG-NEXT:     LSHR T62.Y, T50.Z, literal.y,
3557; EG-NEXT:     LSHR T63.W, T49.Y, literal.y,
3558; EG-NEXT:     AND_INT * T62.X, T50.Z, literal.z,
3559; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3560; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3561; EG-NEXT:     AND_INT T63.Z, T49.Y, literal.x,
3562; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3563; EG-NEXT:    65535(9.183409e-41), 208(2.914701e-43)
3564; EG-NEXT:     LSHR T64.X, PV.W, literal.x,
3565; EG-NEXT:     LSHR T63.Y, T49.X, literal.y,
3566; EG-NEXT:     LSHR T65.W, T49.W, literal.y,
3567; EG-NEXT:     AND_INT * T63.X, T49.X, literal.z,
3568; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3569; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3570; EG-NEXT:     AND_INT T65.Z, T49.W, literal.x,
3571; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3572; EG-NEXT:    65535(9.183409e-41), 224(3.138909e-43)
3573; EG-NEXT:     LSHR T49.X, PV.W, literal.x,
3574; EG-NEXT:     LSHR T65.Y, T49.Z, literal.y,
3575; EG-NEXT:     AND_INT * T65.X, T49.Z, literal.z,
3576; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3577; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3578; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
3579; EG-NEXT:    240(3.363116e-43), 0(0.000000e+00)
3580; EG-NEXT:     LSHR * T66.X, PV.W, literal.x,
3581; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
3582  %load = load <64 x i16>, <64 x i16> addrspace(4)* %in
3583  %ext = zext <64 x i16> %load to <64 x i32>
3584  store <64 x i32> %ext, <64 x i32> addrspace(1)* %out
3585  ret void
3586}
3587
3588define amdgpu_kernel void @constant_sextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(4)* %in) #0 {
3589; GCN-NOHSA-SI-LABEL: constant_sextload_v64i16_to_v64i32:
3590; GCN-NOHSA-SI:       ; %bb.0:
3591; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[36:39], s[0:1], 0x9
3592; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
3593; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[38:39], 0x0
3594; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[16:31], s[38:39], 0x10
3595; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
3596; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s33, s1, 16
3597; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s34, s0, 16
3598; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s35, s1
3599; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s38, s0
3600; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s39, s3, 16
3601; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s40, s2, 16
3602; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s41, s3
3603; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s42, s2
3604; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s43, s5, 16
3605; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s44, s4, 16
3606; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s5, s5
3607; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s4, s4
3608; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s45, s7, 16
3609; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s46, s6, 16
3610; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s7, s7
3611; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s6, s6
3612; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s47, s9, 16
3613; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s48, s8, 16
3614; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s9, s9
3615; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s8, s8
3616; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s49, s11, 16
3617; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s50, s10, 16
3618; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s11, s11
3619; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s10, s10
3620; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s51, s13, 16
3621; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s52, s12, 16
3622; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s13, s13
3623; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s12, s12
3624; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s53, s15, 16
3625; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s54, s14, 16
3626; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s15, s15
3627; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s14, s14
3628; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s55, s17, 16
3629; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s56, s16, 16
3630; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s17, s17
3631; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s16, s16
3632; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s57, s19, 16
3633; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s58, s18, 16
3634; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s19, s19
3635; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s18, s18
3636; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s59, s21, 16
3637; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s60, s20, 16
3638; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s21, s21
3639; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s20, s20
3640; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s61, s22, 16
3641; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s62, s23
3642; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s22, s22
3643; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s63, s25, 16
3644; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s64, s24, 16
3645; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s25, s25
3646; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s24, s24
3647; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s65, s27, 16
3648; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s66, s26, 16
3649; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s27, s27
3650; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s26, s26
3651; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s67, s29, 16
3652; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s68, s28, 16
3653; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s29, s29
3654; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s28, s28
3655; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s69, s31, 16
3656; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s70, s30, 16
3657; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s31, s31
3658; GCN-NOHSA-SI-NEXT:    s_sext_i32_i16 s30, s30
3659; GCN-NOHSA-SI-NEXT:    s_ashr_i32 s23, s23, 16
3660; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s36
3661; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s37
3662; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
3663; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
3664; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s30
3665; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s70
3666; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s31
3667; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s69
3668; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s28
3669; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s68
3670; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s29
3671; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s67
3672; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s26
3673; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s66
3674; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s27
3675; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s65
3676; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, s24
3677; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, s64
3678; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v14, s25
3679; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, s63
3680; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v16, s22
3681; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v17, s61
3682; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v18, s62
3683; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v20, s20
3684; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v19, s23
3685; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v21, s60
3686; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v22, s21
3687; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v23, s59
3688; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
3689; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:224
3690; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208
3691; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192
3692; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:176
3693; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:160
3694; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(5)
3695; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s18
3696; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s58
3697; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s19
3698; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s57
3699; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
3700; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3701; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s16
3702; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s56
3703; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s17
3704; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s55
3705; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
3706; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3707; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
3708; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s54
3709; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s15
3710; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s53
3711; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
3712; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3713; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
3714; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s52
3715; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s13
3716; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s51
3717; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
3718; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3719; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
3720; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s50
3721; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
3722; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s49
3723; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
3724; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3725; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
3726; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s48
3727; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
3728; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s47
3729; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
3730; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3731; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
3732; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s46
3733; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
3734; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s45
3735; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
3736; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3737; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
3738; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s44
3739; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s5
3740; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s43
3741; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
3742; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3743; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s42
3744; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s40
3745; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s41
3746; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s39
3747; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
3748; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3749; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s38
3750; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s34
3751; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s35
3752; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s33
3753; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
3754; GCN-NOHSA-SI-NEXT:    s_endpgm
3755;
3756; GCN-HSA-LABEL: constant_sextload_v64i16_to_v64i32:
3757; GCN-HSA:       ; %bb.0:
3758; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
3759; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3760; GCN-HSA-NEXT:    s_load_dwordx16 s[16:31], s[2:3], 0x0
3761; GCN-HSA-NEXT:    s_load_dwordx16 s[36:51], s[2:3], 0x10
3762; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3763; GCN-HSA-NEXT:    s_ashr_i32 s4, s17, 16
3764; GCN-HSA-NEXT:    s_ashr_i32 s5, s16, 16
3765; GCN-HSA-NEXT:    s_sext_i32_i16 s6, s17
3766; GCN-HSA-NEXT:    s_sext_i32_i16 s7, s16
3767; GCN-HSA-NEXT:    s_ashr_i32 s8, s19, 16
3768; GCN-HSA-NEXT:    s_ashr_i32 s9, s18, 16
3769; GCN-HSA-NEXT:    s_sext_i32_i16 s10, s19
3770; GCN-HSA-NEXT:    s_sext_i32_i16 s11, s18
3771; GCN-HSA-NEXT:    s_ashr_i32 s12, s21, 16
3772; GCN-HSA-NEXT:    s_ashr_i32 s13, s20, 16
3773; GCN-HSA-NEXT:    s_sext_i32_i16 s14, s21
3774; GCN-HSA-NEXT:    s_sext_i32_i16 s15, s20
3775; GCN-HSA-NEXT:    s_ashr_i32 s16, s23, 16
3776; GCN-HSA-NEXT:    s_ashr_i32 s17, s22, 16
3777; GCN-HSA-NEXT:    s_sext_i32_i16 s18, s23
3778; GCN-HSA-NEXT:    s_sext_i32_i16 s19, s22
3779; GCN-HSA-NEXT:    s_ashr_i32 s20, s25, 16
3780; GCN-HSA-NEXT:    s_ashr_i32 s21, s24, 16
3781; GCN-HSA-NEXT:    s_sext_i32_i16 s22, s25
3782; GCN-HSA-NEXT:    s_sext_i32_i16 s23, s24
3783; GCN-HSA-NEXT:    s_ashr_i32 s24, s27, 16
3784; GCN-HSA-NEXT:    s_ashr_i32 s25, s26, 16
3785; GCN-HSA-NEXT:    s_ashr_i32 s33, s29, 16
3786; GCN-HSA-NEXT:    s_ashr_i32 s34, s28, 16
3787; GCN-HSA-NEXT:    s_ashr_i32 s35, s31, 16
3788; GCN-HSA-NEXT:    s_ashr_i32 s52, s30, 16
3789; GCN-HSA-NEXT:    s_ashr_i32 s53, s37, 16
3790; GCN-HSA-NEXT:    s_ashr_i32 s54, s36, 16
3791; GCN-HSA-NEXT:    s_ashr_i32 s55, s39, 16
3792; GCN-HSA-NEXT:    s_ashr_i32 s56, s38, 16
3793; GCN-HSA-NEXT:    s_ashr_i32 s57, s41, 16
3794; GCN-HSA-NEXT:    s_ashr_i32 s58, s40, 16
3795; GCN-HSA-NEXT:    s_ashr_i32 s59, s43, 16
3796; GCN-HSA-NEXT:    s_ashr_i32 s60, s42, 16
3797; GCN-HSA-NEXT:    s_ashr_i32 s61, s45, 16
3798; GCN-HSA-NEXT:    s_ashr_i32 s62, s44, 16
3799; GCN-HSA-NEXT:    s_ashr_i32 s63, s47, 16
3800; GCN-HSA-NEXT:    s_ashr_i32 s64, s46, 16
3801; GCN-HSA-NEXT:    s_ashr_i32 s65, s49, 16
3802; GCN-HSA-NEXT:    s_ashr_i32 s66, s48, 16
3803; GCN-HSA-NEXT:    s_ashr_i32 s67, s51, 16
3804; GCN-HSA-NEXT:    s_ashr_i32 s68, s50, 16
3805; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xf0
3806; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3807; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s3
3808; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s2
3809; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xe0
3810; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3811; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s3
3812; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s2
3813; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xd0
3814; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3815; GCN-HSA-NEXT:    v_mov_b32_e32 v27, s3
3816; GCN-HSA-NEXT:    v_mov_b32_e32 v26, s2
3817; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xc0
3818; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3819; GCN-HSA-NEXT:    v_mov_b32_e32 v29, s3
3820; GCN-HSA-NEXT:    v_mov_b32_e32 v28, s2
3821; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xb0
3822; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3823; GCN-HSA-NEXT:    v_mov_b32_e32 v31, s3
3824; GCN-HSA-NEXT:    v_mov_b32_e32 v30, s2
3825; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xa0
3826; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3827; GCN-HSA-NEXT:    v_mov_b32_e32 v33, s3
3828; GCN-HSA-NEXT:    s_sext_i32_i16 s49, s49
3829; GCN-HSA-NEXT:    s_sext_i32_i16 s48, s48
3830; GCN-HSA-NEXT:    v_mov_b32_e32 v32, s2
3831; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x90
3832; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s48
3833; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s66
3834; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s49
3835; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s65
3836; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3837; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
3838; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s3
3839; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s2
3840; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x80
3841; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3842; GCN-HSA-NEXT:    v_mov_b32_e32 v35, s3
3843; GCN-HSA-NEXT:    s_sext_i32_i16 s43, s43
3844; GCN-HSA-NEXT:    s_sext_i32_i16 s42, s42
3845; GCN-HSA-NEXT:    v_mov_b32_e32 v34, s2
3846; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x70
3847; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s42
3848; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s60
3849; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s43
3850; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s59
3851; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3852; GCN-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
3853; GCN-HSA-NEXT:    s_sext_i32_i16 s51, s51
3854; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s3
3855; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s2
3856; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x60
3857; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3858; GCN-HSA-NEXT:    s_sext_i32_i16 s50, s50
3859; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s3
3860; GCN-HSA-NEXT:    s_sext_i32_i16 s36, s36
3861; GCN-HSA-NEXT:    s_sext_i32_i16 s39, s39
3862; GCN-HSA-NEXT:    s_sext_i32_i16 s38, s38
3863; GCN-HSA-NEXT:    s_sext_i32_i16 s41, s41
3864; GCN-HSA-NEXT:    s_sext_i32_i16 s40, s40
3865; GCN-HSA-NEXT:    s_sext_i32_i16 s45, s45
3866; GCN-HSA-NEXT:    s_sext_i32_i16 s44, s44
3867; GCN-HSA-NEXT:    s_sext_i32_i16 s47, s47
3868; GCN-HSA-NEXT:    s_sext_i32_i16 s46, s46
3869; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s50
3870; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s68
3871; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s51
3872; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s67
3873; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s2
3874; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x50
3875; GCN-HSA-NEXT:    s_sext_i32_i16 s29, s29
3876; GCN-HSA-NEXT:    s_sext_i32_i16 s28, s28
3877; GCN-HSA-NEXT:    s_sext_i32_i16 s31, s31
3878; GCN-HSA-NEXT:    s_sext_i32_i16 s30, s30
3879; GCN-HSA-NEXT:    s_sext_i32_i16 s37, s37
3880; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s46
3881; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s64
3882; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s47
3883; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s63
3884; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s44
3885; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s62
3886; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s45
3887; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s61
3888; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s40
3889; GCN-HSA-NEXT:    flat_store_dwordx4 v[21:22], v[0:3]
3890; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s58
3891; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s38
3892; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s41
3893; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s57
3894; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s56
3895; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s39
3896; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s36
3897; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s55
3898; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s54
3899; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3900; GCN-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
3901; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s37
3902; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s30
3903; GCN-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
3904; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s53
3905; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s28
3906; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s52
3907; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s31
3908; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s35
3909; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s34
3910; GCN-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
3911; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s29
3912; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s33
3913; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[0:3]
3914; GCN-HSA-NEXT:    flat_store_dwordx4 v[34:35], v[4:7]
3915; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[8:11]
3916; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[12:15]
3917; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
3918; GCN-HSA-NEXT:    s_sext_i32_i16 s27, s27
3919; GCN-HSA-NEXT:    s_sext_i32_i16 s26, s26
3920; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
3921; GCN-HSA-NEXT:    s_add_u32 s2, s0, 64
3922; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s26
3923; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s25
3924; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s27
3925; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s24
3926; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3927; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3928; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
3929; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
3930; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
3931; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s23
3932; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
3933; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s22
3934; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s20
3935; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3936; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3937; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
3938; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
3939; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
3940; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s19
3941; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s17
3942; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s18
3943; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s16
3944; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3945; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3946; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
3947; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
3948; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
3949; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s15
3950; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s13
3951; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s14
3952; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s12
3953; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3954; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3955; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
3956; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s11
3957; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
3958; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s10
3959; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s8
3960; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
3961; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3962; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
3963; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s7
3964; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
3965; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
3966; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s4
3967; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
3968; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3969; GCN-HSA-NEXT:    s_endpgm
3970;
3971; GCN-NOHSA-VI-LABEL: constant_sextload_v64i16_to_v64i32:
3972; GCN-NOHSA-VI:       ; %bb.0:
3973; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[36:39], s[0:1], 0x24
3974; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
3975; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[16:31], s[38:39], 0x0
3976; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[38:39], 0x40
3977; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
3978; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s49, s31, 16
3979; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s69, s15, 16
3980; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s70, s14, 16
3981; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s15, s15
3982; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s14, s14
3983; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s51, s1, 16
3984; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s52, s0, 16
3985; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s53, s1
3986; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s54, s0
3987; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s55, s3, 16
3988; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s56, s2, 16
3989; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s57, s3
3990; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s58, s2
3991; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s67, s13, 16
3992; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s68, s12, 16
3993; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s13, s13
3994; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s12, s12
3995; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
3996; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
3997; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s36
3998; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s37
3999; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
4000; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s70
4001; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s15
4002; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s69
4003; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s65, s11, 16
4004; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s66, s10, 16
4005; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s11, s11
4006; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s10, s10
4007; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
4008; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s63, s9, 16
4009; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
4010; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s68
4011; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s13
4012; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s67
4013; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s64, s8, 16
4014; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s9, s9
4015; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s8, s8
4016; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224
4017; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s61, s7, 16
4018; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
4019; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s66
4020; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
4021; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s65
4022; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s62, s6, 16
4023; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s7, s7
4024; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s6, s6
4025; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:208
4026; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s59, s5, 16
4027; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
4028; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s64
4029; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
4030; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s63
4031; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s60, s4, 16
4032; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s5, s5
4033; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s4, s4
4034; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:192
4035; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s50, s30, 16
4036; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
4037; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s62
4038; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
4039; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s61
4040; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
4041; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s31, s31
4042; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s4
4043; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s60
4044; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
4045; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s59
4046; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160
4047; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s30, s30
4048; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s58
4049; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s56
4050; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s57
4051; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s55
4052; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
4053; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s47, s29, 16
4054; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s54
4055; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s52
4056; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s53
4057; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s51
4058; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s48, s28, 16
4059; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s29, s29
4060; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s28, s28
4061; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
4062; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s45, s27, 16
4063; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s30
4064; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s50
4065; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s31
4066; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s49
4067; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s46, s26, 16
4068; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s27, s27
4069; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s26, s26
4070; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
4071; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s43, s25, 16
4072; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s28
4073; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s48
4074; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s29
4075; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s47
4076; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s44, s24, 16
4077; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s25, s25
4078; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s24, s24
4079; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
4080; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s41, s23, 16
4081; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s26
4082; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s46
4083; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s27
4084; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s45
4085; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s42, s22, 16
4086; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s23, s23
4087; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s22, s22
4088; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
4089; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s39, s21, 16
4090; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s24
4091; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s44
4092; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s25
4093; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s43
4094; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s40, s20, 16
4095; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s21, s21
4096; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s20, s20
4097; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
4098; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s35, s19, 16
4099; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s22
4100; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s42
4101; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s23
4102; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s41
4103; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s38, s18, 16
4104; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s19, s19
4105; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s18, s18
4106; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
4107; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s33, s17, 16
4108; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s20
4109; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s40
4110; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s21
4111; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s39
4112; GCN-NOHSA-VI-NEXT:    s_ashr_i32 s34, s16, 16
4113; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s17, s17
4114; GCN-NOHSA-VI-NEXT:    s_sext_i32_i16 s16, s16
4115; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
4116; GCN-NOHSA-VI-NEXT:    s_nop 0
4117; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s18
4118; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s38
4119; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s19
4120; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s35
4121; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
4122; GCN-NOHSA-VI-NEXT:    s_nop 0
4123; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s16
4124; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s34
4125; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s17
4126; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s33
4127; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
4128; GCN-NOHSA-VI-NEXT:    s_endpgm
4129;
4130; EG-LABEL: constant_sextload_v64i16_to_v64i32:
4131; EG:       ; %bb.0:
4132; EG-NEXT:    ALU 17, @38, KC0[CB0:0-32], KC1[]
4133; EG-NEXT:    TEX 7 @22
4134; EG-NEXT:    ALU 75, @56, KC0[CB0:0-32], KC1[]
4135; EG-NEXT:    ALU 71, @132, KC0[CB0:0-32], KC1[]
4136; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T66.XYZW, T48.X, 0
4137; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T41.X, 0
4138; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T65.XYZW, T56.X, 0
4139; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T55.X, 0
4140; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T64.XYZW, T54.X, 0
4141; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T53.X, 0
4142; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T52.X, 0
4143; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T51.X, 0
4144; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T62.XYZW, T50.X, 0
4145; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T49.X, 0
4146; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T61.XYZW, T40.X, 0
4147; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T39.X, 0
4148; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T38.X, 0
4149; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T59.XYZW, T37.X, 0
4150; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T58.XYZW, T36.X, 0
4151; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T35.X, 1
4152; EG-NEXT:    CF_END
4153; EG-NEXT:    PAD
4154; EG-NEXT:    Fetch clause starting at 22:
4155; EG-NEXT:     VTX_READ_128 T42.XYZW, T41.X, 16, #1
4156; EG-NEXT:     VTX_READ_128 T43.XYZW, T41.X, 32, #1
4157; EG-NEXT:     VTX_READ_128 T44.XYZW, T41.X, 0, #1
4158; EG-NEXT:     VTX_READ_128 T45.XYZW, T41.X, 48, #1
4159; EG-NEXT:     VTX_READ_128 T46.XYZW, T41.X, 64, #1
4160; EG-NEXT:     VTX_READ_128 T47.XYZW, T41.X, 80, #1
4161; EG-NEXT:     VTX_READ_128 T48.XYZW, T41.X, 96, #1
4162; EG-NEXT:     VTX_READ_128 T41.XYZW, T41.X, 112, #1
4163; EG-NEXT:    ALU clause starting at 38:
4164; EG-NEXT:     LSHR T35.X, KC0[2].Y, literal.x,
4165; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4166; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4167; EG-NEXT:     LSHR T36.X, PV.W, literal.x,
4168; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4169; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
4170; EG-NEXT:     LSHR T37.X, PV.W, literal.x,
4171; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4172; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
4173; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
4174; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4175; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
4176; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
4177; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4178; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
4179; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
4180; EG-NEXT:     MOV * T41.X, KC0[2].Z,
4181; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4182; EG-NEXT:    ALU clause starting at 56:
4183; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
4184; EG-NEXT:    96(1.345247e-43), 0(0.000000e+00)
4185; EG-NEXT:     LSHR T49.X, PV.W, literal.x,
4186; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4187; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
4188; EG-NEXT:     LSHR T50.X, PV.W, literal.x,
4189; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4190; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
4191; EG-NEXT:     LSHR T51.X, PV.W, literal.x,
4192; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4193; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
4194; EG-NEXT:     LSHR T52.X, PV.W, literal.x,
4195; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4196; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
4197; EG-NEXT:     LSHR T53.X, PV.W, literal.x,
4198; EG-NEXT:     LSHR T0.Y, T41.W, literal.y,
4199; EG-NEXT:     LSHR T0.Z, T41.Y, literal.y,
4200; EG-NEXT:     LSHR T0.W, T48.W, literal.y, BS:VEC_120/SCL_212
4201; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
4202; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4203; EG-NEXT:    176(2.466285e-43), 0(0.000000e+00)
4204; EG-NEXT:     LSHR T54.X, PS, literal.x,
4205; EG-NEXT:     LSHR T1.Y, T48.Y, literal.y,
4206; EG-NEXT:     LSHR T1.Z, T47.W, literal.y,
4207; EG-NEXT:     LSHR T1.W, T47.Y, literal.y, BS:VEC_120/SCL_212
4208; EG-NEXT:     ADD_INT * T2.W, KC0[2].Y, literal.z,
4209; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4210; EG-NEXT:    192(2.690493e-43), 0(0.000000e+00)
4211; EG-NEXT:     LSHR T55.X, PS, literal.x,
4212; EG-NEXT:     LSHR T2.Y, T46.W, literal.y,
4213; EG-NEXT:     LSHR T2.Z, T46.Y, literal.y,
4214; EG-NEXT:     LSHR T2.W, T45.W, literal.y, BS:VEC_120/SCL_212
4215; EG-NEXT:     ADD_INT * T3.W, KC0[2].Y, literal.z,
4216; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4217; EG-NEXT:    208(2.914701e-43), 0(0.000000e+00)
4218; EG-NEXT:     LSHR T56.X, PS, literal.x,
4219; EG-NEXT:     LSHR T3.Y, T45.Y, literal.y,
4220; EG-NEXT:     BFE_INT T57.Z, T44.Y, 0.0, literal.y, BS:VEC_120/SCL_212
4221; EG-NEXT:     LSHR T3.W, T43.W, literal.y,
4222; EG-NEXT:     LSHR * T4.W, T43.Y, literal.y,
4223; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4224; EG-NEXT:     BFE_INT T57.X, T44.X, 0.0, literal.x,
4225; EG-NEXT:     LSHR T4.Y, T42.W, literal.x,
4226; EG-NEXT:     BFE_INT T58.Z, T44.W, 0.0, literal.x, BS:VEC_120/SCL_212
4227; EG-NEXT:     LSHR T5.W, T42.Y, literal.x,
4228; EG-NEXT:     LSHR * T6.W, T44.Y, literal.x,
4229; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4230; EG-NEXT:     BFE_INT T58.X, T44.Z, 0.0, literal.x,
4231; EG-NEXT:     LSHR T5.Y, T44.W, literal.x,
4232; EG-NEXT:     BFE_INT T59.Z, T42.Y, 0.0, literal.x,
4233; EG-NEXT:     BFE_INT T57.W, PS, 0.0, literal.x,
4234; EG-NEXT:     LSHR * T6.W, T44.X, literal.x,
4235; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4236; EG-NEXT:     BFE_INT T59.X, T42.X, 0.0, literal.x,
4237; EG-NEXT:     BFE_INT T57.Y, PS, 0.0, literal.x,
4238; EG-NEXT:     BFE_INT T60.Z, T42.W, 0.0, literal.x,
4239; EG-NEXT:     BFE_INT T58.W, PV.Y, 0.0, literal.x,
4240; EG-NEXT:     LSHR * T6.W, T44.Z, literal.x,
4241; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4242; EG-NEXT:     BFE_INT T60.X, T42.Z, 0.0, literal.x,
4243; EG-NEXT:     BFE_INT T58.Y, PS, 0.0, literal.x,
4244; EG-NEXT:     BFE_INT T44.Z, T43.Y, 0.0, literal.x,
4245; EG-NEXT:     BFE_INT T59.W, T5.W, 0.0, literal.x,
4246; EG-NEXT:     LSHR * T5.W, T42.X, literal.x,
4247; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4248; EG-NEXT:     BFE_INT T44.X, T43.X, 0.0, literal.x,
4249; EG-NEXT:     BFE_INT T59.Y, PS, 0.0, literal.x,
4250; EG-NEXT:     BFE_INT T61.Z, T43.W, 0.0, literal.x,
4251; EG-NEXT:     BFE_INT T60.W, T4.Y, 0.0, literal.x,
4252; EG-NEXT:     LSHR * T5.W, T42.Z, literal.x,
4253; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4254; EG-NEXT:     BFE_INT T61.X, T43.Z, 0.0, literal.x,
4255; EG-NEXT:     BFE_INT T60.Y, PS, 0.0, literal.x,
4256; EG-NEXT:     BFE_INT T42.Z, T45.Y, 0.0, literal.x,
4257; EG-NEXT:     BFE_INT * T44.W, T4.W, 0.0, literal.x,
4258; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4259; EG-NEXT:    ALU clause starting at 132:
4260; EG-NEXT:     LSHR * T4.W, T43.X, literal.x,
4261; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4262; EG-NEXT:     BFE_INT T42.X, T45.X, 0.0, literal.x,
4263; EG-NEXT:     BFE_INT T44.Y, PV.W, 0.0, literal.x,
4264; EG-NEXT:     BFE_INT T62.Z, T45.W, 0.0, literal.x,
4265; EG-NEXT:     BFE_INT T61.W, T3.W, 0.0, literal.x, BS:VEC_120/SCL_212
4266; EG-NEXT:     LSHR * T3.W, T43.Z, literal.x,
4267; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4268; EG-NEXT:     BFE_INT T62.X, T45.Z, 0.0, literal.x,
4269; EG-NEXT:     BFE_INT T61.Y, PS, 0.0, literal.x,
4270; EG-NEXT:     BFE_INT T43.Z, T46.Y, 0.0, literal.x,
4271; EG-NEXT:     BFE_INT T42.W, T3.Y, 0.0, literal.x, BS:VEC_120/SCL_212
4272; EG-NEXT:     LSHR * T3.W, T45.X, literal.x,
4273; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4274; EG-NEXT:     BFE_INT T43.X, T46.X, 0.0, literal.x,
4275; EG-NEXT:     BFE_INT T42.Y, PS, 0.0, literal.x,
4276; EG-NEXT:     BFE_INT T63.Z, T46.W, 0.0, literal.x,
4277; EG-NEXT:     BFE_INT T62.W, T2.W, 0.0, literal.x, BS:VEC_120/SCL_212
4278; EG-NEXT:     LSHR * T2.W, T45.Z, literal.x,
4279; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4280; EG-NEXT:     BFE_INT T63.X, T46.Z, 0.0, literal.x,
4281; EG-NEXT:     BFE_INT T62.Y, PS, 0.0, literal.x,
4282; EG-NEXT:     BFE_INT T45.Z, T47.Y, 0.0, literal.x,
4283; EG-NEXT:     BFE_INT T43.W, T2.Z, 0.0, literal.x, BS:VEC_120/SCL_212
4284; EG-NEXT:     LSHR * T2.W, T46.X, literal.x,
4285; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4286; EG-NEXT:     BFE_INT T45.X, T47.X, 0.0, literal.x,
4287; EG-NEXT:     BFE_INT T43.Y, PS, 0.0, literal.x,
4288; EG-NEXT:     BFE_INT T64.Z, T47.W, 0.0, literal.x,
4289; EG-NEXT:     BFE_INT T63.W, T2.Y, 0.0, literal.x,
4290; EG-NEXT:     LSHR * T2.W, T46.Z, literal.x,
4291; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4292; EG-NEXT:     BFE_INT T64.X, T47.Z, 0.0, literal.x,
4293; EG-NEXT:     BFE_INT T63.Y, PS, 0.0, literal.x,
4294; EG-NEXT:     BFE_INT T46.Z, T48.Y, 0.0, literal.x,
4295; EG-NEXT:     BFE_INT T45.W, T1.W, 0.0, literal.x,
4296; EG-NEXT:     LSHR * T1.W, T47.X, literal.x,
4297; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4298; EG-NEXT:     BFE_INT T46.X, T48.X, 0.0, literal.x,
4299; EG-NEXT:     BFE_INT T45.Y, PS, 0.0, literal.x,
4300; EG-NEXT:     BFE_INT T65.Z, T48.W, 0.0, literal.x,
4301; EG-NEXT:     BFE_INT T64.W, T1.Z, 0.0, literal.x,
4302; EG-NEXT:     LSHR * T1.W, T47.Z, literal.x,
4303; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4304; EG-NEXT:     BFE_INT T65.X, T48.Z, 0.0, literal.x,
4305; EG-NEXT:     BFE_INT T64.Y, PS, 0.0, literal.x,
4306; EG-NEXT:     BFE_INT T47.Z, T41.Y, 0.0, literal.x,
4307; EG-NEXT:     BFE_INT T46.W, T1.Y, 0.0, literal.x, BS:VEC_120/SCL_212
4308; EG-NEXT:     LSHR * T1.W, T48.X, literal.x,
4309; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4310; EG-NEXT:     BFE_INT T47.X, T41.X, 0.0, literal.x,
4311; EG-NEXT:     BFE_INT T46.Y, PS, 0.0, literal.x,
4312; EG-NEXT:     BFE_INT T66.Z, T41.W, 0.0, literal.x,
4313; EG-NEXT:     BFE_INT T65.W, T0.W, 0.0, literal.x, BS:VEC_120/SCL_212
4314; EG-NEXT:     LSHR * T0.W, T48.Z, literal.x,
4315; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4316; EG-NEXT:     BFE_INT T66.X, T41.Z, 0.0, literal.x,
4317; EG-NEXT:     BFE_INT T65.Y, PS, 0.0, literal.x,
4318; EG-NEXT:     LSHR T1.Z, T41.X, literal.x,
4319; EG-NEXT:     BFE_INT T47.W, T0.Z, 0.0, literal.x, BS:VEC_120/SCL_212
4320; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4321; EG-NEXT:    16(2.242078e-44), 224(3.138909e-43)
4322; EG-NEXT:     LSHR T41.X, PS, literal.x,
4323; EG-NEXT:     BFE_INT T47.Y, PV.Z, 0.0, literal.y,
4324; EG-NEXT:     LSHR T0.Z, T41.Z, literal.y,
4325; EG-NEXT:     BFE_INT T66.W, T0.Y, 0.0, literal.y,
4326; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
4327; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4328; EG-NEXT:    240(3.363116e-43), 0(0.000000e+00)
4329; EG-NEXT:     LSHR T48.X, PS, literal.x,
4330; EG-NEXT:     BFE_INT * T66.Y, PV.Z, 0.0, literal.y,
4331; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4332  %load = load <64 x i16>, <64 x i16> addrspace(4)* %in
4333  %ext = sext <64 x i16> %load to <64 x i32>
4334  store <64 x i32> %ext, <64 x i32> addrspace(1)* %out
4335  ret void
4336}
4337
4338define amdgpu_kernel void @constant_zextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(4)* %in) #0 {
4339; GCN-NOHSA-SI-LABEL: constant_zextload_i16_to_i64:
4340; GCN-NOHSA-SI:       ; %bb.0:
4341; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4342; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
4343; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
4344; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
4345; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
4346; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4347; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
4348; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
4349; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
4350; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
4351; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
4352; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
4353; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
4354; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4355; GCN-NOHSA-SI-NEXT:    s_endpgm
4356;
4357; GCN-HSA-LABEL: constant_zextload_i16_to_i64:
4358; GCN-HSA:       ; %bb.0:
4359; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4360; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4361; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4362; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4363; GCN-HSA-NEXT:    flat_load_ushort v0, v[0:1]
4364; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4365; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
4366; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
4367; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
4368; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4369; GCN-HSA-NEXT:    s_endpgm
4370;
4371; GCN-NOHSA-VI-LABEL: constant_zextload_i16_to_i64:
4372; GCN-NOHSA-VI:       ; %bb.0:
4373; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4374; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
4375; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
4376; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
4377; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
4378; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4379; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
4380; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
4381; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
4382; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
4383; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
4384; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
4385; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
4386; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
4387; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4388; GCN-NOHSA-VI-NEXT:    s_endpgm
4389;
4390; EG-LABEL: constant_zextload_i16_to_i64:
4391; EG:       ; %bb.0:
4392; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4393; EG-NEXT:    TEX 0 @6
4394; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
4395; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4396; EG-NEXT:    CF_END
4397; EG-NEXT:    PAD
4398; EG-NEXT:    Fetch clause starting at 6:
4399; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
4400; EG-NEXT:    ALU clause starting at 8:
4401; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4402; EG-NEXT:    ALU clause starting at 9:
4403; EG-NEXT:     MOV * T0.Y, 0.0,
4404; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
4405; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4406  %a = load i16, i16 addrspace(4)* %in
4407  %ext = zext i16 %a to i64
4408  store i64 %ext, i64 addrspace(1)* %out
4409  ret void
4410}
4411
4412; FIXME: Need to optimize this sequence to avoid extra bfe:
4413;  t28: i32,ch = load<LD2[%in(addrspace=1)], anyext from i16> t12, t27, undef:i64
4414;          t31: i64 = any_extend t28
4415;        t33: i64 = sign_extend_inreg t31, ValueType:ch:i16
4416; TODO: These could be expanded earlier using ASHR 15
4417define amdgpu_kernel void @constant_sextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(4)* %in) #0 {
4418; GCN-NOHSA-SI-LABEL: constant_sextload_i16_to_i64:
4419; GCN-NOHSA-SI:       ; %bb.0:
4420; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4421; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
4422; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
4423; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
4424; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
4425; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4426; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
4427; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
4428; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
4429; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
4430; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
4431; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
4432; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4433; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4434; GCN-NOHSA-SI-NEXT:    s_endpgm
4435;
4436; GCN-HSA-LABEL: constant_sextload_i16_to_i64:
4437; GCN-HSA:       ; %bb.0:
4438; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4439; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4440; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4441; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4442; GCN-HSA-NEXT:    flat_load_sshort v0, v[0:1]
4443; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4444; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
4445; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
4446; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4447; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4448; GCN-HSA-NEXT:    s_endpgm
4449;
4450; GCN-NOHSA-VI-LABEL: constant_sextload_i16_to_i64:
4451; GCN-NOHSA-VI:       ; %bb.0:
4452; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4453; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
4454; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
4455; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
4456; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
4457; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4458; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
4459; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
4460; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
4461; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
4462; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
4463; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
4464; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v0, 0, 16
4465; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4466; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4467; GCN-NOHSA-VI-NEXT:    s_endpgm
4468;
4469; EG-LABEL: constant_sextload_i16_to_i64:
4470; EG:       ; %bb.0:
4471; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4472; EG-NEXT:    TEX 0 @6
4473; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
4474; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4475; EG-NEXT:    CF_END
4476; EG-NEXT:    PAD
4477; EG-NEXT:    Fetch clause starting at 6:
4478; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
4479; EG-NEXT:    ALU clause starting at 8:
4480; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4481; EG-NEXT:    ALU clause starting at 9:
4482; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
4483; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
4484; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
4485; EG-NEXT:     ASHR * T0.Y, PV.X, literal.x,
4486; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
4487  %a = load i16, i16 addrspace(4)* %in
4488  %ext = sext i16 %a to i64
4489  store i64 %ext, i64 addrspace(1)* %out
4490  ret void
4491}
4492
4493define amdgpu_kernel void @constant_zextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(4)* %in) #0 {
4494; GCN-NOHSA-SI-LABEL: constant_zextload_v1i16_to_v1i64:
4495; GCN-NOHSA-SI:       ; %bb.0:
4496; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4497; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
4498; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
4499; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
4500; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
4501; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4502; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
4503; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
4504; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
4505; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
4506; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
4507; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
4508; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
4509; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4510; GCN-NOHSA-SI-NEXT:    s_endpgm
4511;
4512; GCN-HSA-LABEL: constant_zextload_v1i16_to_v1i64:
4513; GCN-HSA:       ; %bb.0:
4514; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4515; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4516; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4517; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4518; GCN-HSA-NEXT:    flat_load_ushort v0, v[0:1]
4519; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4520; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
4521; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
4522; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
4523; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4524; GCN-HSA-NEXT:    s_endpgm
4525;
4526; GCN-NOHSA-VI-LABEL: constant_zextload_v1i16_to_v1i64:
4527; GCN-NOHSA-VI:       ; %bb.0:
4528; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4529; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
4530; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
4531; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
4532; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
4533; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4534; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
4535; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
4536; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
4537; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
4538; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
4539; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
4540; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
4541; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
4542; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4543; GCN-NOHSA-VI-NEXT:    s_endpgm
4544;
4545; EG-LABEL: constant_zextload_v1i16_to_v1i64:
4546; EG:       ; %bb.0:
4547; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4548; EG-NEXT:    TEX 0 @6
4549; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
4550; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4551; EG-NEXT:    CF_END
4552; EG-NEXT:    PAD
4553; EG-NEXT:    Fetch clause starting at 6:
4554; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
4555; EG-NEXT:    ALU clause starting at 8:
4556; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4557; EG-NEXT:    ALU clause starting at 9:
4558; EG-NEXT:     MOV * T0.Y, 0.0,
4559; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
4560; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4561  %load = load <1 x i16>, <1 x i16> addrspace(4)* %in
4562  %ext = zext <1 x i16> %load to <1 x i64>
4563  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
4564  ret void
4565}
4566
4567define amdgpu_kernel void @constant_sextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(4)* %in) #0 {
4568; GCN-NOHSA-SI-LABEL: constant_sextload_v1i16_to_v1i64:
4569; GCN-NOHSA-SI:       ; %bb.0:
4570; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4571; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
4572; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
4573; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
4574; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
4575; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4576; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
4577; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
4578; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
4579; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
4580; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
4581; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
4582; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4583; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4584; GCN-NOHSA-SI-NEXT:    s_endpgm
4585;
4586; GCN-HSA-LABEL: constant_sextload_v1i16_to_v1i64:
4587; GCN-HSA:       ; %bb.0:
4588; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4589; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4590; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4591; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4592; GCN-HSA-NEXT:    flat_load_sshort v0, v[0:1]
4593; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4594; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
4595; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
4596; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4597; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
4598; GCN-HSA-NEXT:    s_endpgm
4599;
4600; GCN-NOHSA-VI-LABEL: constant_sextload_v1i16_to_v1i64:
4601; GCN-NOHSA-VI:       ; %bb.0:
4602; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4603; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
4604; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
4605; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
4606; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
4607; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4608; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
4609; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
4610; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
4611; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
4612; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
4613; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
4614; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v0, 0, 16
4615; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
4616; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
4617; GCN-NOHSA-VI-NEXT:    s_endpgm
4618;
4619; EG-LABEL: constant_sextload_v1i16_to_v1i64:
4620; EG:       ; %bb.0:
4621; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4622; EG-NEXT:    TEX 0 @6
4623; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
4624; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
4625; EG-NEXT:    CF_END
4626; EG-NEXT:    PAD
4627; EG-NEXT:    Fetch clause starting at 6:
4628; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
4629; EG-NEXT:    ALU clause starting at 8:
4630; EG-NEXT:     MOV * T0.X, KC0[2].Z,
4631; EG-NEXT:    ALU clause starting at 9:
4632; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
4633; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
4634; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
4635; EG-NEXT:     ASHR * T0.Y, PV.X, literal.x,
4636; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
4637  %load = load <1 x i16>, <1 x i16> addrspace(4)* %in
4638  %ext = sext <1 x i16> %load to <1 x i64>
4639  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
4640  ret void
4641}
4642
4643define amdgpu_kernel void @constant_zextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(4)* %in) #0 {
4644; GCN-NOHSA-SI-LABEL: constant_zextload_v2i16_to_v2i64:
4645; GCN-NOHSA-SI:       ; %bb.0:
4646; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4647; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4648; GCN-NOHSA-SI-NEXT:    s_load_dword s2, s[2:3], 0x0
4649; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
4650; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
4651; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4652; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s4, s2, 16
4653; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s2, 0xffff
4654; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
4655; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
4656; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
4657; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
4658; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
4659; GCN-NOHSA-SI-NEXT:    s_endpgm
4660;
4661; GCN-HSA-LABEL: constant_zextload_v2i16_to_v2i64:
4662; GCN-HSA:       ; %bb.0:
4663; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4664; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
4665; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
4666; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4667; GCN-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
4668; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4669; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4670; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4671; GCN-HSA-NEXT:    s_lshr_b32 s0, s2, 16
4672; GCN-HSA-NEXT:    s_and_b32 s1, s2, 0xffff
4673; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s1
4674; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4675; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4676; GCN-HSA-NEXT:    s_endpgm
4677;
4678; GCN-NOHSA-VI-LABEL: constant_zextload_v2i16_to_v2i64:
4679; GCN-NOHSA-VI:       ; %bb.0:
4680; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4681; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
4682; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
4683; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
4684; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
4685; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4686; GCN-NOHSA-VI-NEXT:    s_load_dword s2, s[2:3], 0x0
4687; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
4688; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
4689; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4690; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s0, s2, 16
4691; GCN-NOHSA-VI-NEXT:    s_and_b32 s1, s2, 0xffff
4692; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s1
4693; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s0
4694; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
4695; GCN-NOHSA-VI-NEXT:    s_endpgm
4696;
4697; EG-LABEL: constant_zextload_v2i16_to_v2i64:
4698; EG:       ; %bb.0:
4699; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4700; EG-NEXT:    TEX 0 @6
4701; EG-NEXT:    ALU 6, @9, KC0[CB0:0-32], KC1[]
4702; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
4703; EG-NEXT:    CF_END
4704; EG-NEXT:    PAD
4705; EG-NEXT:    Fetch clause starting at 6:
4706; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
4707; EG-NEXT:    ALU clause starting at 8:
4708; EG-NEXT:     MOV * T4.X, KC0[2].Z,
4709; EG-NEXT:    ALU clause starting at 9:
4710; EG-NEXT:     LSHR * T4.Z, T4.X, literal.x,
4711; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4712; EG-NEXT:     AND_INT T4.X, T4.X, literal.x,
4713; EG-NEXT:     MOV T4.Y, 0.0,
4714; EG-NEXT:     MOV T4.W, 0.0,
4715; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
4716; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
4717  %load = load <2 x i16>, <2 x i16> addrspace(4)* %in
4718  %ext = zext <2 x i16> %load to <2 x i64>
4719  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
4720  ret void
4721}
4722
4723define amdgpu_kernel void @constant_sextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(4)* %in) #0 {
4724; GCN-NOHSA-SI-LABEL: constant_sextload_v2i16_to_v2i64:
4725; GCN-NOHSA-SI:       ; %bb.0:
4726; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4727; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4728; GCN-NOHSA-SI-NEXT:    s_load_dword s2, s[2:3], 0x0
4729; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
4730; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4731; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s4, s2, 16
4732; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[6:7], s[2:3], 0x100000
4733; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
4734; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
4735; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
4736; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s7
4737; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
4738; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s5
4739; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
4740; GCN-NOHSA-SI-NEXT:    s_endpgm
4741;
4742; GCN-HSA-LABEL: constant_sextload_v2i16_to_v2i64:
4743; GCN-HSA:       ; %bb.0:
4744; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4745; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4746; GCN-HSA-NEXT:    s_load_dword s2, s[2:3], 0x0
4747; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4748; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4749; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4750; GCN-HSA-NEXT:    s_lshr_b32 s0, s2, 16
4751; GCN-HSA-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x100000
4752; GCN-HSA-NEXT:    s_bfe_i64 s[0:1], s[0:1], 0x100000
4753; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4754; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4755; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
4756; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
4757; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4758; GCN-HSA-NEXT:    s_endpgm
4759;
4760; GCN-NOHSA-VI-LABEL: constant_sextload_v2i16_to_v2i64:
4761; GCN-NOHSA-VI:       ; %bb.0:
4762; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4763; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4764; GCN-NOHSA-VI-NEXT:    s_load_dword s4, s[2:3], 0x0
4765; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
4766; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
4767; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4768; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[6:7], s[4:5], 0x100000
4769; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s4, 16
4770; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
4771; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
4772; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s7
4773; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
4774; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s5
4775; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
4776; GCN-NOHSA-VI-NEXT:    s_endpgm
4777;
4778; EG-LABEL: constant_sextload_v2i16_to_v2i64:
4779; EG:       ; %bb.0:
4780; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4781; EG-NEXT:    TEX 0 @6
4782; EG-NEXT:    ALU 8, @9, KC0[CB0:0-32], KC1[]
4783; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
4784; EG-NEXT:    CF_END
4785; EG-NEXT:    PAD
4786; EG-NEXT:    Fetch clause starting at 6:
4787; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
4788; EG-NEXT:    ALU clause starting at 8:
4789; EG-NEXT:     MOV * T4.X, KC0[2].Z,
4790; EG-NEXT:    ALU clause starting at 9:
4791; EG-NEXT:     ASHR * T4.W, T4.X, literal.x,
4792; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
4793; EG-NEXT:     ASHR * T4.Z, T4.X, literal.x,
4794; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4795; EG-NEXT:     BFE_INT T4.X, T4.X, 0.0, literal.x,
4796; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
4797; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
4798; EG-NEXT:     ASHR * T4.Y, PV.X, literal.x,
4799; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
4800  %load = load <2 x i16>, <2 x i16> addrspace(4)* %in
4801  %ext = sext <2 x i16> %load to <2 x i64>
4802  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
4803  ret void
4804}
4805
4806define amdgpu_kernel void @constant_zextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(4)* %in) #0 {
4807; GCN-NOHSA-SI-LABEL: constant_zextload_v4i16_to_v4i64:
4808; GCN-NOHSA-SI:       ; %bb.0:
4809; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4810; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4811; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
4812; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
4813; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
4814; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
4815; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
4816; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4817; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s6, s5, 16
4818; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s7, s4, 16
4819; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
4820; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
4821; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
4822; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s6
4823; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
4824; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
4825; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
4826; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s7
4827; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
4828; GCN-NOHSA-SI-NEXT:    s_endpgm
4829;
4830; GCN-HSA-LABEL: constant_zextload_v4i16_to_v4i64:
4831; GCN-HSA:       ; %bb.0:
4832; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4833; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
4834; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
4835; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4836; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
4837; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4838; GCN-HSA-NEXT:    s_lshr_b32 s4, s3, 16
4839; GCN-HSA-NEXT:    s_lshr_b32 s5, s2, 16
4840; GCN-HSA-NEXT:    s_and_b32 s6, s2, 0xffff
4841; GCN-HSA-NEXT:    s_and_b32 s2, s3, 0xffff
4842; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4843; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
4844; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4845; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
4846; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s4
4847; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
4848; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4849; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4850; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
4851; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s5
4852; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4853; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4854; GCN-HSA-NEXT:    s_endpgm
4855;
4856; GCN-NOHSA-VI-LABEL: constant_zextload_v4i16_to_v4i64:
4857; GCN-NOHSA-VI:       ; %bb.0:
4858; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4859; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
4860; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
4861; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
4862; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
4863; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4864; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
4865; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
4866; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
4867; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4868; GCN-NOHSA-VI-NEXT:    s_and_b32 s0, s2, 0xffff
4869; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s1, s2, 16
4870; GCN-NOHSA-VI-NEXT:    s_and_b32 s2, s3, 0xffff
4871; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s3, s3, 16
4872; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s2
4873; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
4874; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16
4875; GCN-NOHSA-VI-NEXT:    s_nop 0
4876; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s0
4877; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s1
4878; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
4879; GCN-NOHSA-VI-NEXT:    s_endpgm
4880;
4881; EG-LABEL: constant_zextload_v4i16_to_v4i64:
4882; EG:       ; %bb.0:
4883; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
4884; EG-NEXT:    TEX 0 @6
4885; EG-NEXT:    ALU 18, @9, KC0[CB0:0-32], KC1[]
4886; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T8.X, 0
4887; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T7.X, 1
4888; EG-NEXT:    CF_END
4889; EG-NEXT:    Fetch clause starting at 6:
4890; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
4891; EG-NEXT:    ALU clause starting at 8:
4892; EG-NEXT:     MOV * T5.X, KC0[2].Z,
4893; EG-NEXT:    ALU clause starting at 9:
4894; EG-NEXT:     MOV T2.X, T5.X,
4895; EG-NEXT:     MOV * T3.X, T5.Y,
4896; EG-NEXT:     MOV T0.Y, PV.X,
4897; EG-NEXT:     MOV * T0.Z, PS,
4898; EG-NEXT:     LSHR * T5.Z, PV.Z, literal.x,
4899; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4900; EG-NEXT:     AND_INT T5.X, T0.Z, literal.x,
4901; EG-NEXT:     MOV T5.Y, 0.0,
4902; EG-NEXT:     LSHR T6.Z, T0.Y, literal.y,
4903; EG-NEXT:     AND_INT * T6.X, T0.Y, literal.x,
4904; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
4905; EG-NEXT:     MOV T6.Y, 0.0,
4906; EG-NEXT:     MOV T5.W, 0.0,
4907; EG-NEXT:     MOV * T6.W, 0.0,
4908; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
4909; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4910; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4911; EG-NEXT:     LSHR * T8.X, PV.W, literal.x,
4912; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4913  %load = load <4 x i16>, <4 x i16> addrspace(4)* %in
4914  %ext = zext <4 x i16> %load to <4 x i64>
4915  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
4916  ret void
4917}
4918
4919define amdgpu_kernel void @constant_sextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(4)* %in) #0 {
4920; GCN-NOHSA-SI-LABEL: constant_sextload_v4i16_to_v4i64:
4921; GCN-NOHSA-SI:       ; %bb.0:
4922; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
4923; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4924; GCN-NOHSA-SI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
4925; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
4926; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
4927; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4928; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, s5
4929; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s8, s4, 16
4930; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[10:11], s[4:5], 0x100000
4931; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[4:5], s[4:5], 48
4932; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
4933; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x100000
4934; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
4935; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s7
4936; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
4937; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s5
4938; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
4939; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
4940; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
4941; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s11
4942; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s8
4943; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s9
4944; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
4945; GCN-NOHSA-SI-NEXT:    s_endpgm
4946;
4947; GCN-HSA-LABEL: constant_sextload_v4i16_to_v4i64:
4948; GCN-HSA:       ; %bb.0:
4949; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4950; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4951; GCN-HSA-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
4952; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4953; GCN-HSA-NEXT:    s_mov_b32 s4, s3
4954; GCN-HSA-NEXT:    s_lshr_b32 s6, s2, 16
4955; GCN-HSA-NEXT:    s_bfe_i64 s[8:9], s[2:3], 0x100000
4956; GCN-HSA-NEXT:    s_ashr_i64 s[2:3], s[2:3], 48
4957; GCN-HSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
4958; GCN-HSA-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
4959; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
4960; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
4961; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s3
4962; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4963; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
4964; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
4965; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
4966; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
4967; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4968; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4969; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
4970; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
4971; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
4972; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
4973; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4974; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4975; GCN-HSA-NEXT:    s_endpgm
4976;
4977; GCN-NOHSA-VI-LABEL: constant_sextload_v4i16_to_v4i64:
4978; GCN-NOHSA-VI:       ; %bb.0:
4979; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
4980; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4981; GCN-NOHSA-VI-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
4982; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
4983; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
4984; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4985; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s5
4986; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s10, s5, 16
4987; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[6:7], s[4:5], 0x100000
4988; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s4, 16
4989; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x100000
4990; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x100000
4991; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
4992; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
4993; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s9
4994; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s10
4995; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s11
4996; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
4997; GCN-NOHSA-VI-NEXT:    s_nop 0
4998; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s6
4999; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s7
5000; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
5001; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s5
5002; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5003; GCN-NOHSA-VI-NEXT:    s_endpgm
5004;
5005; EG-LABEL: constant_sextload_v4i16_to_v4i64:
5006; EG:       ; %bb.0:
5007; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5008; EG-NEXT:    TEX 0 @6
5009; EG-NEXT:    ALU 20, @9, KC0[CB0:0-32], KC1[]
5010; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T8.X, 0
5011; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1
5012; EG-NEXT:    CF_END
5013; EG-NEXT:    Fetch clause starting at 6:
5014; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
5015; EG-NEXT:    ALU clause starting at 8:
5016; EG-NEXT:     MOV * T5.X, KC0[2].Z,
5017; EG-NEXT:    ALU clause starting at 9:
5018; EG-NEXT:     MOV T2.X, T5.X,
5019; EG-NEXT:     MOV * T3.X, T5.Y,
5020; EG-NEXT:     MOV T0.Y, PS,
5021; EG-NEXT:     MOV * T0.Z, PV.X,
5022; EG-NEXT:     ASHR * T5.W, PV.Z, literal.x,
5023; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5024; EG-NEXT:     LSHR T6.X, KC0[2].Y, literal.x,
5025; EG-NEXT:     ASHR T5.Z, T0.Z, literal.y,
5026; EG-NEXT:     ASHR * T7.W, T0.Y, literal.z,
5027; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5028; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5029; EG-NEXT:     BFE_INT T5.X, T0.Z, 0.0, literal.x,
5030; EG-NEXT:     ASHR * T7.Z, T0.Y, literal.x,
5031; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5032; EG-NEXT:     BFE_INT T7.X, T0.Y, 0.0, literal.x,
5033; EG-NEXT:     ASHR T5.Y, PV.X, literal.y,
5034; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
5035; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5036; EG-NEXT:     LSHR T8.X, PV.W, literal.x,
5037; EG-NEXT:     ASHR * T7.Y, PV.X, literal.y,
5038; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5039  %load = load <4 x i16>, <4 x i16> addrspace(4)* %in
5040  %ext = sext <4 x i16> %load to <4 x i64>
5041  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
5042  ret void
5043}
5044
5045define amdgpu_kernel void @constant_zextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(4)* %in) #0 {
5046; GCN-NOHSA-SI-LABEL: constant_zextload_v8i16_to_v8i64:
5047; GCN-NOHSA-SI:       ; %bb.0:
5048; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5049; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5050; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5051; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
5052; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
5053; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
5054; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
5055; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5056; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s8, s5, 16
5057; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s9, s7, 16
5058; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s10, s6, 16
5059; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s11, s4, 16
5060; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
5061; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
5062; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
5063; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
5064; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s7
5065; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s9
5066; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5067; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5068; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
5069; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s8
5070; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5071; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5072; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
5073; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s10
5074; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
5075; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5076; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
5077; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s11
5078; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5079; GCN-NOHSA-SI-NEXT:    s_endpgm
5080;
5081; GCN-HSA-LABEL: constant_zextload_v8i16_to_v8i64:
5082; GCN-HSA:       ; %bb.0:
5083; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5084; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
5085; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
5086; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5087; GCN-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5088; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5089; GCN-HSA-NEXT:    s_lshr_b32 s8, s5, 16
5090; GCN-HSA-NEXT:    s_lshr_b32 s2, s7, 16
5091; GCN-HSA-NEXT:    s_lshr_b32 s9, s6, 16
5092; GCN-HSA-NEXT:    s_lshr_b32 s10, s4, 16
5093; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
5094; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
5095; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
5096; GCN-HSA-NEXT:    s_and_b32 s3, s7, 0xffff
5097; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
5098; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
5099; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s3
5100; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5101; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5102; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5103; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
5104; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5105; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5106; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5107; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5108; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
5109; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s5
5110; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s8
5111; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5112; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5113; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5114; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
5115; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s9
5116; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5117; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5118; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5119; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
5120; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s10
5121; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5122; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5123; GCN-HSA-NEXT:    s_endpgm
5124;
5125; GCN-NOHSA-VI-LABEL: constant_zextload_v8i16_to_v8i64:
5126; GCN-NOHSA-VI:       ; %bb.0:
5127; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5128; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
5129; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
5130; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5131; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5132; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
5133; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
5134; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5135; GCN-NOHSA-VI-NEXT:    s_and_b32 s11, s7, 0xffff
5136; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s7, s7, 16
5137; GCN-NOHSA-VI-NEXT:    s_and_b32 s10, s6, 0xffff
5138; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s6, 16
5139; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s11
5140; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
5141; GCN-NOHSA-VI-NEXT:    s_and_b32 s9, s5, 0xffff
5142; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s5, s5, 16
5143; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5144; GCN-NOHSA-VI-NEXT:    s_and_b32 s8, s4, 0xffff
5145; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
5146; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
5147; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s4, 16
5148; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
5149; GCN-NOHSA-VI-NEXT:    s_nop 0
5150; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s9
5151; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
5152; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5153; GCN-NOHSA-VI-NEXT:    s_nop 0
5154; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
5155; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
5156; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5157; GCN-NOHSA-VI-NEXT:    s_endpgm
5158;
5159; EG-LABEL: constant_zextload_v8i16_to_v8i64:
5160; EG:       ; %bb.0:
5161; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
5162; EG-NEXT:    TEX 0 @8
5163; EG-NEXT:    ALU 30, @11, KC0[CB0:0-32], KC1[]
5164; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T14.X, 0
5165; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T13.X, 0
5166; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T12.X, 0
5167; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T11.X, 1
5168; EG-NEXT:    CF_END
5169; EG-NEXT:    Fetch clause starting at 8:
5170; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
5171; EG-NEXT:    ALU clause starting at 10:
5172; EG-NEXT:     MOV * T7.X, KC0[2].Z,
5173; EG-NEXT:    ALU clause starting at 11:
5174; EG-NEXT:     LSHR * T8.Z, T7.W, literal.x,
5175; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5176; EG-NEXT:     AND_INT T8.X, T7.W, literal.x,
5177; EG-NEXT:     MOV T8.Y, 0.0,
5178; EG-NEXT:     LSHR T9.Z, T7.Z, literal.y,
5179; EG-NEXT:     AND_INT * T9.X, T7.Z, literal.x,
5180; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5181; EG-NEXT:     MOV T9.Y, 0.0,
5182; EG-NEXT:     LSHR * T10.Z, T7.Y, literal.x,
5183; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5184; EG-NEXT:     AND_INT T10.X, T7.Y, literal.x,
5185; EG-NEXT:     MOV T10.Y, 0.0,
5186; EG-NEXT:     LSHR T7.Z, T7.X, literal.y,
5187; EG-NEXT:     AND_INT * T7.X, T7.X, literal.x,
5188; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5189; EG-NEXT:     MOV T7.Y, 0.0,
5190; EG-NEXT:     MOV T8.W, 0.0,
5191; EG-NEXT:     MOV * T9.W, 0.0,
5192; EG-NEXT:     MOV T10.W, 0.0,
5193; EG-NEXT:     MOV * T7.W, 0.0,
5194; EG-NEXT:     LSHR T11.X, KC0[2].Y, literal.x,
5195; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5196; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5197; EG-NEXT:     LSHR T12.X, PV.W, literal.x,
5198; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5199; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
5200; EG-NEXT:     LSHR T13.X, PV.W, literal.x,
5201; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5202; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
5203; EG-NEXT:     LSHR * T14.X, PV.W, literal.x,
5204; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5205  %load = load <8 x i16>, <8 x i16> addrspace(4)* %in
5206  %ext = zext <8 x i16> %load to <8 x i64>
5207  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
5208  ret void
5209}
5210
5211define amdgpu_kernel void @constant_sextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(4)* %in) #0 {
5212; GCN-NOHSA-SI-LABEL: constant_sextload_v8i16_to_v8i64:
5213; GCN-NOHSA-SI:       ; %bb.0:
5214; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5215; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5216; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5217; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
5218; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
5219; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5220; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s7
5221; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s5
5222; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s12, s6, 16
5223; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s14, s4, 16
5224; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[16:17], s[4:5], 0x100000
5225; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[18:19], s[6:7], 0x100000
5226; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[4:5], s[4:5], 48
5227; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[6:7], s[6:7], 48
5228; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x100000
5229; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x100000
5230; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x100000
5231; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x100000
5232; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
5233; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s9
5234; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s6
5235; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s7
5236; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5237; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5238; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
5239; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s11
5240; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
5241; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s5
5242; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5243; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5244; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s18
5245; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
5246; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s16
5247; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s17
5248; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s12
5249; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s13
5250; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
5251; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s14
5252; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s15
5253; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
5254; GCN-NOHSA-SI-NEXT:    s_endpgm
5255;
5256; GCN-HSA-LABEL: constant_sextload_v8i16_to_v8i64:
5257; GCN-HSA:       ; %bb.0:
5258; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5259; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5260; GCN-HSA-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5261; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5262; GCN-HSA-NEXT:    s_mov_b32 s2, s7
5263; GCN-HSA-NEXT:    s_mov_b32 s8, s5
5264; GCN-HSA-NEXT:    s_lshr_b32 s10, s6, 16
5265; GCN-HSA-NEXT:    s_lshr_b32 s12, s4, 16
5266; GCN-HSA-NEXT:    s_bfe_i64 s[14:15], s[4:5], 0x100000
5267; GCN-HSA-NEXT:    s_bfe_i64 s[16:17], s[6:7], 0x100000
5268; GCN-HSA-NEXT:    s_ashr_i64 s[4:5], s[4:5], 48
5269; GCN-HSA-NEXT:    s_ashr_i64 s[6:7], s[6:7], 48
5270; GCN-HSA-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x100000
5271; GCN-HSA-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x100000
5272; GCN-HSA-NEXT:    s_bfe_i64 s[8:9], s[8:9], 0x100000
5273; GCN-HSA-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x100000
5274; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5275; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
5276; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5277; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5278; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5279; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5280; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
5281; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
5282; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
5283; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5284; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5285; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5286; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5287; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
5288; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
5289; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
5290; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s4
5291; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s5
5292; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5293; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5294; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5295; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s16
5296; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s17
5297; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s10
5298; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s11
5299; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5300; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5301; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5302; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s14
5303; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s15
5304; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s12
5305; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s13
5306; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5307; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5308; GCN-HSA-NEXT:    s_endpgm
5309;
5310; GCN-NOHSA-VI-LABEL: constant_sextload_v8i16_to_v8i64:
5311; GCN-NOHSA-VI:       ; %bb.0:
5312; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5313; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5314; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
5315; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
5316; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
5317; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5318; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[14:15], s[6:7], 0x100000
5319; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s6, 16
5320; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[16:17], s[6:7], 0x100000
5321; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, s7
5322; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[18:19], s[6:7], 0x100000
5323; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s7, 16
5324; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
5325; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s5
5326; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s12, s5, 16
5327; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s18
5328; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s19
5329; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
5330; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s7
5331; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[8:9], s[4:5], 0x100000
5332; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s4, 16
5333; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[10:11], s[10:11], 0x100000
5334; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x100000
5335; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5336; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
5337; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
5338; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s15
5339; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s16
5340; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s17
5341; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
5342; GCN-NOHSA-VI-NEXT:    s_nop 0
5343; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s10
5344; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s11
5345; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s12
5346; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s13
5347; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5348; GCN-NOHSA-VI-NEXT:    s_nop 0
5349; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
5350; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s9
5351; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
5352; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s5
5353; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5354; GCN-NOHSA-VI-NEXT:    s_endpgm
5355;
5356; EG-LABEL: constant_sextload_v8i16_to_v8i64:
5357; EG:       ; %bb.0:
5358; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
5359; EG-NEXT:    TEX 0 @8
5360; EG-NEXT:    ALU 33, @11, KC0[CB0:0-32], KC1[]
5361; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T7.X, 0
5362; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T11.X, 0
5363; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T9.X, 0
5364; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T8.X, 1
5365; EG-NEXT:    CF_END
5366; EG-NEXT:    Fetch clause starting at 8:
5367; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
5368; EG-NEXT:    ALU clause starting at 10:
5369; EG-NEXT:     MOV * T7.X, KC0[2].Z,
5370; EG-NEXT:    ALU clause starting at 11:
5371; EG-NEXT:     LSHR T8.X, KC0[2].Y, literal.x,
5372; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5373; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5374; EG-NEXT:     LSHR T9.X, PV.W, literal.x,
5375; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.y,
5376; EG-NEXT:     ASHR * T10.W, T7.X, literal.z,
5377; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
5378; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5379; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
5380; EG-NEXT:     ASHR T10.Z, T7.X, literal.y,
5381; EG-NEXT:     ASHR * T12.W, T7.Y, literal.z,
5382; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5383; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5384; EG-NEXT:     BFE_INT T10.X, T7.X, 0.0, literal.x,
5385; EG-NEXT:     ASHR T12.Z, T7.Y, literal.x,
5386; EG-NEXT:     ASHR * T13.W, T7.Z, literal.y,
5387; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5388; EG-NEXT:     BFE_INT T12.X, T7.Y, 0.0, literal.x,
5389; EG-NEXT:     ASHR T10.Y, PV.X, literal.y,
5390; EG-NEXT:     ASHR T13.Z, T7.Z, literal.x,
5391; EG-NEXT:     ASHR * T14.W, T7.W, literal.y,
5392; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5393; EG-NEXT:     BFE_INT T13.X, T7.Z, 0.0, literal.x,
5394; EG-NEXT:     ASHR T12.Y, PV.X, literal.y,
5395; EG-NEXT:     ASHR * T14.Z, T7.W, literal.x,
5396; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5397; EG-NEXT:     BFE_INT T14.X, T7.W, 0.0, literal.x,
5398; EG-NEXT:     ASHR T13.Y, PV.X, literal.y,
5399; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
5400; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
5401; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
5402; EG-NEXT:     LSHR T7.X, PV.W, literal.x,
5403; EG-NEXT:     ASHR * T14.Y, PV.X, literal.y,
5404; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5405  %load = load <8 x i16>, <8 x i16> addrspace(4)* %in
5406  %ext = sext <8 x i16> %load to <8 x i64>
5407  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
5408  ret void
5409}
5410
5411define amdgpu_kernel void @constant_zextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(4)* %in) #0 {
5412; GCN-NOHSA-SI-LABEL: constant_zextload_v16i16_to_v16i64:
5413; GCN-NOHSA-SI:       ; %bb.0:
5414; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5415; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5416; GCN-NOHSA-SI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
5417; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
5418; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
5419; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
5420; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
5421; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5422; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s12, s5, 16
5423; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s13, s7, 16
5424; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s14, s11, 16
5425; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s15, s9, 16
5426; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s16, s8, 16
5427; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s17, s10, 16
5428; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s18, s6, 16
5429; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s19, s4, 16
5430; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
5431; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
5432; GCN-NOHSA-SI-NEXT:    s_and_b32 s10, s10, 0xffff
5433; GCN-NOHSA-SI-NEXT:    s_and_b32 s8, s8, 0xffff
5434; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
5435; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
5436; GCN-NOHSA-SI-NEXT:    s_and_b32 s9, s9, 0xffff
5437; GCN-NOHSA-SI-NEXT:    s_and_b32 s11, s11, 0xffff
5438; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s9
5439; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s15
5440; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
5441; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5442; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s11
5443; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s14
5444; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
5445; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5446; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s7
5447; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s13
5448; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5449; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5450; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
5451; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s12
5452; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5453; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5454; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
5455; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s16
5456; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
5457; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5458; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
5459; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s17
5460; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
5461; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5462; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
5463; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s18
5464; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
5465; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5466; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
5467; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s19
5468; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5469; GCN-NOHSA-SI-NEXT:    s_endpgm
5470;
5471; GCN-HSA-LABEL: constant_zextload_v16i16_to_v16i64:
5472; GCN-HSA:       ; %bb.0:
5473; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5474; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
5475; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
5476; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5477; GCN-HSA-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
5478; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5479; GCN-HSA-NEXT:    s_lshr_b32 s12, s5, 16
5480; GCN-HSA-NEXT:    s_lshr_b32 s13, s7, 16
5481; GCN-HSA-NEXT:    s_lshr_b32 s14, s11, 16
5482; GCN-HSA-NEXT:    s_lshr_b32 s2, s9, 16
5483; GCN-HSA-NEXT:    s_lshr_b32 s15, s8, 16
5484; GCN-HSA-NEXT:    s_lshr_b32 s16, s10, 16
5485; GCN-HSA-NEXT:    s_lshr_b32 s17, s6, 16
5486; GCN-HSA-NEXT:    s_lshr_b32 s18, s4, 16
5487; GCN-HSA-NEXT:    s_and_b32 s4, s4, 0xffff
5488; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
5489; GCN-HSA-NEXT:    s_and_b32 s10, s10, 0xffff
5490; GCN-HSA-NEXT:    s_and_b32 s8, s8, 0xffff
5491; GCN-HSA-NEXT:    s_and_b32 s5, s5, 0xffff
5492; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
5493; GCN-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
5494; GCN-HSA-NEXT:    s_and_b32 s3, s9, 0xffff
5495; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
5496; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x50
5497; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s3
5498; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5499; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5500; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5501; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x70
5502; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5503; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5504; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5505; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5506; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
5507; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s11
5508; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s14
5509; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5510; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5511; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5512; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5513; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
5514; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s7
5515; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s13
5516; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5517; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5518; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5519; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5520; GCN-HSA-NEXT:    s_add_u32 s2, s0, 64
5521; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s5
5522; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s12
5523; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5524; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5525; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5526; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5527; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x60
5528; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
5529; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s15
5530; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5531; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5532; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5533; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5534; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
5535; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
5536; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s16
5537; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5538; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5539; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
5540; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
5541; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s17
5542; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
5543; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5544; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5545; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
5546; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s18
5547; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5548; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5549; GCN-HSA-NEXT:    s_endpgm
5550;
5551; GCN-NOHSA-VI-LABEL: constant_zextload_v16i16_to_v16i64:
5552; GCN-NOHSA-VI:       ; %bb.0:
5553; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5554; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
5555; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
5556; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5557; GCN-NOHSA-VI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
5558; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
5559; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
5560; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5561; GCN-NOHSA-VI-NEXT:    s_and_b32 s19, s11, 0xffff
5562; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s11, s11, 16
5563; GCN-NOHSA-VI-NEXT:    s_and_b32 s18, s10, 0xffff
5564; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s10, s10, 16
5565; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s19
5566; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
5567; GCN-NOHSA-VI-NEXT:    s_and_b32 s17, s9, 0xffff
5568; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s9, s9, 16
5569; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
5570; GCN-NOHSA-VI-NEXT:    s_and_b32 s16, s8, 0xffff
5571; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s18
5572; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s10
5573; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s8, s8, 16
5574; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
5575; GCN-NOHSA-VI-NEXT:    s_and_b32 s15, s7, 0xffff
5576; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s17
5577; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
5578; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s7, s7, 16
5579; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
5580; GCN-NOHSA-VI-NEXT:    s_and_b32 s14, s6, 0xffff
5581; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s16
5582; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s8
5583; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s6, 16
5584; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
5585; GCN-NOHSA-VI-NEXT:    s_and_b32 s13, s5, 0xffff
5586; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s15
5587; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
5588; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s5, s5, 16
5589; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5590; GCN-NOHSA-VI-NEXT:    s_and_b32 s12, s4, 0xffff
5591; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
5592; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
5593; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s4, 16
5594; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
5595; GCN-NOHSA-VI-NEXT:    s_nop 0
5596; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s13
5597; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
5598; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5599; GCN-NOHSA-VI-NEXT:    s_nop 0
5600; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
5601; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
5602; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
5603; GCN-NOHSA-VI-NEXT:    s_endpgm
5604;
5605; EG-LABEL: constant_zextload_v16i16_to_v16i64:
5606; EG:       ; %bb.0:
5607; EG-NEXT:    ALU 0, @16, KC0[CB0:0-32], KC1[]
5608; EG-NEXT:    TEX 1 @12
5609; EG-NEXT:    ALU 62, @17, KC0[CB0:0-32], KC1[]
5610; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T26.X, 0
5611; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T25.X, 0
5612; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T24.X, 0
5613; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T23.X, 0
5614; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T22.X, 0
5615; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T21.X, 0
5616; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T20.X, 0
5617; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T19.X, 1
5618; EG-NEXT:    CF_END
5619; EG-NEXT:    Fetch clause starting at 12:
5620; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
5621; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
5622; EG-NEXT:    ALU clause starting at 16:
5623; EG-NEXT:     MOV * T11.X, KC0[2].Z,
5624; EG-NEXT:    ALU clause starting at 17:
5625; EG-NEXT:     LSHR * T13.Z, T12.W, literal.x,
5626; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5627; EG-NEXT:     AND_INT T13.X, T12.W, literal.x,
5628; EG-NEXT:     MOV T13.Y, 0.0,
5629; EG-NEXT:     LSHR T14.Z, T12.Z, literal.y,
5630; EG-NEXT:     AND_INT * T14.X, T12.Z, literal.x,
5631; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5632; EG-NEXT:     MOV T14.Y, 0.0,
5633; EG-NEXT:     LSHR * T15.Z, T12.Y, literal.x,
5634; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5635; EG-NEXT:     AND_INT T15.X, T12.Y, literal.x,
5636; EG-NEXT:     MOV T15.Y, 0.0,
5637; EG-NEXT:     LSHR T12.Z, T12.X, literal.y,
5638; EG-NEXT:     AND_INT * T12.X, T12.X, literal.x,
5639; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5640; EG-NEXT:     MOV T12.Y, 0.0,
5641; EG-NEXT:     LSHR * T16.Z, T11.W, literal.x,
5642; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5643; EG-NEXT:     AND_INT T16.X, T11.W, literal.x,
5644; EG-NEXT:     MOV T16.Y, 0.0,
5645; EG-NEXT:     LSHR T17.Z, T11.Z, literal.y,
5646; EG-NEXT:     AND_INT * T17.X, T11.Z, literal.x,
5647; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5648; EG-NEXT:     MOV T17.Y, 0.0,
5649; EG-NEXT:     LSHR * T18.Z, T11.Y, literal.x,
5650; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5651; EG-NEXT:     AND_INT T18.X, T11.Y, literal.x,
5652; EG-NEXT:     MOV T18.Y, 0.0,
5653; EG-NEXT:     LSHR T11.Z, T11.X, literal.y,
5654; EG-NEXT:     AND_INT * T11.X, T11.X, literal.x,
5655; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5656; EG-NEXT:     MOV T11.Y, 0.0,
5657; EG-NEXT:     MOV T13.W, 0.0,
5658; EG-NEXT:     MOV * T14.W, 0.0,
5659; EG-NEXT:     MOV T15.W, 0.0,
5660; EG-NEXT:     MOV * T12.W, 0.0,
5661; EG-NEXT:     MOV T16.W, 0.0,
5662; EG-NEXT:     MOV * T17.W, 0.0,
5663; EG-NEXT:     MOV T18.W, 0.0,
5664; EG-NEXT:     MOV * T11.W, 0.0,
5665; EG-NEXT:     LSHR T19.X, KC0[2].Y, literal.x,
5666; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5667; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5668; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
5669; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5670; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
5671; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
5672; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5673; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
5674; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
5675; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5676; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
5677; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
5678; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5679; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
5680; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
5681; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5682; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
5683; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
5684; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5685; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
5686; EG-NEXT:     LSHR * T26.X, PV.W, literal.x,
5687; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5688  %load = load <16 x i16>, <16 x i16> addrspace(4)* %in
5689  %ext = zext <16 x i16> %load to <16 x i64>
5690  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
5691  ret void
5692}
5693
5694define amdgpu_kernel void @constant_sextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(4)* %in) #0 {
5695; GCN-NOHSA-SI-LABEL: constant_sextload_v16i16_to_v16i64:
5696; GCN-NOHSA-SI:       ; %bb.0:
5697; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5698; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5699; GCN-NOHSA-SI-NEXT:    s_load_dwordx8 s[4:11], s[2:3], 0x0
5700; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
5701; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
5702; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5703; GCN-NOHSA-SI-NEXT:    s_mov_b32 s12, s11
5704; GCN-NOHSA-SI-NEXT:    s_mov_b32 s14, s9
5705; GCN-NOHSA-SI-NEXT:    s_mov_b32 s16, s7
5706; GCN-NOHSA-SI-NEXT:    s_mov_b32 s18, s5
5707; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s20, s10, 16
5708; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s22, s8, 16
5709; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s24, s6, 16
5710; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s26, s4, 16
5711; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[28:29], s[4:5], 0x100000
5712; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[30:31], s[6:7], 0x100000
5713; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[34:35], s[8:9], 0x100000
5714; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[36:37], s[10:11], 0x100000
5715; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[4:5], s[4:5], 48
5716; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[6:7], s[6:7], 48
5717; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[8:9], s[8:9], 48
5718; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[10:11], s[10:11], 48
5719; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x100000
5720; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x100000
5721; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x100000
5722; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[12:13], s[12:13], 0x100000
5723; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[26:27], s[26:27], 0x100000
5724; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x100000
5725; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x100000
5726; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x100000
5727; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
5728; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s13
5729; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s10
5730; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s11
5731; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
5732; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5733; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
5734; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s15
5735; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s8
5736; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s9
5737; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
5738; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5739; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s16
5740; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s17
5741; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s6
5742; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s7
5743; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
5744; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5745; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s18
5746; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
5747; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
5748; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s5
5749; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
5750; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
5751; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s36
5752; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s37
5753; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s34
5754; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s35
5755; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s30
5756; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s31
5757; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, s28
5758; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, s29
5759; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s20
5760; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s21
5761; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
5762; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s22
5763; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s23
5764; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:64
5765; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s24
5766; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s25
5767; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:32
5768; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v14, s26
5769; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, s27
5770; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0
5771; GCN-NOHSA-SI-NEXT:    s_endpgm
5772;
5773; GCN-HSA-LABEL: constant_sextload_v16i16_to_v16i64:
5774; GCN-HSA:       ; %bb.0:
5775; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5776; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5777; GCN-HSA-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x0
5778; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5779; GCN-HSA-NEXT:    s_mov_b32 s6, s15
5780; GCN-HSA-NEXT:    s_mov_b32 s16, s13
5781; GCN-HSA-NEXT:    s_mov_b32 s18, s11
5782; GCN-HSA-NEXT:    s_mov_b32 s20, s9
5783; GCN-HSA-NEXT:    s_lshr_b32 s22, s14, 16
5784; GCN-HSA-NEXT:    s_lshr_b32 s24, s12, 16
5785; GCN-HSA-NEXT:    s_lshr_b32 s26, s10, 16
5786; GCN-HSA-NEXT:    s_lshr_b32 s28, s8, 16
5787; GCN-HSA-NEXT:    s_bfe_i64 s[34:35], s[14:15], 0x100000
5788; GCN-HSA-NEXT:    s_ashr_i64 s[14:15], s[14:15], 48
5789; GCN-HSA-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
5790; GCN-HSA-NEXT:    s_bfe_i64 s[2:3], s[8:9], 0x100000
5791; GCN-HSA-NEXT:    s_bfe_i64 s[4:5], s[10:11], 0x100000
5792; GCN-HSA-NEXT:    s_bfe_i64 s[30:31], s[12:13], 0x100000
5793; GCN-HSA-NEXT:    s_ashr_i64 s[8:9], s[8:9], 48
5794; GCN-HSA-NEXT:    s_ashr_i64 s[10:11], s[10:11], 48
5795; GCN-HSA-NEXT:    s_ashr_i64 s[12:13], s[12:13], 48
5796; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
5797; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s7
5798; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s14
5799; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s15
5800; GCN-HSA-NEXT:    s_bfe_i64 s[6:7], s[28:29], 0x100000
5801; GCN-HSA-NEXT:    s_bfe_i64 s[14:15], s[26:27], 0x100000
5802; GCN-HSA-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x100000
5803; GCN-HSA-NEXT:    s_bfe_i64 s[22:23], s[22:23], 0x100000
5804; GCN-HSA-NEXT:    s_bfe_i64 s[20:21], s[20:21], 0x100000
5805; GCN-HSA-NEXT:    s_bfe_i64 s[18:19], s[18:19], 0x100000
5806; GCN-HSA-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x100000
5807; GCN-HSA-NEXT:    s_add_u32 s26, s0, 0x70
5808; GCN-HSA-NEXT:    s_addc_u32 s27, s1, 0
5809; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s26
5810; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s12
5811; GCN-HSA-NEXT:    s_add_u32 s12, s0, 0x50
5812; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s27
5813; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s13
5814; GCN-HSA-NEXT:    s_addc_u32 s13, s1, 0
5815; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s12
5816; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
5817; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s17
5818; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s13
5819; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]
5820; GCN-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]
5821; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s10
5822; GCN-HSA-NEXT:    s_add_u32 s10, s0, 48
5823; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s11
5824; GCN-HSA-NEXT:    s_addc_u32 s11, s1, 0
5825; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s10
5826; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s18
5827; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s19
5828; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s11
5829; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5830; GCN-HSA-NEXT:    s_nop 0
5831; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s8
5832; GCN-HSA-NEXT:    s_add_u32 s8, s0, 16
5833; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s9
5834; GCN-HSA-NEXT:    s_addc_u32 s9, s1, 0
5835; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s8
5836; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s20
5837; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
5838; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s9
5839; GCN-HSA-NEXT:    s_add_u32 s8, s0, 0x60
5840; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5841; GCN-HSA-NEXT:    s_addc_u32 s9, s1, 0
5842; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s8
5843; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s34
5844; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s35
5845; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s22
5846; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s23
5847; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s9
5848; GCN-HSA-NEXT:    s_add_u32 s8, s0, 64
5849; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5850; GCN-HSA-NEXT:    s_addc_u32 s9, s1, 0
5851; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s8
5852; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s30
5853; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s31
5854; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s24
5855; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s25
5856; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s9
5857; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5858; GCN-HSA-NEXT:    s_nop 0
5859; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
5860; GCN-HSA-NEXT:    s_add_u32 s4, s0, 32
5861; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
5862; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
5863; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
5864; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s14
5865; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s15
5866; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
5867; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5868; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5869; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5870; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5871; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
5872; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
5873; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5874; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5875; GCN-HSA-NEXT:    s_endpgm
5876;
5877; GCN-NOHSA-VI-LABEL: constant_sextload_v16i16_to_v16i64:
5878; GCN-NOHSA-VI:       ; %bb.0:
5879; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x24
5880; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5881; GCN-NOHSA-VI-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
5882; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, 0xf000
5883; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, -1
5884; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5885; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[30:31], s[6:7], 0x100000
5886; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s6, 16
5887; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[34:35], s[6:7], 0x100000
5888; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, s7
5889; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[24:25], s[4:5], 0x100000
5890; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s4, 16
5891; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[36:37], s[6:7], 0x100000
5892; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s7, 16
5893; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[26:27], s[4:5], 0x100000
5894; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s5
5895; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[6:7], s[6:7], 0x100000
5896; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[18:19], s[2:3], 0x100000
5897; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s2, 16
5898; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[28:29], s[4:5], 0x100000
5899; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s5, 16
5900; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s36
5901; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s37
5902; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
5903; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s7
5904; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[20:21], s[2:3], 0x100000
5905; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, s3
5906; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[4:5], s[4:5], 0x100000
5907; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:112
5908; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[22:23], s[2:3], 0x100000
5909; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s30
5910; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s31
5911; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s34
5912; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s35
5913; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s3, 16
5914; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:96
5915; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[2:3], s[2:3], 0x100000
5916; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s28
5917; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s29
5918; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
5919; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s5
5920; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:80
5921; GCN-NOHSA-VI-NEXT:    s_mov_b32 s14, s1
5922; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s24
5923; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s25
5924; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s26
5925; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s27
5926; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s16, s1, 16
5927; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:64
5928; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[12:13], s[0:1], 0x100000
5929; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s22
5930; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s23
5931; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
5932; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s3
5933; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s0, s0, 16
5934; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[14:15], s[14:15], 0x100000
5935; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[16:17], s[16:17], 0x100000
5936; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:48
5937; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[0:1], s[0:1], 0x100000
5938; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s18
5939; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s19
5940; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s20
5941; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s21
5942; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:32
5943; GCN-NOHSA-VI-NEXT:    s_nop 0
5944; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
5945; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s15
5946; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s16
5947; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s17
5948; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16
5949; GCN-NOHSA-VI-NEXT:    s_nop 0
5950; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s12
5951; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s13
5952; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s0
5953; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s1
5954; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
5955; GCN-NOHSA-VI-NEXT:    s_endpgm
5956;
5957; EG-LABEL: constant_sextload_v16i16_to_v16i64:
5958; EG:       ; %bb.0:
5959; EG-NEXT:    ALU 0, @16, KC0[CB0:0-32], KC1[]
5960; EG-NEXT:    TEX 1 @12
5961; EG-NEXT:    ALU 65, @17, KC0[CB0:0-32], KC1[]
5962; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T12.X, 0
5963; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T20.X, 0
5964; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T18.X, 0
5965; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T17.X, 0
5966; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T16.X, 0
5967; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T15.X, 0
5968; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T14.X, 0
5969; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T13.X, 1
5970; EG-NEXT:    CF_END
5971; EG-NEXT:    Fetch clause starting at 12:
5972; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
5973; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
5974; EG-NEXT:    ALU clause starting at 16:
5975; EG-NEXT:     MOV * T11.X, KC0[2].Z,
5976; EG-NEXT:    ALU clause starting at 17:
5977; EG-NEXT:     LSHR T13.X, KC0[2].Y, literal.x,
5978; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5979; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5980; EG-NEXT:     LSHR T14.X, PV.W, literal.x,
5981; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5982; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
5983; EG-NEXT:     LSHR T15.X, PV.W, literal.x,
5984; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5985; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
5986; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
5987; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5988; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
5989; EG-NEXT:     LSHR T17.X, PV.W, literal.x,
5990; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5991; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
5992; EG-NEXT:     LSHR T18.X, PV.W, literal.x,
5993; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.y,
5994; EG-NEXT:     ASHR * T19.W, T11.X, literal.z,
5995; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
5996; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5997; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
5998; EG-NEXT:     ASHR T19.Z, T11.X, literal.y,
5999; EG-NEXT:     ASHR * T21.W, T11.Y, literal.z,
6000; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6001; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6002; EG-NEXT:     BFE_INT T19.X, T11.X, 0.0, literal.x,
6003; EG-NEXT:     ASHR T21.Z, T11.Y, literal.x,
6004; EG-NEXT:     ASHR * T22.W, T11.Z, literal.y,
6005; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6006; EG-NEXT:     BFE_INT T21.X, T11.Y, 0.0, literal.x,
6007; EG-NEXT:     ASHR T19.Y, PV.X, literal.y,
6008; EG-NEXT:     ASHR T22.Z, T11.Z, literal.x,
6009; EG-NEXT:     ASHR * T23.W, T11.W, literal.y,
6010; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6011; EG-NEXT:     BFE_INT T22.X, T11.Z, 0.0, literal.x,
6012; EG-NEXT:     ASHR T21.Y, PV.X, literal.y,
6013; EG-NEXT:     ASHR T23.Z, T11.W, literal.x,
6014; EG-NEXT:     ASHR * T24.W, T12.X, literal.y,
6015; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6016; EG-NEXT:     BFE_INT T23.X, T11.W, 0.0, literal.x,
6017; EG-NEXT:     ASHR T22.Y, PV.X, literal.y,
6018; EG-NEXT:     ASHR T24.Z, T12.X, literal.x,
6019; EG-NEXT:     ASHR * T11.W, T12.Y, literal.y,
6020; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6021; EG-NEXT:     BFE_INT T24.X, T12.X, 0.0, literal.x,
6022; EG-NEXT:     ASHR T23.Y, PV.X, literal.y,
6023; EG-NEXT:     ASHR T11.Z, T12.Y, literal.x,
6024; EG-NEXT:     ASHR * T25.W, T12.Z, literal.y,
6025; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6026; EG-NEXT:     BFE_INT T11.X, T12.Y, 0.0, literal.x,
6027; EG-NEXT:     ASHR T24.Y, PV.X, literal.y,
6028; EG-NEXT:     ASHR T25.Z, T12.Z, literal.x,
6029; EG-NEXT:     ASHR * T26.W, T12.W, literal.y,
6030; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6031; EG-NEXT:     BFE_INT T25.X, T12.Z, 0.0, literal.x,
6032; EG-NEXT:     ASHR T11.Y, PV.X, literal.y,
6033; EG-NEXT:     ASHR * T26.Z, T12.W, literal.x,
6034; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6035; EG-NEXT:     BFE_INT T26.X, T12.W, 0.0, literal.x,
6036; EG-NEXT:     ASHR T25.Y, PV.X, literal.y,
6037; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
6038; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6039; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
6040; EG-NEXT:     LSHR T12.X, PV.W, literal.x,
6041; EG-NEXT:     ASHR * T26.Y, PV.X, literal.y,
6042; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6043  %load = load <16 x i16>, <16 x i16> addrspace(4)* %in
6044  %ext = sext <16 x i16> %load to <16 x i64>
6045  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
6046  ret void
6047}
6048
6049define amdgpu_kernel void @constant_zextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(4)* %in) #0 {
6050; GCN-NOHSA-SI-LABEL: constant_zextload_v32i16_to_v32i64:
6051; GCN-NOHSA-SI:       ; %bb.0:
6052; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
6053; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6054; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[4:19], s[2:3], 0x0
6055; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6056; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s20, s5, 16
6057; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s21, s7, 16
6058; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s22, s9, 16
6059; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s23, s11, 16
6060; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s24, s13, 16
6061; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s25, s15, 16
6062; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s26, s17, 16
6063; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s27, s19, 16
6064; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s28, s18, 16
6065; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s29, s16, 16
6066; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s30, s14, 16
6067; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s31, s12, 16
6068; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s33, s10, 16
6069; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s34, s8, 16
6070; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s35, s6, 16
6071; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s36, s4, 16
6072; GCN-NOHSA-SI-NEXT:    s_and_b32 s4, s4, 0xffff
6073; GCN-NOHSA-SI-NEXT:    s_and_b32 s6, s6, 0xffff
6074; GCN-NOHSA-SI-NEXT:    s_and_b32 s8, s8, 0xffff
6075; GCN-NOHSA-SI-NEXT:    s_and_b32 s10, s10, 0xffff
6076; GCN-NOHSA-SI-NEXT:    s_and_b32 s12, s12, 0xffff
6077; GCN-NOHSA-SI-NEXT:    s_and_b32 s14, s14, 0xffff
6078; GCN-NOHSA-SI-NEXT:    s_and_b32 s16, s16, 0xffff
6079; GCN-NOHSA-SI-NEXT:    s_and_b32 s18, s18, 0xffff
6080; GCN-NOHSA-SI-NEXT:    s_and_b32 s5, s5, 0xffff
6081; GCN-NOHSA-SI-NEXT:    s_and_b32 s7, s7, 0xffff
6082; GCN-NOHSA-SI-NEXT:    s_and_b32 s9, s9, 0xffff
6083; GCN-NOHSA-SI-NEXT:    s_and_b32 s11, s11, 0xffff
6084; GCN-NOHSA-SI-NEXT:    s_and_b32 s13, s13, 0xffff
6085; GCN-NOHSA-SI-NEXT:    s_and_b32 s15, s15, 0xffff
6086; GCN-NOHSA-SI-NEXT:    s_and_b32 s17, s17, 0xffff
6087; GCN-NOHSA-SI-NEXT:    s_and_b32 s19, s19, 0xffff
6088; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
6089; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
6090; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
6091; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
6092; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s19
6093; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s27
6094; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
6095; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6096; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s17
6097; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s26
6098; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:208
6099; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6100; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s15
6101; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s25
6102; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
6103; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6104; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s13
6105; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s24
6106; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
6107; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6108; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s11
6109; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s23
6110; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
6111; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6112; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s9
6113; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s22
6114; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
6115; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6116; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s7
6117; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s21
6118; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
6119; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6120; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s5
6121; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s20
6122; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
6123; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6124; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s18
6125; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s28
6126; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224
6127; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6128; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s16
6129; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s29
6130; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:192
6131; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6132; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s14
6133; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s30
6134; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160
6135; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6136; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s12
6137; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s31
6138; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
6139; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6140; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s10
6141; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s33
6142; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
6143; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6144; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s8
6145; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s34
6146; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
6147; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6148; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s6
6149; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s35
6150; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
6151; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6152; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s4
6153; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s36
6154; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
6155; GCN-NOHSA-SI-NEXT:    s_endpgm
6156;
6157; GCN-HSA-LABEL: constant_zextload_v32i16_to_v32i64:
6158; GCN-HSA:       ; %bb.0:
6159; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
6160; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
6161; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
6162; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6163; GCN-HSA-NEXT:    s_load_dwordx16 s[4:19], s[2:3], 0x0
6164; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6165; GCN-HSA-NEXT:    s_lshr_b32 s3, s5, 16
6166; GCN-HSA-NEXT:    s_lshr_b32 s20, s7, 16
6167; GCN-HSA-NEXT:    s_lshr_b32 s21, s9, 16
6168; GCN-HSA-NEXT:    s_lshr_b32 s22, s11, 16
6169; GCN-HSA-NEXT:    s_lshr_b32 s23, s13, 16
6170; GCN-HSA-NEXT:    s_lshr_b32 s24, s15, 16
6171; GCN-HSA-NEXT:    s_lshr_b32 s25, s17, 16
6172; GCN-HSA-NEXT:    s_lshr_b32 s26, s19, 16
6173; GCN-HSA-NEXT:    s_lshr_b32 s27, s18, 16
6174; GCN-HSA-NEXT:    s_lshr_b32 s28, s16, 16
6175; GCN-HSA-NEXT:    s_lshr_b32 s29, s14, 16
6176; GCN-HSA-NEXT:    s_lshr_b32 s30, s12, 16
6177; GCN-HSA-NEXT:    s_lshr_b32 s31, s10, 16
6178; GCN-HSA-NEXT:    s_lshr_b32 s33, s8, 16
6179; GCN-HSA-NEXT:    s_lshr_b32 s34, s6, 16
6180; GCN-HSA-NEXT:    s_lshr_b32 s2, s4, 16
6181; GCN-HSA-NEXT:    s_and_b32 s35, s4, 0xffff
6182; GCN-HSA-NEXT:    s_and_b32 s6, s6, 0xffff
6183; GCN-HSA-NEXT:    s_and_b32 s8, s8, 0xffff
6184; GCN-HSA-NEXT:    s_and_b32 s10, s10, 0xffff
6185; GCN-HSA-NEXT:    s_and_b32 s12, s12, 0xffff
6186; GCN-HSA-NEXT:    s_and_b32 s14, s14, 0xffff
6187; GCN-HSA-NEXT:    s_and_b32 s16, s16, 0xffff
6188; GCN-HSA-NEXT:    s_and_b32 s18, s18, 0xffff
6189; GCN-HSA-NEXT:    s_and_b32 s36, s5, 0xffff
6190; GCN-HSA-NEXT:    s_and_b32 s7, s7, 0xffff
6191; GCN-HSA-NEXT:    s_and_b32 s9, s9, 0xffff
6192; GCN-HSA-NEXT:    s_and_b32 s11, s11, 0xffff
6193; GCN-HSA-NEXT:    s_and_b32 s13, s13, 0xffff
6194; GCN-HSA-NEXT:    s_and_b32 s15, s15, 0xffff
6195; GCN-HSA-NEXT:    s_and_b32 s17, s17, 0xffff
6196; GCN-HSA-NEXT:    s_and_b32 s19, s19, 0xffff
6197; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0xf0
6198; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6199; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6200; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6201; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0xd0
6202; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6203; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s5
6204; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s4
6205; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0xb0
6206; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6207; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s5
6208; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s4
6209; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0x90
6210; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6211; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s19
6212; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s26
6213; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s5
6214; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6215; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s4
6216; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s17
6217; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s25
6218; GCN-HSA-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
6219; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0x70
6220; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s15
6221; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s24
6222; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]
6223; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6224; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s13
6225; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s23
6226; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6227; GCN-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
6228; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6229; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s11
6230; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s22
6231; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0x50
6232; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6233; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6234; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6235; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s9
6236; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s21
6237; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6238; GCN-HSA-NEXT:    s_add_u32 s4, s0, 48
6239; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6240; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6241; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6242; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s7
6243; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s20
6244; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6245; GCN-HSA-NEXT:    s_add_u32 s4, s0, 16
6246; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6247; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6248; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6249; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s36
6250; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s3
6251; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6252; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0xe0
6253; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6254; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6255; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6256; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s18
6257; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s27
6258; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6259; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0xc0
6260; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6261; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6262; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6263; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s16
6264; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s28
6265; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6266; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0xa0
6267; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6268; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6269; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6270; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s14
6271; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s29
6272; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6273; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0x80
6274; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6275; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6276; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6277; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s12
6278; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s30
6279; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6280; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0x60
6281; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6282; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6283; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6284; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s10
6285; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s31
6286; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6287; GCN-HSA-NEXT:    s_add_u32 s4, s0, 64
6288; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6289; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6290; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6291; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
6292; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s33
6293; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6294; GCN-HSA-NEXT:    s_add_u32 s4, s0, 32
6295; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6296; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6297; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6298; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
6299; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s34
6300; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6301; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6302; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
6303; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s35
6304; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
6305; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
6306; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6307; GCN-HSA-NEXT:    s_endpgm
6308;
6309; GCN-NOHSA-VI-LABEL: constant_zextload_v32i16_to_v32i64:
6310; GCN-NOHSA-VI:       ; %bb.0:
6311; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
6312; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
6313; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
6314; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6315; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
6316; GCN-NOHSA-VI-NEXT:    s_mov_b32 s19, 0xf000
6317; GCN-NOHSA-VI-NEXT:    s_mov_b32 s18, -1
6318; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6319; GCN-NOHSA-VI-NEXT:    s_and_b32 s36, s15, 0xffff
6320; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s15, s15, 16
6321; GCN-NOHSA-VI-NEXT:    s_and_b32 s35, s14, 0xffff
6322; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s14, s14, 16
6323; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s36
6324; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s15
6325; GCN-NOHSA-VI-NEXT:    s_and_b32 s34, s13, 0xffff
6326; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s13, s13, 16
6327; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:240
6328; GCN-NOHSA-VI-NEXT:    s_and_b32 s33, s12, 0xffff
6329; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s35
6330; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s14
6331; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s12, s12, 16
6332; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:224
6333; GCN-NOHSA-VI-NEXT:    s_and_b32 s31, s11, 0xffff
6334; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s34
6335; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s13
6336; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s11, s11, 16
6337; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:208
6338; GCN-NOHSA-VI-NEXT:    s_and_b32 s30, s10, 0xffff
6339; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s33
6340; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s12
6341; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s10, s10, 16
6342; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:192
6343; GCN-NOHSA-VI-NEXT:    s_and_b32 s29, s9, 0xffff
6344; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s31
6345; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s11
6346; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s9, s9, 16
6347; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:176
6348; GCN-NOHSA-VI-NEXT:    s_and_b32 s28, s8, 0xffff
6349; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s30
6350; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s10
6351; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s8, s8, 16
6352; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:160
6353; GCN-NOHSA-VI-NEXT:    s_and_b32 s27, s7, 0xffff
6354; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s29
6355; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s9
6356; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s7, s7, 16
6357; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:144
6358; GCN-NOHSA-VI-NEXT:    s_and_b32 s26, s6, 0xffff
6359; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s28
6360; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s8
6361; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s6, s6, 16
6362; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:128
6363; GCN-NOHSA-VI-NEXT:    s_and_b32 s25, s5, 0xffff
6364; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s27
6365; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s7
6366; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s5, s5, 16
6367; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:112
6368; GCN-NOHSA-VI-NEXT:    s_and_b32 s24, s4, 0xffff
6369; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s26
6370; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
6371; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s4, s4, 16
6372; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:96
6373; GCN-NOHSA-VI-NEXT:    s_and_b32 s23, s3, 0xffff
6374; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s25
6375; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s5
6376; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s3, s3, 16
6377; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:80
6378; GCN-NOHSA-VI-NEXT:    s_and_b32 s22, s2, 0xffff
6379; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s24
6380; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
6381; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s2, s2, 16
6382; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:64
6383; GCN-NOHSA-VI-NEXT:    s_and_b32 s21, s1, 0xffff
6384; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s23
6385; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s3
6386; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s1, s1, 16
6387; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:48
6388; GCN-NOHSA-VI-NEXT:    s_and_b32 s20, s0, 0xffff
6389; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s22
6390; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s2
6391; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s0, s0, 16
6392; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:32
6393; GCN-NOHSA-VI-NEXT:    s_nop 0
6394; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s21
6395; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s1
6396; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:16
6397; GCN-NOHSA-VI-NEXT:    s_nop 0
6398; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s20
6399; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s0
6400; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0
6401; GCN-NOHSA-VI-NEXT:    s_endpgm
6402;
6403; EG-LABEL: constant_zextload_v32i16_to_v32i64:
6404; EG:       ; %bb.0:
6405; EG-NEXT:    ALU 0, @30, KC0[CB0:0-32], KC1[]
6406; EG-NEXT:    TEX 2 @22
6407; EG-NEXT:    ALU 33, @31, KC0[], KC1[]
6408; EG-NEXT:    TEX 0 @28
6409; EG-NEXT:    ALU 92, @65, KC0[CB0:0-32], KC1[]
6410; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T50.X, 0
6411; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T49.X, 0
6412; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T48.X, 0
6413; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T47.X, 0
6414; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T46.X, 0
6415; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T45.X, 0
6416; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T44.X, 0
6417; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T43.X, 0
6418; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T42.X, 0
6419; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T41.X, 0
6420; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T40.X, 0
6421; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T39.X, 0
6422; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T38.X, 0
6423; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T37.X, 0
6424; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T36.X, 0
6425; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T35.X, 1
6426; EG-NEXT:    CF_END
6427; EG-NEXT:    Fetch clause starting at 22:
6428; EG-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 48, #1
6429; EG-NEXT:     VTX_READ_128 T21.XYZW, T19.X, 16, #1
6430; EG-NEXT:     VTX_READ_128 T22.XYZW, T19.X, 32, #1
6431; EG-NEXT:    Fetch clause starting at 28:
6432; EG-NEXT:     VTX_READ_128 T29.XYZW, T19.X, 0, #1
6433; EG-NEXT:    ALU clause starting at 30:
6434; EG-NEXT:     MOV * T19.X, KC0[2].Z,
6435; EG-NEXT:    ALU clause starting at 31:
6436; EG-NEXT:     LSHR * T23.Z, T20.W, literal.x,
6437; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6438; EG-NEXT:     AND_INT T23.X, T20.W, literal.x,
6439; EG-NEXT:     MOV T23.Y, 0.0,
6440; EG-NEXT:     LSHR T24.Z, T20.Z, literal.y,
6441; EG-NEXT:     AND_INT * T24.X, T20.Z, literal.x,
6442; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6443; EG-NEXT:     MOV T24.Y, 0.0,
6444; EG-NEXT:     LSHR * T25.Z, T20.Y, literal.x,
6445; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6446; EG-NEXT:     AND_INT T25.X, T20.Y, literal.x,
6447; EG-NEXT:     MOV T25.Y, 0.0,
6448; EG-NEXT:     LSHR T20.Z, T20.X, literal.y,
6449; EG-NEXT:     AND_INT * T20.X, T20.X, literal.x,
6450; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6451; EG-NEXT:     MOV T20.Y, 0.0,
6452; EG-NEXT:     LSHR * T26.Z, T22.W, literal.x,
6453; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6454; EG-NEXT:     AND_INT T26.X, T22.W, literal.x,
6455; EG-NEXT:     MOV T26.Y, 0.0,
6456; EG-NEXT:     LSHR T27.Z, T22.Z, literal.y,
6457; EG-NEXT:     AND_INT * T27.X, T22.Z, literal.x,
6458; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6459; EG-NEXT:     MOV T27.Y, 0.0,
6460; EG-NEXT:     LSHR * T28.Z, T22.Y, literal.x,
6461; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6462; EG-NEXT:     AND_INT T28.X, T22.Y, literal.x,
6463; EG-NEXT:     MOV T28.Y, 0.0,
6464; EG-NEXT:     LSHR T22.Z, T22.X, literal.y,
6465; EG-NEXT:     AND_INT * T22.X, T22.X, literal.x,
6466; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6467; EG-NEXT:     MOV T22.Y, 0.0,
6468; EG-NEXT:     LSHR * T19.Z, T21.W, literal.x,
6469; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6470; EG-NEXT:    ALU clause starting at 65:
6471; EG-NEXT:     AND_INT T19.X, T21.W, literal.x,
6472; EG-NEXT:     MOV T19.Y, 0.0,
6473; EG-NEXT:     LSHR T30.Z, T21.Z, literal.y,
6474; EG-NEXT:     AND_INT * T30.X, T21.Z, literal.x,
6475; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6476; EG-NEXT:     MOV T30.Y, 0.0,
6477; EG-NEXT:     LSHR * T31.Z, T21.Y, literal.x,
6478; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6479; EG-NEXT:     AND_INT T31.X, T21.Y, literal.x,
6480; EG-NEXT:     MOV T31.Y, 0.0,
6481; EG-NEXT:     LSHR T21.Z, T21.X, literal.y,
6482; EG-NEXT:     AND_INT * T21.X, T21.X, literal.x,
6483; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6484; EG-NEXT:     MOV T21.Y, 0.0,
6485; EG-NEXT:     LSHR * T32.Z, T29.W, literal.x,
6486; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6487; EG-NEXT:     AND_INT T32.X, T29.W, literal.x,
6488; EG-NEXT:     MOV T32.Y, 0.0,
6489; EG-NEXT:     LSHR T33.Z, T29.Z, literal.y,
6490; EG-NEXT:     AND_INT * T33.X, T29.Z, literal.x,
6491; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6492; EG-NEXT:     MOV T33.Y, 0.0,
6493; EG-NEXT:     LSHR * T34.Z, T29.Y, literal.x,
6494; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6495; EG-NEXT:     AND_INT T34.X, T29.Y, literal.x,
6496; EG-NEXT:     MOV T34.Y, 0.0,
6497; EG-NEXT:     LSHR T29.Z, T29.X, literal.y,
6498; EG-NEXT:     AND_INT * T29.X, T29.X, literal.x,
6499; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6500; EG-NEXT:     MOV T29.Y, 0.0,
6501; EG-NEXT:     MOV T23.W, 0.0,
6502; EG-NEXT:     MOV * T24.W, 0.0,
6503; EG-NEXT:     MOV T25.W, 0.0,
6504; EG-NEXT:     MOV * T20.W, 0.0,
6505; EG-NEXT:     MOV T26.W, 0.0,
6506; EG-NEXT:     MOV * T27.W, 0.0,
6507; EG-NEXT:     MOV T28.W, 0.0,
6508; EG-NEXT:     MOV * T22.W, 0.0,
6509; EG-NEXT:     MOV T19.W, 0.0,
6510; EG-NEXT:     MOV * T30.W, 0.0,
6511; EG-NEXT:     MOV T31.W, 0.0,
6512; EG-NEXT:     MOV * T21.W, 0.0,
6513; EG-NEXT:     MOV T32.W, 0.0,
6514; EG-NEXT:     MOV * T33.W, 0.0,
6515; EG-NEXT:     MOV T34.W, 0.0,
6516; EG-NEXT:     MOV * T29.W, 0.0,
6517; EG-NEXT:     LSHR T35.X, KC0[2].Y, literal.x,
6518; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6519; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6520; EG-NEXT:     LSHR T36.X, PV.W, literal.x,
6521; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6522; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6523; EG-NEXT:     LSHR T37.X, PV.W, literal.x,
6524; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6525; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
6526; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
6527; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6528; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
6529; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
6530; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6531; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
6532; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
6533; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6534; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
6535; EG-NEXT:     LSHR T41.X, PV.W, literal.x,
6536; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6537; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
6538; EG-NEXT:     LSHR T42.X, PV.W, literal.x,
6539; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6540; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
6541; EG-NEXT:     LSHR T43.X, PV.W, literal.x,
6542; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6543; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
6544; EG-NEXT:     LSHR T44.X, PV.W, literal.x,
6545; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6546; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
6547; EG-NEXT:     LSHR T45.X, PV.W, literal.x,
6548; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6549; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
6550; EG-NEXT:     LSHR T46.X, PV.W, literal.x,
6551; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6552; EG-NEXT:    2(2.802597e-45), 192(2.690493e-43)
6553; EG-NEXT:     LSHR T47.X, PV.W, literal.x,
6554; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6555; EG-NEXT:    2(2.802597e-45), 208(2.914701e-43)
6556; EG-NEXT:     LSHR T48.X, PV.W, literal.x,
6557; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6558; EG-NEXT:    2(2.802597e-45), 224(3.138909e-43)
6559; EG-NEXT:     LSHR T49.X, PV.W, literal.x,
6560; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6561; EG-NEXT:    2(2.802597e-45), 240(3.363116e-43)
6562; EG-NEXT:     LSHR * T50.X, PV.W, literal.x,
6563; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6564  %load = load <32 x i16>, <32 x i16> addrspace(4)* %in
6565  %ext = zext <32 x i16> %load to <32 x i64>
6566  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
6567  ret void
6568}
6569
6570define amdgpu_kernel void @constant_sextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(4)* %in) #0 {
6571; GCN-NOHSA-SI-LABEL: constant_sextload_v32i16_to_v32i64:
6572; GCN-NOHSA-SI:       ; %bb.0:
6573; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
6574; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6575; GCN-NOHSA-SI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
6576; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6577; GCN-NOHSA-SI-NEXT:    s_mov_b32 s18, s15
6578; GCN-NOHSA-SI-NEXT:    s_mov_b32 s20, s13
6579; GCN-NOHSA-SI-NEXT:    s_mov_b32 s36, s11
6580; GCN-NOHSA-SI-NEXT:    s_mov_b32 s40, s9
6581; GCN-NOHSA-SI-NEXT:    s_mov_b32 s44, s7
6582; GCN-NOHSA-SI-NEXT:    s_mov_b32 s46, s5
6583; GCN-NOHSA-SI-NEXT:    s_mov_b32 s38, s3
6584; GCN-NOHSA-SI-NEXT:    s_mov_b32 s42, s1
6585; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s24, s14, 16
6586; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s26, s12, 16
6587; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s28, s10, 16
6588; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s34, s8, 16
6589; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[48:49], s[20:21], 0x100000
6590; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[50:51], s[18:19], 0x100000
6591; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s52, s6, 16
6592; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s54, s4, 16
6593; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s56, s2, 16
6594; GCN-NOHSA-SI-NEXT:    s_lshr_b32 s58, s0, 16
6595; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[18:19], s[0:1], 0x100000
6596; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[20:21], s[2:3], 0x100000
6597; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[22:23], s[4:5], 0x100000
6598; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[30:31], s[6:7], 0x100000
6599; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[60:61], s[8:9], 0x100000
6600; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[62:63], s[10:11], 0x100000
6601; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[64:65], s[12:13], 0x100000
6602; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[66:67], s[14:15], 0x100000
6603; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[68:69], s[0:1], 48
6604; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[70:71], s[2:3], 48
6605; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[6:7], s[6:7], 48
6606; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[8:9], s[8:9], 48
6607; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[10:11], s[10:11], 48
6608; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[2:3], s[12:13], 48
6609; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[12:13], s[14:15], 48
6610; GCN-NOHSA-SI-NEXT:    s_ashr_i64 s[4:5], s[4:5], 48
6611; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s16
6612; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s17
6613; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s50
6614; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s51
6615; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s12
6616; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s13
6617; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s48
6618; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s49
6619; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s2
6620; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s3
6621; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
6622; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
6623; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[12:13], s[46:47], 0x100000
6624; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[14:15], s[44:45], 0x100000
6625; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[16:17], s[40:41], 0x100000
6626; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[36:37], s[36:37], 0x100000
6627; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[40:41], s[42:43], 0x100000
6628; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[38:39], s[38:39], 0x100000
6629; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s36
6630; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s37
6631; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s10
6632; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s11
6633; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, s16
6634; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, s17
6635; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v14, s8
6636; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, s9
6637; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v16, s14
6638; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v17, s15
6639; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v18, s6
6640; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v19, s7
6641; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v20, s12
6642; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v21, s13
6643; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v22, s4
6644; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v23, s5
6645; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
6646; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[4:5], s[58:59], 0x100000
6647; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[6:7], s[56:57], 0x100000
6648; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[8:9], s[54:55], 0x100000
6649; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[10:11], s[52:53], 0x100000
6650; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[12:13], s[34:35], 0x100000
6651; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[14:15], s[28:29], 0x100000
6652; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[16:17], s[26:27], 0x100000
6653; GCN-NOHSA-SI-NEXT:    s_bfe_i64 s[24:25], s[24:25], 0x100000
6654; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:208
6655; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:176
6656; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:144
6657; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:112
6658; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:80
6659; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(5)
6660; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s38
6661; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s39
6662; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s70
6663; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s71
6664; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
6665; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6666; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s40
6667; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s41
6668; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s68
6669; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s69
6670; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
6671; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6672; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s66
6673; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s67
6674; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v4, s64
6675; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, s65
6676; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, s62
6677; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, s63
6678; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, s60
6679; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, s61
6680; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v16, s30
6681; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v17, s31
6682; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v20, s22
6683; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v21, s23
6684; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v24, s20
6685; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v25, s21
6686; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s24
6687; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s25
6688; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224
6689; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6690; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, s18
6691; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, s19
6692; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, s16
6693; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, s17
6694; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:192
6695; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v10, s14
6696; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, s15
6697; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:160
6698; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v14, s12
6699; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, s13
6700; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:128
6701; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v18, s10
6702; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v19, s11
6703; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:96
6704; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v22, s8
6705; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v23, s9
6706; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:64
6707; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v26, s6
6708; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v27, s7
6709; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32
6710; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, s4
6711; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, s5
6712; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
6713; GCN-NOHSA-SI-NEXT:    s_endpgm
6714;
6715; GCN-HSA-LABEL: constant_sextload_v32i16_to_v32i64:
6716; GCN-HSA:       ; %bb.0:
6717; GCN-HSA-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
6718; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6719; GCN-HSA-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
6720; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6721; GCN-HSA-NEXT:    s_mov_b32 s42, s15
6722; GCN-HSA-NEXT:    s_mov_b32 s44, s13
6723; GCN-HSA-NEXT:    s_mov_b32 s46, s11
6724; GCN-HSA-NEXT:    s_mov_b32 s48, s9
6725; GCN-HSA-NEXT:    s_mov_b32 s50, s7
6726; GCN-HSA-NEXT:    s_mov_b32 s52, s5
6727; GCN-HSA-NEXT:    s_mov_b32 s54, s3
6728; GCN-HSA-NEXT:    s_mov_b32 s56, s1
6729; GCN-HSA-NEXT:    s_lshr_b32 s58, s14, 16
6730; GCN-HSA-NEXT:    s_lshr_b32 s60, s12, 16
6731; GCN-HSA-NEXT:    s_lshr_b32 s62, s10, 16
6732; GCN-HSA-NEXT:    s_lshr_b32 s64, s8, 16
6733; GCN-HSA-NEXT:    s_lshr_b32 s66, s6, 16
6734; GCN-HSA-NEXT:    s_lshr_b32 s68, s4, 16
6735; GCN-HSA-NEXT:    s_lshr_b32 s70, s2, 16
6736; GCN-HSA-NEXT:    s_lshr_b32 s72, s0, 16
6737; GCN-HSA-NEXT:    s_bfe_i64 s[18:19], s[0:1], 0x100000
6738; GCN-HSA-NEXT:    s_bfe_i64 s[20:21], s[2:3], 0x100000
6739; GCN-HSA-NEXT:    s_ashr_i64 s[36:37], s[0:1], 48
6740; GCN-HSA-NEXT:    s_ashr_i64 s[38:39], s[2:3], 48
6741; GCN-HSA-NEXT:    s_ashr_i64 s[0:1], s[14:15], 48
6742; GCN-HSA-NEXT:    s_bfe_i64 s[2:3], s[42:43], 0x100000
6743; GCN-HSA-NEXT:    s_bfe_i64 s[22:23], s[4:5], 0x100000
6744; GCN-HSA-NEXT:    s_bfe_i64 s[24:25], s[6:7], 0x100000
6745; GCN-HSA-NEXT:    s_bfe_i64 s[26:27], s[8:9], 0x100000
6746; GCN-HSA-NEXT:    s_bfe_i64 s[28:29], s[10:11], 0x100000
6747; GCN-HSA-NEXT:    s_bfe_i64 s[30:31], s[12:13], 0x100000
6748; GCN-HSA-NEXT:    s_bfe_i64 s[34:35], s[14:15], 0x100000
6749; GCN-HSA-NEXT:    s_ashr_i64 s[40:41], s[4:5], 48
6750; GCN-HSA-NEXT:    s_ashr_i64 s[74:75], s[6:7], 48
6751; GCN-HSA-NEXT:    s_ashr_i64 s[76:77], s[8:9], 48
6752; GCN-HSA-NEXT:    s_ashr_i64 s[78:79], s[10:11], 48
6753; GCN-HSA-NEXT:    s_ashr_i64 s[80:81], s[12:13], 48
6754; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
6755; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
6756; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
6757; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
6758; GCN-HSA-NEXT:    s_bfe_i64 s[0:1], s[72:73], 0x100000
6759; GCN-HSA-NEXT:    s_bfe_i64 s[2:3], s[70:71], 0x100000
6760; GCN-HSA-NEXT:    s_bfe_i64 s[4:5], s[68:69], 0x100000
6761; GCN-HSA-NEXT:    s_bfe_i64 s[6:7], s[66:67], 0x100000
6762; GCN-HSA-NEXT:    s_bfe_i64 s[8:9], s[64:65], 0x100000
6763; GCN-HSA-NEXT:    s_bfe_i64 s[10:11], s[62:63], 0x100000
6764; GCN-HSA-NEXT:    s_bfe_i64 s[12:13], s[60:61], 0x100000
6765; GCN-HSA-NEXT:    s_bfe_i64 s[14:15], s[58:59], 0x100000
6766; GCN-HSA-NEXT:    s_bfe_i64 s[42:43], s[56:57], 0x100000
6767; GCN-HSA-NEXT:    s_bfe_i64 s[54:55], s[54:55], 0x100000
6768; GCN-HSA-NEXT:    s_bfe_i64 s[52:53], s[52:53], 0x100000
6769; GCN-HSA-NEXT:    s_bfe_i64 s[50:51], s[50:51], 0x100000
6770; GCN-HSA-NEXT:    s_bfe_i64 s[48:49], s[48:49], 0x100000
6771; GCN-HSA-NEXT:    s_bfe_i64 s[46:47], s[46:47], 0x100000
6772; GCN-HSA-NEXT:    s_bfe_i64 s[44:45], s[44:45], 0x100000
6773; GCN-HSA-NEXT:    s_add_u32 s56, s16, 0xf0
6774; GCN-HSA-NEXT:    s_addc_u32 s57, s17, 0
6775; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s44
6776; GCN-HSA-NEXT:    s_add_u32 s44, s16, 0xd0
6777; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s45
6778; GCN-HSA-NEXT:    s_addc_u32 s45, s17, 0
6779; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s44
6780; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s45
6781; GCN-HSA-NEXT:    s_add_u32 s44, s16, 0xb0
6782; GCN-HSA-NEXT:    s_addc_u32 s45, s17, 0
6783; GCN-HSA-NEXT:    v_mov_b32_e32 v26, s44
6784; GCN-HSA-NEXT:    v_mov_b32_e32 v27, s45
6785; GCN-HSA-NEXT:    s_add_u32 s44, s16, 0x90
6786; GCN-HSA-NEXT:    s_addc_u32 s45, s17, 0
6787; GCN-HSA-NEXT:    v_mov_b32_e32 v28, s44
6788; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s56
6789; GCN-HSA-NEXT:    v_mov_b32_e32 v29, s45
6790; GCN-HSA-NEXT:    s_add_u32 s44, s16, 0x70
6791; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s57
6792; GCN-HSA-NEXT:    s_addc_u32 s45, s17, 0
6793; GCN-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
6794; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s40
6795; GCN-HSA-NEXT:    s_add_u32 s40, s16, 0x50
6796; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s41
6797; GCN-HSA-NEXT:    s_addc_u32 s41, s17, 0
6798; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s80
6799; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s81
6800; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s38
6801; GCN-HSA-NEXT:    s_add_u32 s38, s16, 48
6802; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s39
6803; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[4:7]
6804; GCN-HSA-NEXT:    s_addc_u32 s39, s17, 0
6805; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s38
6806; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s39
6807; GCN-HSA-NEXT:    s_add_u32 s38, s16, 16
6808; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s46
6809; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s47
6810; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s78
6811; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s79
6812; GCN-HSA-NEXT:    s_addc_u32 s39, s17, 0
6813; GCN-HSA-NEXT:    flat_store_dwordx4 v[26:27], v[8:11]
6814; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s48
6815; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s14
6816; GCN-HSA-NEXT:    s_add_u32 s14, s16, 0xe0
6817; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s49
6818; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s76
6819; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s77
6820; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s15
6821; GCN-HSA-NEXT:    s_addc_u32 s15, s17, 0
6822; GCN-HSA-NEXT:    v_mov_b32_e32 v30, s44
6823; GCN-HSA-NEXT:    flat_store_dwordx4 v[28:29], v[12:15]
6824; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s50
6825; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s12
6826; GCN-HSA-NEXT:    s_add_u32 s12, s16, 0xc0
6827; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s51
6828; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s74
6829; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s75
6830; GCN-HSA-NEXT:    v_mov_b32_e32 v31, s45
6831; GCN-HSA-NEXT:    v_mov_b32_e32 v32, s40
6832; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s13
6833; GCN-HSA-NEXT:    s_addc_u32 s13, s17, 0
6834; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s52
6835; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s53
6836; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s54
6837; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s55
6838; GCN-HSA-NEXT:    v_mov_b32_e32 v33, s41
6839; GCN-HSA-NEXT:    v_mov_b32_e32 v34, s38
6840; GCN-HSA-NEXT:    flat_store_dwordx4 v[30:31], v[16:19]
6841; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s42
6842; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s15
6843; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s13
6844; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s43
6845; GCN-HSA-NEXT:    v_mov_b32_e32 v35, s39
6846; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s36
6847; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s37
6848; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s34
6849; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s35
6850; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s30
6851; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s31
6852; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s14
6853; GCN-HSA-NEXT:    flat_store_dwordx4 v[32:33], v[20:23]
6854; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s12
6855; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[0:3]
6856; GCN-HSA-NEXT:    flat_store_dwordx4 v[34:35], v[4:7]
6857; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[8:11]
6858; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[12:15]
6859; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s10
6860; GCN-HSA-NEXT:    s_add_u32 s10, s16, 0xa0
6861; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s11
6862; GCN-HSA-NEXT:    s_addc_u32 s11, s17, 0
6863; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s10
6864; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s28
6865; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s29
6866; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s11
6867; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6868; GCN-HSA-NEXT:    s_nop 0
6869; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s8
6870; GCN-HSA-NEXT:    s_add_u32 s8, s16, 0x80
6871; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s9
6872; GCN-HSA-NEXT:    s_addc_u32 s9, s17, 0
6873; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s8
6874; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s26
6875; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s27
6876; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s9
6877; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6878; GCN-HSA-NEXT:    s_nop 0
6879; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s6
6880; GCN-HSA-NEXT:    s_add_u32 s6, s16, 0x60
6881; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s7
6882; GCN-HSA-NEXT:    s_addc_u32 s7, s17, 0
6883; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s6
6884; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s24
6885; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s25
6886; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s7
6887; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6888; GCN-HSA-NEXT:    s_nop 0
6889; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s4
6890; GCN-HSA-NEXT:    s_add_u32 s4, s16, 64
6891; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s5
6892; GCN-HSA-NEXT:    s_addc_u32 s5, s17, 0
6893; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
6894; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s22
6895; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s23
6896; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
6897; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6898; GCN-HSA-NEXT:    s_nop 0
6899; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s2
6900; GCN-HSA-NEXT:    s_add_u32 s2, s16, 32
6901; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s3
6902; GCN-HSA-NEXT:    s_addc_u32 s3, s17, 0
6903; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6904; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s20
6905; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s21
6906; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6907; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6908; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s16
6909; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s18
6910; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s19
6911; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
6912; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
6913; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s17
6914; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6915; GCN-HSA-NEXT:    s_endpgm
6916;
6917; GCN-NOHSA-VI-LABEL: constant_sextload_v32i16_to_v32i64:
6918; GCN-NOHSA-VI:       ; %bb.0:
6919; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
6920; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6921; GCN-NOHSA-VI-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
6922; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6923; GCN-NOHSA-VI-NEXT:    s_mov_b32 s30, s1
6924; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s34, s1, 16
6925; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s46, s5, 16
6926; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s48, s6, 16
6927; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s62, s10, 16
6928; GCN-NOHSA-VI-NEXT:    s_mov_b32 s64, s11
6929; GCN-NOHSA-VI-NEXT:    s_mov_b32 s80, s15
6930; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s82, s15, 16
6931; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s28, s0, 16
6932; GCN-NOHSA-VI-NEXT:    s_mov_b32 s44, s5
6933; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[24:25], s[6:7], 0x100000
6934; GCN-NOHSA-VI-NEXT:    s_mov_b32 s50, s7
6935; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s52, s7, 16
6936; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[26:27], s[8:9], 0x100000
6937; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s54, s8, 16
6938; GCN-NOHSA-VI-NEXT:    s_mov_b32 s56, s9
6939; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s58, s9, 16
6940; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s78, s14, 16
6941; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[8:9], s[30:31], 0x100000
6942; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[6:7], s[34:35], 0x100000
6943; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[30:31], s[46:47], 0x100000
6944; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[34:35], s[48:49], 0x100000
6945; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[46:47], s[62:63], 0x100000
6946; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[48:49], s[64:65], 0x100000
6947; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[62:63], s[80:81], 0x100000
6948; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[64:65], s[82:83], 0x100000
6949; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[18:19], s[0:1], 0x100000
6950; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[20:21], s[2:3], 0x100000
6951; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s36, s2, 16
6952; GCN-NOHSA-VI-NEXT:    s_mov_b32 s38, s3
6953; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s40, s3, 16
6954; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[22:23], s[4:5], 0x100000
6955; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s42, s4, 16
6956; GCN-NOHSA-VI-NEXT:    s_mov_b32 s72, s13
6957; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s74, s13, 16
6958; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[76:77], s[14:15], 0x100000
6959; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
6960; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
6961; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s16
6962; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s17
6963; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[4:5], s[28:29], 0x100000
6964; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[28:29], s[44:45], 0x100000
6965; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[44:45], s[58:59], 0x100000
6966; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[58:59], s[78:79], 0x100000
6967; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s62
6968; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s63
6969; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s64
6970; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s65
6971; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[68:69], s[12:13], 0x100000
6972; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s70, s12, 16
6973; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[12:13], s[40:41], 0x100000
6974; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[16:17], s[42:43], 0x100000
6975; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[40:41], s[54:55], 0x100000
6976; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[42:43], s[56:57], 0x100000
6977; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[54:55], s[72:73], 0x100000
6978; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[56:57], s[74:75], 0x100000
6979; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
6980; GCN-NOHSA-VI-NEXT:    s_lshr_b32 s66, s11, 16
6981; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s76
6982; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s77
6983; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s58
6984; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s59
6985; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[14:15], s[38:39], 0x100000
6986; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[38:39], s[52:53], 0x100000
6987; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[52:53], s[70:71], 0x100000
6988; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224
6989; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[60:61], s[10:11], 0x100000
6990; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s54
6991; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s55
6992; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s56
6993; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s57
6994; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[10:11], s[36:37], 0x100000
6995; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[36:37], s[50:51], 0x100000
6996; GCN-NOHSA-VI-NEXT:    s_bfe_i64 s[50:51], s[66:67], 0x100000
6997; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:208
6998; GCN-NOHSA-VI-NEXT:    s_nop 0
6999; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s68
7000; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s69
7001; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s52
7002; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s53
7003; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:192
7004; GCN-NOHSA-VI-NEXT:    s_nop 0
7005; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s48
7006; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s49
7007; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s50
7008; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s51
7009; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:176
7010; GCN-NOHSA-VI-NEXT:    s_nop 0
7011; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s60
7012; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s61
7013; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s46
7014; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s47
7015; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:160
7016; GCN-NOHSA-VI-NEXT:    s_nop 0
7017; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s42
7018; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s43
7019; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s44
7020; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s45
7021; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:144
7022; GCN-NOHSA-VI-NEXT:    s_nop 0
7023; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s26
7024; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s27
7025; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s40
7026; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s41
7027; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:128
7028; GCN-NOHSA-VI-NEXT:    s_nop 0
7029; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s36
7030; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s37
7031; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s38
7032; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s39
7033; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:112
7034; GCN-NOHSA-VI-NEXT:    s_nop 0
7035; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s24
7036; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s25
7037; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s34
7038; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s35
7039; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:96
7040; GCN-NOHSA-VI-NEXT:    s_nop 0
7041; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s28
7042; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s29
7043; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s30
7044; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s31
7045; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:80
7046; GCN-NOHSA-VI-NEXT:    s_nop 0
7047; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s22
7048; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s23
7049; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s16
7050; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s17
7051; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:64
7052; GCN-NOHSA-VI-NEXT:    s_nop 0
7053; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s14
7054; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s15
7055; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s12
7056; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s13
7057; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
7058; GCN-NOHSA-VI-NEXT:    s_nop 0
7059; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s20
7060; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s21
7061; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s10
7062; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s11
7063; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
7064; GCN-NOHSA-VI-NEXT:    s_nop 0
7065; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s8
7066; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s9
7067; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s6
7068; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s7
7069; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
7070; GCN-NOHSA-VI-NEXT:    s_nop 0
7071; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, s18
7072; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, s19
7073; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v2, s4
7074; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, s5
7075; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
7076; GCN-NOHSA-VI-NEXT:    s_endpgm
7077;
7078; EG-LABEL: constant_sextload_v32i16_to_v32i64:
7079; EG:       ; %bb.0:
7080; EG-NEXT:    ALU 0, @30, KC0[CB0:0-32], KC1[]
7081; EG-NEXT:    TEX 0 @22
7082; EG-NEXT:    ALU 55, @31, KC0[CB0:0-32], KC1[]
7083; EG-NEXT:    TEX 2 @24
7084; EG-NEXT:    ALU 74, @87, KC0[CB0:0-32], KC1[]
7085; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T50.XYZW, T38.X, 0
7086; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T49.XYZW, T36.X, 0
7087; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T34.X, 0
7088; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T33.X, 0
7089; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T32.X, 0
7090; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T31.X, 0
7091; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T30.X, 0
7092; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T29.X, 0
7093; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T28.X, 0
7094; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T27.X, 0
7095; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T26.X, 0
7096; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T25.X, 0
7097; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T24.X, 0
7098; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T23.X, 0
7099; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T22.X, 0
7100; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T21.X, 1
7101; EG-NEXT:    CF_END
7102; EG-NEXT:    Fetch clause starting at 22:
7103; EG-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 0, #1
7104; EG-NEXT:    Fetch clause starting at 24:
7105; EG-NEXT:     VTX_READ_128 T38.XYZW, T19.X, 48, #1
7106; EG-NEXT:     VTX_READ_128 T39.XYZW, T19.X, 32, #1
7107; EG-NEXT:     VTX_READ_128 T40.XYZW, T19.X, 16, #1
7108; EG-NEXT:    ALU clause starting at 30:
7109; EG-NEXT:     MOV * T19.X, KC0[2].Z,
7110; EG-NEXT:    ALU clause starting at 31:
7111; EG-NEXT:     LSHR T21.X, KC0[2].Y, literal.x,
7112; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7113; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7114; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
7115; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7116; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
7117; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
7118; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7119; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
7120; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
7121; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7122; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
7123; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
7124; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7125; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
7126; EG-NEXT:     LSHR T26.X, PV.W, literal.x,
7127; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7128; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
7129; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
7130; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7131; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
7132; EG-NEXT:     LSHR T28.X, PV.W, literal.x,
7133; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7134; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
7135; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
7136; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7137; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
7138; EG-NEXT:     LSHR T30.X, PV.W, literal.x,
7139; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7140; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
7141; EG-NEXT:     LSHR T31.X, PV.W, literal.x,
7142; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7143; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
7144; EG-NEXT:     LSHR T32.X, PV.W, literal.x,
7145; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7146; EG-NEXT:    2(2.802597e-45), 192(2.690493e-43)
7147; EG-NEXT:     LSHR T33.X, PV.W, literal.x,
7148; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7149; EG-NEXT:    2(2.802597e-45), 208(2.914701e-43)
7150; EG-NEXT:     LSHR T34.X, PV.W, literal.x,
7151; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.y,
7152; EG-NEXT:     ASHR * T35.W, T20.X, literal.z,
7153; EG-NEXT:    2(2.802597e-45), 224(3.138909e-43)
7154; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
7155; EG-NEXT:     LSHR T36.X, PV.W, literal.x,
7156; EG-NEXT:     ASHR T35.Z, T20.X, literal.y,
7157; EG-NEXT:     ASHR * T37.W, T20.Y, literal.z,
7158; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7159; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
7160; EG-NEXT:     BFE_INT T35.X, T20.X, 0.0, literal.x,
7161; EG-NEXT:     ASHR * T37.Z, T20.Y, literal.x,
7162; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7163; EG-NEXT:     BFE_INT T37.X, T20.Y, 0.0, literal.x,
7164; EG-NEXT:     ASHR T35.Y, PV.X, literal.y,
7165; EG-NEXT:     ASHR * T19.W, T20.Z, literal.y,
7166; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7167; EG-NEXT:    ALU clause starting at 87:
7168; EG-NEXT:     ASHR T19.Z, T20.Z, literal.x,
7169; EG-NEXT:     ASHR * T41.W, T20.W, literal.y,
7170; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7171; EG-NEXT:     BFE_INT T19.X, T20.Z, 0.0, literal.x,
7172; EG-NEXT:     ASHR T37.Y, T37.X, literal.y,
7173; EG-NEXT:     ASHR T41.Z, T20.W, literal.x,
7174; EG-NEXT:     ASHR * T42.W, T40.X, literal.y, BS:VEC_120/SCL_212
7175; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7176; EG-NEXT:     BFE_INT T41.X, T20.W, 0.0, literal.x,
7177; EG-NEXT:     ASHR T19.Y, PV.X, literal.y,
7178; EG-NEXT:     ASHR T42.Z, T40.X, literal.x,
7179; EG-NEXT:     ASHR * T20.W, T40.Y, literal.y,
7180; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7181; EG-NEXT:     BFE_INT T42.X, T40.X, 0.0, literal.x,
7182; EG-NEXT:     ASHR T41.Y, PV.X, literal.y,
7183; EG-NEXT:     ASHR T20.Z, T40.Y, literal.x,
7184; EG-NEXT:     ASHR * T43.W, T40.Z, literal.y,
7185; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7186; EG-NEXT:     BFE_INT T20.X, T40.Y, 0.0, literal.x,
7187; EG-NEXT:     ASHR T42.Y, PV.X, literal.y,
7188; EG-NEXT:     ASHR T43.Z, T40.Z, literal.x,
7189; EG-NEXT:     ASHR * T44.W, T40.W, literal.y,
7190; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7191; EG-NEXT:     BFE_INT T43.X, T40.Z, 0.0, literal.x,
7192; EG-NEXT:     ASHR T20.Y, PV.X, literal.y,
7193; EG-NEXT:     ASHR T44.Z, T40.W, literal.x,
7194; EG-NEXT:     ASHR * T45.W, T39.X, literal.y,
7195; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7196; EG-NEXT:     BFE_INT T44.X, T40.W, 0.0, literal.x,
7197; EG-NEXT:     ASHR T43.Y, PV.X, literal.y,
7198; EG-NEXT:     ASHR T45.Z, T39.X, literal.x,
7199; EG-NEXT:     ASHR * T40.W, T39.Y, literal.y,
7200; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7201; EG-NEXT:     BFE_INT T45.X, T39.X, 0.0, literal.x,
7202; EG-NEXT:     ASHR T44.Y, PV.X, literal.y,
7203; EG-NEXT:     ASHR T40.Z, T39.Y, literal.x,
7204; EG-NEXT:     ASHR * T46.W, T39.Z, literal.y,
7205; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7206; EG-NEXT:     BFE_INT T40.X, T39.Y, 0.0, literal.x,
7207; EG-NEXT:     ASHR T45.Y, PV.X, literal.y,
7208; EG-NEXT:     ASHR T46.Z, T39.Z, literal.x,
7209; EG-NEXT:     ASHR * T47.W, T39.W, literal.y,
7210; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7211; EG-NEXT:     BFE_INT T46.X, T39.Z, 0.0, literal.x,
7212; EG-NEXT:     ASHR T40.Y, PV.X, literal.y,
7213; EG-NEXT:     ASHR T47.Z, T39.W, literal.x,
7214; EG-NEXT:     ASHR * T48.W, T38.X, literal.y,
7215; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7216; EG-NEXT:     BFE_INT T47.X, T39.W, 0.0, literal.x,
7217; EG-NEXT:     ASHR T46.Y, PV.X, literal.y,
7218; EG-NEXT:     ASHR T48.Z, T38.X, literal.x,
7219; EG-NEXT:     ASHR * T39.W, T38.Y, literal.y,
7220; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7221; EG-NEXT:     BFE_INT T48.X, T38.X, 0.0, literal.x,
7222; EG-NEXT:     ASHR T47.Y, PV.X, literal.y,
7223; EG-NEXT:     ASHR T39.Z, T38.Y, literal.x,
7224; EG-NEXT:     ASHR * T49.W, T38.Z, literal.y,
7225; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7226; EG-NEXT:     BFE_INT T39.X, T38.Y, 0.0, literal.x,
7227; EG-NEXT:     ASHR T48.Y, PV.X, literal.y,
7228; EG-NEXT:     ASHR T49.Z, T38.Z, literal.x,
7229; EG-NEXT:     ASHR * T50.W, T38.W, literal.y,
7230; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7231; EG-NEXT:     BFE_INT T49.X, T38.Z, 0.0, literal.x,
7232; EG-NEXT:     ASHR T39.Y, PV.X, literal.y,
7233; EG-NEXT:     ASHR * T50.Z, T38.W, literal.x,
7234; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7235; EG-NEXT:     BFE_INT T50.X, T38.W, 0.0, literal.x,
7236; EG-NEXT:     ASHR T49.Y, PV.X, literal.y,
7237; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
7238; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7239; EG-NEXT:    240(3.363116e-43), 0(0.000000e+00)
7240; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
7241; EG-NEXT:     ASHR * T50.Y, PV.X, literal.y,
7242; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
7243  %load = load <32 x i16>, <32 x i16> addrspace(4)* %in
7244  %ext = sext <32 x i16> %load to <32 x i64>
7245  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
7246  ret void
7247}
7248
7249; These trigger undefined register machine verifier errors
7250
7251; define amdgpu_kernel void @constant_zextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(4)* %in) #0 {
7252;   %load = load <64 x i16>, <64 x i16> addrspace(4)* %in
7253;   %ext = zext <64 x i16> %load to <64 x i64>
7254;   store <64 x i64> %ext, <64 x i64> addrspace(1)* %out
7255;   ret void
7256; }
7257
7258; define amdgpu_kernel void @constant_sextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(4)* %in) #0 {
7259;   %load = load <64 x i16>, <64 x i16> addrspace(4)* %in
7260;   %ext = sext <64 x i16> %load to <64 x i64>
7261;   store <64 x i64> %ext, <64 x i64> addrspace(1)* %out
7262;   ret void
7263; }
7264
7265attributes #0 = { nounwind }
7266