1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN:  llc -amdgpu-scalarize-global-loads=false  -march=amdgcn -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap --check-prefix=GCN-NOHSA-SI %s
3; RUN:  llc -amdgpu-scalarize-global-loads=false  -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap --check-prefix=GCN-HSA %s
4; RUN:  llc -amdgpu-scalarize-global-loads=false  -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap --check-prefix=GCN-NOHSA-VI %s
5; RUN:  llc -amdgpu-scalarize-global-loads=false  -march=r600 -mcpu=redwood -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap --check-prefix=EG %s
6; RUN:  llc -amdgpu-scalarize-global-loads=false  -march=r600 -mcpu=cayman -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap --check-prefix=CM %s
7
8; FIXME: r600 is broken because the bigger testcases spill and it's not implemented
9
10define amdgpu_kernel void @global_load_i16(i16 addrspace(1)* %out, i16 addrspace(1)* %in) {
11; GCN-NOHSA-SI-LABEL: global_load_i16:
12; GCN-NOHSA-SI:       ; %bb.0: ; %entry
13; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
14; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
15; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
16; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
17; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
18; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
19; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
20; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
21; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
22; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
23; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
24; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
25; GCN-NOHSA-SI-NEXT:    buffer_store_short v0, off, s[4:7], 0
26; GCN-NOHSA-SI-NEXT:    s_endpgm
27;
28; GCN-HSA-LABEL: global_load_i16:
29; GCN-HSA:       ; %bb.0: ; %entry
30; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
31; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
32; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
33; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
34; GCN-HSA-NEXT:    flat_load_ushort v2, v[0:1]
35; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
36; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
37; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
38; GCN-HSA-NEXT:    flat_store_short v[0:1], v2
39; GCN-HSA-NEXT:    s_endpgm
40;
41; GCN-NOHSA-VI-LABEL: global_load_i16:
42; GCN-NOHSA-VI:       ; %bb.0: ; %entry
43; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
44; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
45; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
46; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
47; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
48; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
49; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
50; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
51; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
52; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
53; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
54; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
55; GCN-NOHSA-VI-NEXT:    buffer_store_short v0, off, s[4:7], 0
56; GCN-NOHSA-VI-NEXT:    s_endpgm
57;
58; EG-LABEL: global_load_i16:
59; EG:       ; %bb.0: ; %entry
60; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
61; EG-NEXT:    TEX 0 @6
62; EG-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
63; EG-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
64; EG-NEXT:    CF_END
65; EG-NEXT:    PAD
66; EG-NEXT:    Fetch clause starting at 6:
67; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
68; EG-NEXT:    ALU clause starting at 8:
69; EG-NEXT:     MOV * T0.X, KC0[2].Z,
70; EG-NEXT:    ALU clause starting at 9:
71; EG-NEXT:     AND_INT T0.W, KC0[2].Y, literal.x,
72; EG-NEXT:     AND_INT * T1.W, T0.X, literal.y,
73; EG-NEXT:    3(4.203895e-45), 65535(9.183409e-41)
74; EG-NEXT:     LSHL * T0.W, PV.W, literal.x,
75; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
76; EG-NEXT:     LSHL T0.X, T1.W, PV.W,
77; EG-NEXT:     LSHL * T0.W, literal.x, PV.W,
78; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
79; EG-NEXT:     MOV T0.Y, 0.0,
80; EG-NEXT:     MOV * T0.Z, 0.0,
81; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
82; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
83;
84; CM-LABEL: global_load_i16:
85; CM:       ; %bb.0: ; %entry
86; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
87; CM-NEXT:    TEX 0 @6
88; CM-NEXT:    ALU 11, @9, KC0[CB0:0-32], KC1[]
89; CM-NEXT:    MEM_RAT MSKOR T0.XW, T1.X
90; CM-NEXT:    CF_END
91; CM-NEXT:    PAD
92; CM-NEXT:    Fetch clause starting at 6:
93; CM-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
94; CM-NEXT:    ALU clause starting at 8:
95; CM-NEXT:     MOV * T0.X, KC0[2].Z,
96; CM-NEXT:    ALU clause starting at 9:
97; CM-NEXT:     AND_INT * T0.W, KC0[2].Y, literal.x,
98; CM-NEXT:    3(4.203895e-45), 0(0.000000e+00)
99; CM-NEXT:     AND_INT T0.Z, T0.X, literal.x,
100; CM-NEXT:     LSHL * T0.W, PV.W, literal.y,
101; CM-NEXT:    65535(9.183409e-41), 3(4.203895e-45)
102; CM-NEXT:     LSHL T0.X, PV.Z, PV.W,
103; CM-NEXT:     LSHL * T0.W, literal.x, PV.W,
104; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
105; CM-NEXT:     MOV T0.Y, 0.0,
106; CM-NEXT:     MOV * T0.Z, 0.0,
107; CM-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
108; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
109entry:
110  %ld = load i16, i16 addrspace(1)* %in
111  store i16 %ld, i16 addrspace(1)* %out
112  ret void
113}
114
115define amdgpu_kernel void @global_load_v2i16(<2 x i16> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) {
116; GCN-NOHSA-SI-LABEL: global_load_v2i16:
117; GCN-NOHSA-SI:       ; %bb.0: ; %entry
118; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
119; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
120; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
121; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
122; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
123; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
124; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
125; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
126; GCN-NOHSA-SI-NEXT:    buffer_load_dword v0, off, s[8:11], 0
127; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
128; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
129; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
130; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
131; GCN-NOHSA-SI-NEXT:    s_endpgm
132;
133; GCN-HSA-LABEL: global_load_v2i16:
134; GCN-HSA:       ; %bb.0: ; %entry
135; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
136; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
137; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
138; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
139; GCN-HSA-NEXT:    flat_load_dword v2, v[0:1]
140; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
141; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
142; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
143; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
144; GCN-HSA-NEXT:    s_endpgm
145;
146; GCN-NOHSA-VI-LABEL: global_load_v2i16:
147; GCN-NOHSA-VI:       ; %bb.0: ; %entry
148; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
149; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
150; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
151; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
152; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
153; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
154; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
155; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
156; GCN-NOHSA-VI-NEXT:    buffer_load_dword v0, off, s[8:11], 0
157; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
158; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
159; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
160; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
161; GCN-NOHSA-VI-NEXT:    s_endpgm
162;
163; EG-LABEL: global_load_v2i16:
164; EG:       ; %bb.0: ; %entry
165; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
166; EG-NEXT:    TEX 0 @6
167; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
168; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
169; EG-NEXT:    CF_END
170; EG-NEXT:    PAD
171; EG-NEXT:    Fetch clause starting at 6:
172; EG-NEXT:     VTX_READ_32 T0.X, T0.X, 0, #1
173; EG-NEXT:    ALU clause starting at 8:
174; EG-NEXT:     MOV * T0.X, KC0[2].Z,
175; EG-NEXT:    ALU clause starting at 9:
176; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
177; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
178;
179; CM-LABEL: global_load_v2i16:
180; CM:       ; %bb.0: ; %entry
181; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
182; CM-NEXT:    TEX 0 @6
183; CM-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
184; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0.X, T1.X
185; CM-NEXT:    CF_END
186; CM-NEXT:    PAD
187; CM-NEXT:    Fetch clause starting at 6:
188; CM-NEXT:     VTX_READ_32 T0.X, T0.X, 0, #1
189; CM-NEXT:    ALU clause starting at 8:
190; CM-NEXT:     MOV * T0.X, KC0[2].Z,
191; CM-NEXT:    ALU clause starting at 9:
192; CM-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
193; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
194entry:
195  %ld = load <2 x i16>, <2 x i16> addrspace(1)* %in
196  store <2 x i16> %ld, <2 x i16> addrspace(1)* %out
197  ret void
198}
199
200define amdgpu_kernel void @global_load_v3i16(<3 x i16> addrspace(1)* %out, <3 x i16> addrspace(1)* %in) {
201; GCN-NOHSA-SI-LABEL: global_load_v3i16:
202; GCN-NOHSA-SI:       ; %bb.0: ; %entry
203; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
204; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
205; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
206; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
207; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
208; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
209; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
210; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
211; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 0
212; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
213; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
214; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
215; GCN-NOHSA-SI-NEXT:    buffer_store_short v1, off, s[4:7], 0 offset:4
216; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
217; GCN-NOHSA-SI-NEXT:    s_endpgm
218;
219; GCN-HSA-LABEL: global_load_v3i16:
220; GCN-HSA:       ; %bb.0: ; %entry
221; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
222; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
223; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
224; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
225; GCN-HSA-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]
226; GCN-HSA-NEXT:    s_add_u32 s2, s0, 4
227; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
228; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
229; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
230; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
231; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
232; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
233; GCN-HSA-NEXT:    flat_store_short v[4:5], v1
234; GCN-HSA-NEXT:    flat_store_dword v[2:3], v0
235; GCN-HSA-NEXT:    s_endpgm
236;
237; GCN-NOHSA-VI-LABEL: global_load_v3i16:
238; GCN-NOHSA-VI:       ; %bb.0: ; %entry
239; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
240; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
241; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
242; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
243; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
244; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
245; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
246; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
247; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 0
248; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
249; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
250; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
251; GCN-NOHSA-VI-NEXT:    buffer_store_short v1, off, s[4:7], 0 offset:4
252; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
253; GCN-NOHSA-VI-NEXT:    s_endpgm
254;
255; EG-LABEL: global_load_v3i16:
256; EG:       ; %bb.0: ; %entry
257; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
258; EG-NEXT:    TEX 2 @6
259; EG-NEXT:    ALU 19, @13, KC0[CB0:0-32], KC1[]
260; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.X, T7.X, 0
261; EG-NEXT:    MEM_RAT MSKOR T5.XW, T8.X
262; EG-NEXT:    CF_END
263; EG-NEXT:    Fetch clause starting at 6:
264; EG-NEXT:     VTX_READ_16 T6.X, T5.X, 0, #1
265; EG-NEXT:     VTX_READ_16 T7.X, T5.X, 2, #1
266; EG-NEXT:     VTX_READ_16 T5.X, T5.X, 4, #1
267; EG-NEXT:    ALU clause starting at 12:
268; EG-NEXT:     MOV * T5.X, KC0[2].Z,
269; EG-NEXT:    ALU clause starting at 13:
270; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
271; EG-NEXT:    4(5.605194e-45), 0(0.000000e+00)
272; EG-NEXT:     AND_INT T1.W, PV.W, literal.x,
273; EG-NEXT:     AND_INT * T2.W, T5.X, literal.y,
274; EG-NEXT:    3(4.203895e-45), 65535(9.183409e-41)
275; EG-NEXT:     LSHL * T1.W, PV.W, literal.x,
276; EG-NEXT:    3(4.203895e-45), 0(0.000000e+00)
277; EG-NEXT:     LSHL T5.X, T2.W, PV.W,
278; EG-NEXT:     LSHL * T5.W, literal.x, PV.W,
279; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
280; EG-NEXT:     MOV T5.Y, 0.0,
281; EG-NEXT:     MOV * T5.Z, 0.0,
282; EG-NEXT:     LSHR T8.X, T0.W, literal.x,
283; EG-NEXT:     LSHL T0.W, T7.X, literal.y,
284; EG-NEXT:     AND_INT * T1.W, T6.X, literal.z,
285; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
286; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
287; EG-NEXT:     OR_INT T6.X, PV.W, PS,
288; EG-NEXT:     LSHR * T7.X, KC0[2].Y, literal.x,
289; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
290;
291; CM-LABEL: global_load_v3i16:
292; CM:       ; %bb.0: ; %entry
293; CM-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
294; CM-NEXT:    TEX 2 @6
295; CM-NEXT:    ALU 19, @13, KC0[CB0:0-32], KC1[]
296; CM-NEXT:    MEM_RAT MSKOR T5.XW, T8.X
297; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T6.X, T7.X
298; CM-NEXT:    CF_END
299; CM-NEXT:    Fetch clause starting at 6:
300; CM-NEXT:     VTX_READ_16 T6.X, T5.X, 0, #1
301; CM-NEXT:     VTX_READ_16 T7.X, T5.X, 2, #1
302; CM-NEXT:     VTX_READ_16 T5.X, T5.X, 4, #1
303; CM-NEXT:    ALU clause starting at 12:
304; CM-NEXT:     MOV * T5.X, KC0[2].Z,
305; CM-NEXT:    ALU clause starting at 13:
306; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
307; CM-NEXT:    4(5.605194e-45), 0(0.000000e+00)
308; CM-NEXT:     AND_INT * T1.W, PV.W, literal.x,
309; CM-NEXT:    3(4.203895e-45), 0(0.000000e+00)
310; CM-NEXT:     AND_INT T0.Z, T5.X, literal.x,
311; CM-NEXT:     LSHL * T1.W, PV.W, literal.y,
312; CM-NEXT:    65535(9.183409e-41), 3(4.203895e-45)
313; CM-NEXT:     LSHL T5.X, PV.Z, PV.W,
314; CM-NEXT:     LSHL * T5.W, literal.x, PV.W,
315; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
316; CM-NEXT:     MOV T5.Y, 0.0,
317; CM-NEXT:     MOV * T5.Z, 0.0,
318; CM-NEXT:     LSHL T0.Z, T7.X, literal.x,
319; CM-NEXT:     AND_INT * T1.W, T6.X, literal.y, BS:VEC_120/SCL_212
320; CM-NEXT:    16(2.242078e-44), 65535(9.183409e-41)
321; CM-NEXT:     OR_INT * T6.X, PV.Z, PV.W,
322; CM-NEXT:     LSHR * T7.X, KC0[2].Y, literal.x,
323; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
324; CM-NEXT:     LSHR * T8.X, T0.W, literal.x,
325; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
326entry:
327  %ld = load <3 x i16>, <3 x i16> addrspace(1)* %in
328  store <3 x i16> %ld, <3 x i16> addrspace(1)* %out
329  ret void
330}
331
332define amdgpu_kernel void @global_load_v4i16(<4 x i16> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) {
333; GCN-NOHSA-SI-LABEL: global_load_v4i16:
334; GCN-NOHSA-SI:       ; %bb.0: ; %entry
335; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
336; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
337; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
338; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
339; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
340; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
341; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
342; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
343; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 0
344; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
345; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
346; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
347; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
348; GCN-NOHSA-SI-NEXT:    s_endpgm
349;
350; GCN-HSA-LABEL: global_load_v4i16:
351; GCN-HSA:       ; %bb.0: ; %entry
352; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
353; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
354; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
355; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
356; GCN-HSA-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]
357; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
358; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
359; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
360; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
361; GCN-HSA-NEXT:    s_endpgm
362;
363; GCN-NOHSA-VI-LABEL: global_load_v4i16:
364; GCN-NOHSA-VI:       ; %bb.0: ; %entry
365; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
366; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
367; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
368; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
369; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
370; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
371; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
372; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
373; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 0
374; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
375; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
376; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
377; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
378; GCN-NOHSA-VI-NEXT:    s_endpgm
379;
380; EG-LABEL: global_load_v4i16:
381; EG:       ; %bb.0: ; %entry
382; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
383; EG-NEXT:    TEX 0 @6
384; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
385; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
386; EG-NEXT:    CF_END
387; EG-NEXT:    PAD
388; EG-NEXT:    Fetch clause starting at 6:
389; EG-NEXT:     VTX_READ_64 T0.XY, T0.X, 0, #1
390; EG-NEXT:    ALU clause starting at 8:
391; EG-NEXT:     MOV * T0.X, KC0[2].Z,
392; EG-NEXT:    ALU clause starting at 9:
393; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
394; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
395;
396; CM-LABEL: global_load_v4i16:
397; CM:       ; %bb.0: ; %entry
398; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
399; CM-NEXT:    TEX 0 @6
400; CM-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
401; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0, T1.X
402; CM-NEXT:    CF_END
403; CM-NEXT:    PAD
404; CM-NEXT:    Fetch clause starting at 6:
405; CM-NEXT:     VTX_READ_64 T0.XY, T0.X, 0, #1
406; CM-NEXT:    ALU clause starting at 8:
407; CM-NEXT:     MOV * T0.X, KC0[2].Z,
408; CM-NEXT:    ALU clause starting at 9:
409; CM-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
410; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
411entry:
412  %ld = load <4 x i16>, <4 x i16> addrspace(1)* %in
413  store <4 x i16> %ld, <4 x i16> addrspace(1)* %out
414  ret void
415}
416
417define amdgpu_kernel void @global_load_v8i16(<8 x i16> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) {
418; GCN-NOHSA-SI-LABEL: global_load_v8i16:
419; GCN-NOHSA-SI:       ; %bb.0: ; %entry
420; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
421; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
422; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
423; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
424; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
425; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
426; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
427; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
428; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
429; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
430; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
431; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
432; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
433; GCN-NOHSA-SI-NEXT:    s_endpgm
434;
435; GCN-HSA-LABEL: global_load_v8i16:
436; GCN-HSA:       ; %bb.0: ; %entry
437; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
438; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
439; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
440; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
441; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
442; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
443; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
444; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
445; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
446; GCN-HSA-NEXT:    s_endpgm
447;
448; GCN-NOHSA-VI-LABEL: global_load_v8i16:
449; GCN-NOHSA-VI:       ; %bb.0: ; %entry
450; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
451; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
452; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
453; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
454; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
455; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
456; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
457; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
458; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
459; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
460; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
461; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
462; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
463; GCN-NOHSA-VI-NEXT:    s_endpgm
464;
465; EG-LABEL: global_load_v8i16:
466; EG:       ; %bb.0: ; %entry
467; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
468; EG-NEXT:    TEX 0 @6
469; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
470; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
471; EG-NEXT:    CF_END
472; EG-NEXT:    PAD
473; EG-NEXT:    Fetch clause starting at 6:
474; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
475; EG-NEXT:    ALU clause starting at 8:
476; EG-NEXT:     MOV * T0.X, KC0[2].Z,
477; EG-NEXT:    ALU clause starting at 9:
478; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
479; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
480;
481; CM-LABEL: global_load_v8i16:
482; CM:       ; %bb.0: ; %entry
483; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
484; CM-NEXT:    TEX 0 @6
485; CM-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
486; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0, T1.X
487; CM-NEXT:    CF_END
488; CM-NEXT:    PAD
489; CM-NEXT:    Fetch clause starting at 6:
490; CM-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
491; CM-NEXT:    ALU clause starting at 8:
492; CM-NEXT:     MOV * T0.X, KC0[2].Z,
493; CM-NEXT:    ALU clause starting at 9:
494; CM-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
495; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
496entry:
497  %ld = load <8 x i16>, <8 x i16> addrspace(1)* %in
498  store <8 x i16> %ld, <8 x i16> addrspace(1)* %out
499  ret void
500}
501
502define amdgpu_kernel void @global_load_v16i16(<16 x i16> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) {
503; GCN-NOHSA-SI-LABEL: global_load_v16i16:
504; GCN-NOHSA-SI:       ; %bb.0: ; %entry
505; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
506; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
507; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
508; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
509; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
510; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
511; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
512; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
513; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:16
514; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0
515; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
516; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
517; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
518; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16
519; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
520; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
521; GCN-NOHSA-SI-NEXT:    s_endpgm
522;
523; GCN-HSA-LABEL: global_load_v16i16:
524; GCN-HSA:       ; %bb.0: ; %entry
525; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
526; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
527; GCN-HSA-NEXT:    s_add_u32 s4, s0, 16
528; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
529; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
530; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
531; GCN-HSA-NEXT:    s_add_u32 s2, s2, 16
532; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
533; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
534; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
535; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
536; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
537; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s5
538; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s1
539; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s4
540; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s0
541; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
542; GCN-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
543; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
544; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
545; GCN-HSA-NEXT:    s_endpgm
546;
547; GCN-NOHSA-VI-LABEL: global_load_v16i16:
548; GCN-NOHSA-VI:       ; %bb.0: ; %entry
549; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
550; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
551; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
552; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
553; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
554; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
555; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
556; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
557; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:16
558; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0
559; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
560; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
561; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
562; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16
563; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
564; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
565; GCN-NOHSA-VI-NEXT:    s_endpgm
566;
567; EG-LABEL: global_load_v16i16:
568; EG:       ; %bb.0: ; %entry
569; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
570; EG-NEXT:    TEX 0 @8
571; EG-NEXT:    ALU 1, @13, KC0[CB0:0-32], KC1[]
572; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
573; EG-NEXT:    TEX 0 @10
574; EG-NEXT:    ALU 3, @15, KC0[CB0:0-32], KC1[]
575; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
576; EG-NEXT:    CF_END
577; EG-NEXT:    Fetch clause starting at 8:
578; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 0, #1
579; EG-NEXT:    Fetch clause starting at 10:
580; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 16, #1
581; EG-NEXT:    ALU clause starting at 12:
582; EG-NEXT:     MOV * T0.X, KC0[2].Z,
583; EG-NEXT:    ALU clause starting at 13:
584; EG-NEXT:     LSHR * T2.X, KC0[2].Y, literal.x,
585; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
586; EG-NEXT:    ALU clause starting at 15:
587; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.x,
588; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
589; EG-NEXT:     LSHR * T1.X, PV.W, literal.x,
590; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
591;
592; CM-LABEL: global_load_v16i16:
593; CM:       ; %bb.0: ; %entry
594; CM-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
595; CM-NEXT:    TEX 0 @8
596; CM-NEXT:    ALU 1, @13, KC0[CB0:0-32], KC1[]
597; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T1, T2.X
598; CM-NEXT:    TEX 0 @10
599; CM-NEXT:    ALU 3, @15, KC0[CB0:0-32], KC1[]
600; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0, T1.X
601; CM-NEXT:    CF_END
602; CM-NEXT:    Fetch clause starting at 8:
603; CM-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 0, #1
604; CM-NEXT:    Fetch clause starting at 10:
605; CM-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 16, #1
606; CM-NEXT:    ALU clause starting at 12:
607; CM-NEXT:     MOV * T0.X, KC0[2].Z,
608; CM-NEXT:    ALU clause starting at 13:
609; CM-NEXT:     LSHR * T2.X, KC0[2].Y, literal.x,
610; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
611; CM-NEXT:    ALU clause starting at 15:
612; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.x,
613; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
614; CM-NEXT:     LSHR * T1.X, PV.W, literal.x,
615; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
616entry:
617  %ld = load <16 x i16>, <16 x i16> addrspace(1)* %in
618  store <16 x i16> %ld, <16 x i16> addrspace(1)* %out
619  ret void
620}
621
622define amdgpu_kernel void @global_load_v16i16_align2(<16 x i16> addrspace(1)* %in, <16 x i16> addrspace(1)* %out) #0 {
623; GCN-NOHSA-SI-LABEL: global_load_v16i16_align2:
624; GCN-NOHSA-SI:       ; %bb.0: ; %entry
625; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
626; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
627; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
628; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
629; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
630; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
631; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
632; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
633; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
634; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
635; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[4:7], 0
636; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 offset:2
637; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v4, off, s[4:7], 0 offset:4
638; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v2, off, s[4:7], 0 offset:6
639; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v5, off, s[4:7], 0 offset:8
640; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v3, off, s[4:7], 0 offset:10
641; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v6, off, s[4:7], 0 offset:12
642; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v7, off, s[4:7], 0 offset:14
643; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v8, off, s[4:7], 0 offset:16
644; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v9, off, s[4:7], 0 offset:18
645; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v10, off, s[4:7], 0 offset:20
646; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v11, off, s[4:7], 0 offset:22
647; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v12, off, s[4:7], 0 offset:24
648; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v13, off, s[4:7], 0 offset:26
649; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v14, off, s[4:7], 0 offset:28
650; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v15, off, s[4:7], 0 offset:30
651; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(8)
652; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
653; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v16, 16, v3
654; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v17, 16, v2
655; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v18, 16, v1
656; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
657; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
658; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
659; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
660; GCN-NOHSA-SI-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
661; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v3, v7, v6
662; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v2, v16, v5
663; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v1, v17, v4
664; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v0, v18, v0
665; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v7, v15, v14
666; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v6, v13, v12
667; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v5, v11, v10
668; GCN-NOHSA-SI-NEXT:    v_or_b32_e32 v4, v9, v8
669; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[8:11], 0 offset:16
670; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
671; GCN-NOHSA-SI-NEXT:    s_endpgm
672;
673; GCN-HSA-LABEL: global_load_v16i16_align2:
674; GCN-HSA:       ; %bb.0: ; %entry
675; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
676; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
677; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
678; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
679; GCN-HSA-NEXT:    s_add_u32 s0, s0, 16
680; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
681; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
682; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
683; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
684; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
685; GCN-HSA-NEXT:    s_add_u32 s0, s2, 16
686; GCN-HSA-NEXT:    s_addc_u32 s1, s3, 0
687; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s1
688; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
689; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s0
690; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
691; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
692; GCN-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
693; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
694; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
695; GCN-HSA-NEXT:    s_endpgm
696;
697; GCN-NOHSA-VI-LABEL: global_load_v16i16_align2:
698; GCN-NOHSA-VI:       ; %bb.0: ; %entry
699; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
700; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
701; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
702; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
703; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
704; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
705; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[4:7], 0 offset:14
706; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 offset:10
707; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v2, off, s[4:7], 0 offset:6
708; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v3, off, s[4:7], 0 offset:2
709; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v4, off, s[4:7], 0 offset:30
710; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v5, off, s[4:7], 0 offset:26
711; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v6, off, s[4:7], 0 offset:22
712; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v7, off, s[4:7], 0 offset:18
713; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v8, off, s[4:7], 0 offset:12
714; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v9, off, s[4:7], 0 offset:8
715; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v10, off, s[4:7], 0 offset:4
716; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v11, off, s[4:7], 0
717; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v12, off, s[4:7], 0 offset:28
718; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v13, off, s[4:7], 0 offset:24
719; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v14, off, s[4:7], 0 offset:20
720; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v15, off, s[4:7], 0 offset:16
721; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s2
722; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s3
723; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(14)
724; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
725; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
726; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(13)
727; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v16, 16, v2
728; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(12)
729; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v17, 16, v3
730; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(11)
731; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v4, 16, v4
732; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(10)
733; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
734; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(9)
735; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v18, 16, v6
736; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(8)
737; GCN-NOHSA-VI-NEXT:    v_lshlrev_b32_e32 v19, 16, v7
738; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(7)
739; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v3, v0, v8
740; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(6)
741; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v2, v1, v9
742; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(5)
743; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v1, v16, v10
744; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(4)
745; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v0, v17, v11
746; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(3)
747; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v7, v4, v12
748; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(2)
749; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v6, v5, v13
750; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
751; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v5, v18, v14
752; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
753; GCN-NOHSA-VI-NEXT:    v_or_b32_e32 v4, v19, v15
754; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16
755; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
756; GCN-NOHSA-VI-NEXT:    s_endpgm
757;
758; EG-LABEL: global_load_v16i16_align2:
759; EG:       ; %bb.0: ; %entry
760; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
761; EG-NEXT:    TEX 1 @6
762; EG-NEXT:    ALU 4, @11, KC0[CB0:0-32], KC1[]
763; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T3.X, 0
764; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T2.X, 1
765; EG-NEXT:    CF_END
766; EG-NEXT:    Fetch clause starting at 6:
767; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1
768; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
769; EG-NEXT:    ALU clause starting at 10:
770; EG-NEXT:     MOV * T0.X, KC0[2].Y,
771; EG-NEXT:    ALU clause starting at 11:
772; EG-NEXT:     LSHR T2.X, KC0[2].Z, literal.x,
773; EG-NEXT:     ADD_INT * T2.W, KC0[2].Z, literal.y,
774; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
775; EG-NEXT:     LSHR * T3.X, PV.W, literal.x,
776; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
777;
778; CM-LABEL: global_load_v16i16_align2:
779; CM:       ; %bb.0: ; %entry
780; CM-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
781; CM-NEXT:    TEX 1 @6
782; CM-NEXT:    ALU 5, @11, KC0[CB0:0-32], KC1[]
783; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0, T3.X
784; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T1, T2.X
785; CM-NEXT:    CF_END
786; CM-NEXT:    Fetch clause starting at 6:
787; CM-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1
788; CM-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
789; CM-NEXT:    ALU clause starting at 10:
790; CM-NEXT:     MOV * T0.X, KC0[2].Y,
791; CM-NEXT:    ALU clause starting at 11:
792; CM-NEXT:     ADD_INT * T2.W, KC0[2].Z, literal.x,
793; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
794; CM-NEXT:     LSHR * T2.X, PV.W, literal.x,
795; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
796; CM-NEXT:     LSHR * T3.X, KC0[2].Z, literal.x,
797; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
798entry:
799  %ld =  load <16 x i16>, <16 x i16> addrspace(1)* %in, align 2
800  store <16 x i16> %ld, <16 x i16> addrspace(1)* %out, align 32
801  ret void
802}
803
804define amdgpu_kernel void @global_zextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(1)* %in) #0 {
805; GCN-NOHSA-SI-LABEL: global_zextload_i16_to_i32:
806; GCN-NOHSA-SI:       ; %bb.0:
807; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
808; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
809; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
810; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
811; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
812; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
813; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
814; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
815; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
816; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
817; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
818; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
819; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
820; GCN-NOHSA-SI-NEXT:    s_endpgm
821;
822; GCN-HSA-LABEL: global_zextload_i16_to_i32:
823; GCN-HSA:       ; %bb.0:
824; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
825; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
826; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
827; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
828; GCN-HSA-NEXT:    flat_load_ushort v2, v[0:1]
829; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
830; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
831; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
832; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
833; GCN-HSA-NEXT:    s_endpgm
834;
835; GCN-NOHSA-VI-LABEL: global_zextload_i16_to_i32:
836; GCN-NOHSA-VI:       ; %bb.0:
837; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
838; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
839; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
840; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
841; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
842; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
843; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
844; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
845; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
846; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
847; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
848; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
849; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
850; GCN-NOHSA-VI-NEXT:    s_endpgm
851;
852; EG-LABEL: global_zextload_i16_to_i32:
853; EG:       ; %bb.0:
854; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
855; EG-NEXT:    TEX 0 @6
856; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
857; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
858; EG-NEXT:    CF_END
859; EG-NEXT:    PAD
860; EG-NEXT:    Fetch clause starting at 6:
861; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
862; EG-NEXT:    ALU clause starting at 8:
863; EG-NEXT:     MOV * T0.X, KC0[2].Z,
864; EG-NEXT:    ALU clause starting at 9:
865; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
866; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
867;
868; CM-LABEL: global_zextload_i16_to_i32:
869; CM:       ; %bb.0:
870; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
871; CM-NEXT:    TEX 0 @6
872; CM-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
873; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0.X, T1.X
874; CM-NEXT:    CF_END
875; CM-NEXT:    PAD
876; CM-NEXT:    Fetch clause starting at 6:
877; CM-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
878; CM-NEXT:    ALU clause starting at 8:
879; CM-NEXT:     MOV * T0.X, KC0[2].Z,
880; CM-NEXT:    ALU clause starting at 9:
881; CM-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
882; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
883  %a = load i16, i16 addrspace(1)* %in
884  %ext = zext i16 %a to i32
885  store i32 %ext, i32 addrspace(1)* %out
886  ret void
887}
888
889define amdgpu_kernel void @global_sextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(1)* %in) #0 {
890; GCN-NOHSA-SI-LABEL: global_sextload_i16_to_i32:
891; GCN-NOHSA-SI:       ; %bb.0:
892; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
893; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
894; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
895; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
896; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
897; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
898; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
899; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
900; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
901; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
902; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
903; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
904; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
905; GCN-NOHSA-SI-NEXT:    s_endpgm
906;
907; GCN-HSA-LABEL: global_sextload_i16_to_i32:
908; GCN-HSA:       ; %bb.0:
909; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
910; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
911; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
912; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
913; GCN-HSA-NEXT:    flat_load_sshort v2, v[0:1]
914; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
915; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
916; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
917; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
918; GCN-HSA-NEXT:    s_endpgm
919;
920; GCN-NOHSA-VI-LABEL: global_sextload_i16_to_i32:
921; GCN-NOHSA-VI:       ; %bb.0:
922; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
923; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
924; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
925; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
926; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
927; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
928; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
929; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
930; GCN-NOHSA-VI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
931; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
932; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
933; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
934; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
935; GCN-NOHSA-VI-NEXT:    s_endpgm
936;
937; EG-LABEL: global_sextload_i16_to_i32:
938; EG:       ; %bb.0:
939; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
940; EG-NEXT:    TEX 0 @6
941; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
942; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
943; EG-NEXT:    CF_END
944; EG-NEXT:    PAD
945; EG-NEXT:    Fetch clause starting at 6:
946; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
947; EG-NEXT:    ALU clause starting at 8:
948; EG-NEXT:     MOV * T0.X, KC0[2].Z,
949; EG-NEXT:    ALU clause starting at 9:
950; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
951; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
952; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
953;
954; CM-LABEL: global_sextload_i16_to_i32:
955; CM:       ; %bb.0:
956; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
957; CM-NEXT:    TEX 0 @6
958; CM-NEXT:    ALU 3, @9, KC0[CB0:0-32], KC1[]
959; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0.X, T1.X
960; CM-NEXT:    CF_END
961; CM-NEXT:    PAD
962; CM-NEXT:    Fetch clause starting at 6:
963; CM-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
964; CM-NEXT:    ALU clause starting at 8:
965; CM-NEXT:     MOV * T0.X, KC0[2].Z,
966; CM-NEXT:    ALU clause starting at 9:
967; CM-NEXT:     BFE_INT * T0.X, T0.X, 0.0, literal.x,
968; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
969; CM-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
970; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
971  %a = load i16, i16 addrspace(1)* %in
972  %ext = sext i16 %a to i32
973  store i32 %ext, i32 addrspace(1)* %out
974  ret void
975}
976
977define amdgpu_kernel void @global_zextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(1)* %in) #0 {
978; GCN-NOHSA-SI-LABEL: global_zextload_v1i16_to_v1i32:
979; GCN-NOHSA-SI:       ; %bb.0:
980; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
981; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
982; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
983; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
984; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
985; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
986; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
987; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
988; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
989; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
990; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
991; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
992; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
993; GCN-NOHSA-SI-NEXT:    s_endpgm
994;
995; GCN-HSA-LABEL: global_zextload_v1i16_to_v1i32:
996; GCN-HSA:       ; %bb.0:
997; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
998; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
999; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1000; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1001; GCN-HSA-NEXT:    flat_load_ushort v2, v[0:1]
1002; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
1003; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
1004; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
1005; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
1006; GCN-HSA-NEXT:    s_endpgm
1007;
1008; GCN-NOHSA-VI-LABEL: global_zextload_v1i16_to_v1i32:
1009; GCN-NOHSA-VI:       ; %bb.0:
1010; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1011; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
1012; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
1013; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
1014; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
1015; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1016; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
1017; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
1018; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
1019; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
1020; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
1021; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
1022; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
1023; GCN-NOHSA-VI-NEXT:    s_endpgm
1024;
1025; EG-LABEL: global_zextload_v1i16_to_v1i32:
1026; EG:       ; %bb.0:
1027; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1028; EG-NEXT:    TEX 0 @6
1029; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
1030; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
1031; EG-NEXT:    CF_END
1032; EG-NEXT:    PAD
1033; EG-NEXT:    Fetch clause starting at 6:
1034; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
1035; EG-NEXT:    ALU clause starting at 8:
1036; EG-NEXT:     MOV * T0.X, KC0[2].Z,
1037; EG-NEXT:    ALU clause starting at 9:
1038; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
1039; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1040;
1041; CM-LABEL: global_zextload_v1i16_to_v1i32:
1042; CM:       ; %bb.0:
1043; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1044; CM-NEXT:    TEX 0 @6
1045; CM-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
1046; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0.X, T1.X
1047; CM-NEXT:    CF_END
1048; CM-NEXT:    PAD
1049; CM-NEXT:    Fetch clause starting at 6:
1050; CM-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
1051; CM-NEXT:    ALU clause starting at 8:
1052; CM-NEXT:     MOV * T0.X, KC0[2].Z,
1053; CM-NEXT:    ALU clause starting at 9:
1054; CM-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
1055; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1056  %load = load <1 x i16>, <1 x i16> addrspace(1)* %in
1057  %ext = zext <1 x i16> %load to <1 x i32>
1058  store <1 x i32> %ext, <1 x i32> addrspace(1)* %out
1059  ret void
1060}
1061
1062define amdgpu_kernel void @global_sextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(1)* %in) #0 {
1063; GCN-NOHSA-SI-LABEL: global_sextload_v1i16_to_v1i32:
1064; GCN-NOHSA-SI:       ; %bb.0:
1065; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1066; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
1067; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
1068; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
1069; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
1070; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1071; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
1072; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
1073; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
1074; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
1075; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
1076; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
1077; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
1078; GCN-NOHSA-SI-NEXT:    s_endpgm
1079;
1080; GCN-HSA-LABEL: global_sextload_v1i16_to_v1i32:
1081; GCN-HSA:       ; %bb.0:
1082; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1083; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1084; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1085; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1086; GCN-HSA-NEXT:    flat_load_sshort v2, v[0:1]
1087; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
1088; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
1089; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
1090; GCN-HSA-NEXT:    flat_store_dword v[0:1], v2
1091; GCN-HSA-NEXT:    s_endpgm
1092;
1093; GCN-NOHSA-VI-LABEL: global_sextload_v1i16_to_v1i32:
1094; GCN-NOHSA-VI:       ; %bb.0:
1095; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1096; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
1097; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
1098; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
1099; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
1100; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1101; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
1102; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
1103; GCN-NOHSA-VI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
1104; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
1105; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
1106; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
1107; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
1108; GCN-NOHSA-VI-NEXT:    s_endpgm
1109;
1110; EG-LABEL: global_sextload_v1i16_to_v1i32:
1111; EG:       ; %bb.0:
1112; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1113; EG-NEXT:    TEX 0 @6
1114; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
1115; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.X, T1.X, 1
1116; EG-NEXT:    CF_END
1117; EG-NEXT:    PAD
1118; EG-NEXT:    Fetch clause starting at 6:
1119; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
1120; EG-NEXT:    ALU clause starting at 8:
1121; EG-NEXT:     MOV * T0.X, KC0[2].Z,
1122; EG-NEXT:    ALU clause starting at 9:
1123; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
1124; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
1125; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
1126;
1127; CM-LABEL: global_sextload_v1i16_to_v1i32:
1128; CM:       ; %bb.0:
1129; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1130; CM-NEXT:    TEX 0 @6
1131; CM-NEXT:    ALU 3, @9, KC0[CB0:0-32], KC1[]
1132; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0.X, T1.X
1133; CM-NEXT:    CF_END
1134; CM-NEXT:    PAD
1135; CM-NEXT:    Fetch clause starting at 6:
1136; CM-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
1137; CM-NEXT:    ALU clause starting at 8:
1138; CM-NEXT:     MOV * T0.X, KC0[2].Z,
1139; CM-NEXT:    ALU clause starting at 9:
1140; CM-NEXT:     BFE_INT * T0.X, T0.X, 0.0, literal.x,
1141; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1142; CM-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
1143; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1144  %load = load <1 x i16>, <1 x i16> addrspace(1)* %in
1145  %ext = sext <1 x i16> %load to <1 x i32>
1146  store <1 x i32> %ext, <1 x i32> addrspace(1)* %out
1147  ret void
1148}
1149
1150define amdgpu_kernel void @global_zextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) #0 {
1151; GCN-NOHSA-SI-LABEL: global_zextload_v2i16_to_v2i32:
1152; GCN-NOHSA-SI:       ; %bb.0:
1153; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1154; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
1155; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
1156; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
1157; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
1158; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1159; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
1160; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
1161; GCN-NOHSA-SI-NEXT:    buffer_load_dword v0, off, s[8:11], 0
1162; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
1163; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
1164; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
1165; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
1166; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1167; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
1168; GCN-NOHSA-SI-NEXT:    s_endpgm
1169;
1170; GCN-HSA-LABEL: global_zextload_v2i16_to_v2i32:
1171; GCN-HSA:       ; %bb.0:
1172; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1173; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1174; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1175; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1176; GCN-HSA-NEXT:    flat_load_dword v2, v[0:1]
1177; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
1178; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
1179; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
1180; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
1181; GCN-HSA-NEXT:    v_and_b32_e32 v2, 0xffff, v2
1182; GCN-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1183; GCN-HSA-NEXT:    s_endpgm
1184;
1185; GCN-NOHSA-VI-LABEL: global_zextload_v2i16_to_v2i32:
1186; GCN-NOHSA-VI:       ; %bb.0:
1187; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1188; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
1189; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
1190; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
1191; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
1192; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1193; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
1194; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
1195; GCN-NOHSA-VI-NEXT:    buffer_load_dword v0, off, s[8:11], 0
1196; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
1197; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
1198; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
1199; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
1200; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
1201; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
1202; GCN-NOHSA-VI-NEXT:    s_endpgm
1203;
1204; EG-LABEL: global_zextload_v2i16_to_v2i32:
1205; EG:       ; %bb.0:
1206; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1207; EG-NEXT:    TEX 0 @6
1208; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
1209; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XY, T5.X, 1
1210; EG-NEXT:    CF_END
1211; EG-NEXT:    PAD
1212; EG-NEXT:    Fetch clause starting at 6:
1213; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1214; EG-NEXT:    ALU clause starting at 8:
1215; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1216; EG-NEXT:    ALU clause starting at 9:
1217; EG-NEXT:     LSHR * T4.Y, T4.X, literal.x,
1218; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1219; EG-NEXT:     AND_INT T4.X, T4.X, literal.x,
1220; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
1221; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
1222;
1223; CM-LABEL: global_zextload_v2i16_to_v2i32:
1224; CM:       ; %bb.0:
1225; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1226; CM-NEXT:    TEX 0 @6
1227; CM-NEXT:    ALU 5, @9, KC0[CB0:0-32], KC1[]
1228; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T4, T5.X
1229; CM-NEXT:    CF_END
1230; CM-NEXT:    PAD
1231; CM-NEXT:    Fetch clause starting at 6:
1232; CM-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1233; CM-NEXT:    ALU clause starting at 8:
1234; CM-NEXT:     MOV * T4.X, KC0[2].Z,
1235; CM-NEXT:    ALU clause starting at 9:
1236; CM-NEXT:     LSHR * T4.Y, T4.X, literal.x,
1237; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1238; CM-NEXT:     AND_INT * T4.X, T4.X, literal.x,
1239; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1240; CM-NEXT:     LSHR * T5.X, KC0[2].Y, literal.x,
1241; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1242  %load = load <2 x i16>, <2 x i16> addrspace(1)* %in
1243  %ext = zext <2 x i16> %load to <2 x i32>
1244  store <2 x i32> %ext, <2 x i32> addrspace(1)* %out
1245  ret void
1246}
1247
1248; TODO: This should use ASHR instead of LSHR + BFE
1249define amdgpu_kernel void @global_sextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) #0 {
1250; GCN-NOHSA-SI-LABEL: global_sextload_v2i16_to_v2i32:
1251; GCN-NOHSA-SI:       ; %bb.0:
1252; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1253; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
1254; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
1255; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
1256; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
1257; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1258; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
1259; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
1260; GCN-NOHSA-SI-NEXT:    buffer_load_dword v0, off, s[8:11], 0
1261; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
1262; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
1263; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
1264; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 16, v0
1265; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v0, 0, 16
1266; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
1267; GCN-NOHSA-SI-NEXT:    s_endpgm
1268;
1269; GCN-HSA-LABEL: global_sextload_v2i16_to_v2i32:
1270; GCN-HSA:       ; %bb.0:
1271; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1272; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1273; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1274; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1275; GCN-HSA-NEXT:    flat_load_dword v2, v[0:1]
1276; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
1277; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
1278; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
1279; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 16, v2
1280; GCN-HSA-NEXT:    v_bfe_i32 v2, v2, 0, 16
1281; GCN-HSA-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1282; GCN-HSA-NEXT:    s_endpgm
1283;
1284; GCN-NOHSA-VI-LABEL: global_sextload_v2i16_to_v2i32:
1285; GCN-NOHSA-VI:       ; %bb.0:
1286; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1287; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
1288; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
1289; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
1290; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
1291; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1292; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
1293; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
1294; GCN-NOHSA-VI-NEXT:    buffer_load_dword v0, off, s[8:11], 0
1295; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
1296; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
1297; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
1298; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 16, v0
1299; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v0, 0, 16
1300; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
1301; GCN-NOHSA-VI-NEXT:    s_endpgm
1302;
1303; EG-LABEL: global_sextload_v2i16_to_v2i32:
1304; EG:       ; %bb.0:
1305; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1306; EG-NEXT:    TEX 0 @6
1307; EG-NEXT:    ALU 5, @9, KC0[CB0:0-32], KC1[]
1308; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XY, T4.X, 1
1309; EG-NEXT:    CF_END
1310; EG-NEXT:    PAD
1311; EG-NEXT:    Fetch clause starting at 6:
1312; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1313; EG-NEXT:    ALU clause starting at 8:
1314; EG-NEXT:     MOV * T4.X, KC0[2].Z,
1315; EG-NEXT:    ALU clause starting at 9:
1316; EG-NEXT:     BFE_INT T5.X, T4.X, 0.0, literal.x,
1317; EG-NEXT:     LSHR T0.W, T4.X, literal.x,
1318; EG-NEXT:     LSHR * T4.X, KC0[2].Y, literal.y,
1319; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
1320; EG-NEXT:     BFE_INT * T5.Y, PV.W, 0.0, literal.x,
1321; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1322;
1323; CM-LABEL: global_sextload_v2i16_to_v2i32:
1324; CM:       ; %bb.0:
1325; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1326; CM-NEXT:    TEX 0 @6
1327; CM-NEXT:    ALU 5, @9, KC0[CB0:0-32], KC1[]
1328; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T5, T4.X
1329; CM-NEXT:    CF_END
1330; CM-NEXT:    PAD
1331; CM-NEXT:    Fetch clause starting at 6:
1332; CM-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
1333; CM-NEXT:    ALU clause starting at 8:
1334; CM-NEXT:     MOV * T4.X, KC0[2].Z,
1335; CM-NEXT:    ALU clause starting at 9:
1336; CM-NEXT:     BFE_INT T5.X, T4.X, 0.0, literal.x,
1337; CM-NEXT:     LSHR * T0.W, T4.X, literal.x,
1338; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1339; CM-NEXT:     LSHR T4.X, KC0[2].Y, literal.x,
1340; CM-NEXT:     BFE_INT * T5.Y, PV.W, 0.0, literal.y,
1341; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1342  %load = load <2 x i16>, <2 x i16> addrspace(1)* %in
1343  %ext = sext <2 x i16> %load to <2 x i32>
1344  store <2 x i32> %ext, <2 x i32> addrspace(1)* %out
1345  ret void
1346}
1347
1348define amdgpu_kernel void @global_zextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(1)* %in) {
1349; GCN-NOHSA-SI-LABEL: global_zextload_v3i16_to_v3i32:
1350; GCN-NOHSA-SI:       ; %bb.0: ; %entry
1351; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1352; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
1353; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
1354; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
1355; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
1356; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1357; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
1358; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
1359; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 0
1360; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, 0xffff
1361; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
1362; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
1363; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
1364; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
1365; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v2, s2, v0
1366; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, s2, v1
1367; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0 offset:8
1368; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[2:3], off, s[4:7], 0
1369; GCN-NOHSA-SI-NEXT:    s_endpgm
1370;
1371; GCN-HSA-LABEL: global_zextload_v3i16_to_v3i32:
1372; GCN-HSA:       ; %bb.0: ; %entry
1373; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1374; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1375; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1376; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1377; GCN-HSA-NEXT:    flat_load_dwordx2 v[3:4], v[0:1]
1378; GCN-HSA-NEXT:    s_mov_b32 s2, 0xffff
1379; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s0
1380; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s1
1381; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
1382; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v3
1383; GCN-HSA-NEXT:    v_and_b32_e32 v2, s2, v4
1384; GCN-HSA-NEXT:    v_and_b32_e32 v0, s2, v3
1385; GCN-HSA-NEXT:    flat_store_dwordx3 v[5:6], v[0:2]
1386; GCN-HSA-NEXT:    s_endpgm
1387;
1388; GCN-NOHSA-VI-LABEL: global_zextload_v3i16_to_v3i32:
1389; GCN-NOHSA-VI:       ; %bb.0: ; %entry
1390; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1391; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
1392; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
1393; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
1394; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
1395; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1396; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
1397; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
1398; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 0
1399; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, 0xffff
1400; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
1401; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
1402; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
1403; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v2, s2, v1
1404; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
1405; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, s2, v0
1406; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx3 v[0:2], off, s[4:7], 0
1407; GCN-NOHSA-VI-NEXT:    s_endpgm
1408;
1409; EG-LABEL: global_zextload_v3i16_to_v3i32:
1410; EG:       ; %bb.0: ; %entry
1411; EG-NEXT:    ALU 4, @12, KC0[CB0:0-32], KC1[]
1412; EG-NEXT:    TEX 2 @6
1413; EG-NEXT:    ALU 2, @17, KC0[], KC1[]
1414; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T2.X, T4.X, 0
1415; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T3.XY, T0.X, 1
1416; EG-NEXT:    CF_END
1417; EG-NEXT:    Fetch clause starting at 6:
1418; EG-NEXT:     VTX_READ_16 T2.X, T1.X, 4, #1
1419; EG-NEXT:     VTX_READ_16 T3.X, T1.X, 0, #1
1420; EG-NEXT:     VTX_READ_16 T1.X, T1.X, 2, #1
1421; EG-NEXT:    ALU clause starting at 12:
1422; EG-NEXT:     LSHR T0.X, KC0[2].Y, literal.x,
1423; EG-NEXT:     MOV * T1.X, KC0[2].Z,
1424; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1425; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
1426; EG-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1427; EG-NEXT:    ALU clause starting at 17:
1428; EG-NEXT:     LSHR T4.X, T0.W, literal.x,
1429; EG-NEXT:     MOV * T3.Y, T1.X,
1430; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1431;
1432; CM-LABEL: global_zextload_v3i16_to_v3i32:
1433; CM:       ; %bb.0: ; %entry
1434; CM-NEXT:    ALU 4, @12, KC0[CB0:0-32], KC1[]
1435; CM-NEXT:    TEX 2 @6
1436; CM-NEXT:    ALU 2, @17, KC0[CB0:0-32], KC1[]
1437; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T3, T4.X
1438; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T2.X, T0.X
1439; CM-NEXT:    CF_END
1440; CM-NEXT:    Fetch clause starting at 6:
1441; CM-NEXT:     VTX_READ_16 T2.X, T1.X, 4, #1
1442; CM-NEXT:     VTX_READ_16 T3.X, T1.X, 0, #1
1443; CM-NEXT:     VTX_READ_16 T1.X, T1.X, 2, #1
1444; CM-NEXT:    ALU clause starting at 12:
1445; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
1446; CM-NEXT:    8(1.121039e-44), 0(0.000000e+00)
1447; CM-NEXT:     LSHR * T0.X, PV.W, literal.x,
1448; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1449; CM-NEXT:     MOV * T1.X, KC0[2].Z,
1450; CM-NEXT:    ALU clause starting at 17:
1451; CM-NEXT:     LSHR T4.X, KC0[2].Y, literal.x,
1452; CM-NEXT:     MOV * T3.Y, T1.X,
1453; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1454entry:
1455  %ld = load <3 x i16>, <3 x i16> addrspace(1)* %in
1456  %ext = zext <3 x i16> %ld to <3 x i32>
1457  store <3 x i32> %ext, <3 x i32> addrspace(1)* %out
1458  ret void
1459}
1460
1461define amdgpu_kernel void @global_sextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(1)* %in) {
1462; GCN-NOHSA-SI-LABEL: global_sextload_v3i16_to_v3i32:
1463; GCN-NOHSA-SI:       ; %bb.0: ; %entry
1464; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1465; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
1466; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
1467; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
1468; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
1469; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1470; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
1471; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
1472; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 0
1473; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
1474; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
1475; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
1476; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v3, 16, v0
1477; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v2, v0, 0, 16
1478; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v1, 0, 16
1479; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0 offset:8
1480; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[2:3], off, s[4:7], 0
1481; GCN-NOHSA-SI-NEXT:    s_endpgm
1482;
1483; GCN-HSA-LABEL: global_sextload_v3i16_to_v3i32:
1484; GCN-HSA:       ; %bb.0: ; %entry
1485; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1486; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1487; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1488; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1489; GCN-HSA-NEXT:    flat_load_dwordx2 v[3:4], v[0:1]
1490; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s0
1491; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s1
1492; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
1493; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v3
1494; GCN-HSA-NEXT:    v_bfe_i32 v2, v4, 0, 16
1495; GCN-HSA-NEXT:    v_bfe_i32 v0, v3, 0, 16
1496; GCN-HSA-NEXT:    flat_store_dwordx3 v[5:6], v[0:2]
1497; GCN-HSA-NEXT:    s_endpgm
1498;
1499; GCN-NOHSA-VI-LABEL: global_sextload_v3i16_to_v3i32:
1500; GCN-NOHSA-VI:       ; %bb.0: ; %entry
1501; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1502; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
1503; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
1504; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
1505; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
1506; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1507; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
1508; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
1509; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx2 v[3:4], off, s[8:11], 0
1510; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
1511; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
1512; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
1513; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 16, v3
1514; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v4, 0, 16
1515; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v3, 0, 16
1516; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx3 v[0:2], off, s[4:7], 0
1517; GCN-NOHSA-VI-NEXT:    s_endpgm
1518;
1519; EG-LABEL: global_sextload_v3i16_to_v3i32:
1520; EG:       ; %bb.0: ; %entry
1521; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
1522; EG-NEXT:    TEX 2 @6
1523; EG-NEXT:    ALU 9, @13, KC0[CB0:0-32], KC1[]
1524; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T2.X, T3.X, 0
1525; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
1526; EG-NEXT:    CF_END
1527; EG-NEXT:    Fetch clause starting at 6:
1528; EG-NEXT:     VTX_READ_16 T1.X, T0.X, 2, #1
1529; EG-NEXT:     VTX_READ_16 T2.X, T0.X, 4, #1
1530; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
1531; EG-NEXT:    ALU clause starting at 12:
1532; EG-NEXT:     MOV * T0.X, KC0[2].Z,
1533; EG-NEXT:    ALU clause starting at 13:
1534; EG-NEXT:     BFE_INT * T0.Y, T1.X, 0.0, literal.x,
1535; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1536; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
1537; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
1538; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
1539; EG-NEXT:     BFE_INT T2.X, T2.X, 0.0, literal.x,
1540; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1541; EG-NEXT:    16(2.242078e-44), 8(1.121039e-44)
1542; EG-NEXT:     LSHR * T3.X, PV.W, literal.x,
1543; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1544;
1545; CM-LABEL: global_sextload_v3i16_to_v3i32:
1546; CM:       ; %bb.0: ; %entry
1547; CM-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
1548; CM-NEXT:    TEX 2 @6
1549; CM-NEXT:    ALU 9, @13, KC0[CB0:0-32], KC1[]
1550; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0, T2.X
1551; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T1.X, T3.X
1552; CM-NEXT:    CF_END
1553; CM-NEXT:    Fetch clause starting at 6:
1554; CM-NEXT:     VTX_READ_16 T1.X, T0.X, 4, #1
1555; CM-NEXT:     VTX_READ_16 T2.X, T0.X, 0, #1
1556; CM-NEXT:     VTX_READ_16 T0.X, T0.X, 2, #1
1557; CM-NEXT:    ALU clause starting at 12:
1558; CM-NEXT:     MOV * T0.X, KC0[2].Z,
1559; CM-NEXT:    ALU clause starting at 13:
1560; CM-NEXT:     BFE_INT T1.X, T1.X, 0.0, literal.x,
1561; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1562; CM-NEXT:    16(2.242078e-44), 8(1.121039e-44)
1563; CM-NEXT:     LSHR T3.X, PV.W, literal.x,
1564; CM-NEXT:     BFE_INT * T0.Y, T0.X, 0.0, literal.y,
1565; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1566; CM-NEXT:     BFE_INT * T0.X, T2.X, 0.0, literal.x,
1567; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1568; CM-NEXT:     LSHR * T2.X, KC0[2].Y, literal.x,
1569; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1570entry:
1571  %ld = load <3 x i16>, <3 x i16> addrspace(1)* %in
1572  %ext = sext <3 x i16> %ld to <3 x i32>
1573  store <3 x i32> %ext, <3 x i32> addrspace(1)* %out
1574  ret void
1575}
1576
1577; TODO: This should use DST, but for some there are redundant MOVs
1578define amdgpu_kernel void @global_zextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 {
1579; GCN-NOHSA-SI-LABEL: global_zextload_v4i16_to_v4i32:
1580; GCN-NOHSA-SI:       ; %bb.0:
1581; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1582; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
1583; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
1584; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
1585; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
1586; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1587; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
1588; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
1589; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx2 v[4:5], off, s[8:11], 0
1590; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, 0xffff
1591; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
1592; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
1593; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
1594; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v5
1595; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v4
1596; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v2, s2, v5
1597; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, s2, v4
1598; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1599; GCN-NOHSA-SI-NEXT:    s_endpgm
1600;
1601; GCN-HSA-LABEL: global_zextload_v4i16_to_v4i32:
1602; GCN-HSA:       ; %bb.0:
1603; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1604; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1605; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1606; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1607; GCN-HSA-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]
1608; GCN-HSA-NEXT:    s_mov_b32 s2, 0xffff
1609; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s0
1610; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s1
1611; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
1612; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v5
1613; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v4
1614; GCN-HSA-NEXT:    v_and_b32_e32 v2, s2, v5
1615; GCN-HSA-NEXT:    v_and_b32_e32 v0, s2, v4
1616; GCN-HSA-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
1617; GCN-HSA-NEXT:    s_endpgm
1618;
1619; GCN-NOHSA-VI-LABEL: global_zextload_v4i16_to_v4i32:
1620; GCN-NOHSA-VI:       ; %bb.0:
1621; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1622; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
1623; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
1624; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
1625; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
1626; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1627; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
1628; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
1629; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 0
1630; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, 0xffff
1631; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
1632; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
1633; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
1634; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
1635; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v2, s2, v1
1636; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
1637; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, s2, v0
1638; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1639; GCN-NOHSA-VI-NEXT:    s_endpgm
1640;
1641; EG-LABEL: global_zextload_v4i16_to_v4i32:
1642; EG:       ; %bb.0:
1643; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1644; EG-NEXT:    TEX 0 @6
1645; EG-NEXT:    ALU 12, @9, KC0[CB0:0-32], KC1[]
1646; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1
1647; EG-NEXT:    CF_END
1648; EG-NEXT:    PAD
1649; EG-NEXT:    Fetch clause starting at 6:
1650; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1651; EG-NEXT:    ALU clause starting at 8:
1652; EG-NEXT:     MOV * T5.X, KC0[2].Z,
1653; EG-NEXT:    ALU clause starting at 9:
1654; EG-NEXT:     MOV T2.X, T5.X,
1655; EG-NEXT:     MOV * T3.X, T5.Y,
1656; EG-NEXT:     MOV T0.Y, PV.X,
1657; EG-NEXT:     MOV * T0.Z, PS,
1658; EG-NEXT:     LSHR * T5.W, PV.Z, literal.x,
1659; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1660; EG-NEXT:     AND_INT * T5.Z, T0.Z, literal.x,
1661; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1662; EG-NEXT:     LSHR * T5.Y, T0.Y, literal.x,
1663; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1664; EG-NEXT:     AND_INT T5.X, T0.Y, literal.x,
1665; EG-NEXT:     LSHR * T6.X, KC0[2].Y, literal.y,
1666; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
1667;
1668; CM-LABEL: global_zextload_v4i16_to_v4i32:
1669; CM:       ; %bb.0:
1670; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1671; CM-NEXT:    TEX 0 @6
1672; CM-NEXT:    ALU 13, @9, KC0[CB0:0-32], KC1[]
1673; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T5, T6.X
1674; CM-NEXT:    CF_END
1675; CM-NEXT:    PAD
1676; CM-NEXT:    Fetch clause starting at 6:
1677; CM-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1678; CM-NEXT:    ALU clause starting at 8:
1679; CM-NEXT:     MOV * T5.X, KC0[2].Z,
1680; CM-NEXT:    ALU clause starting at 9:
1681; CM-NEXT:     MOV * T2.X, T5.X,
1682; CM-NEXT:     MOV T3.X, T5.Y,
1683; CM-NEXT:     MOV * T0.Y, PV.X,
1684; CM-NEXT:     MOV * T0.Z, PV.X,
1685; CM-NEXT:     LSHR * T5.W, PV.Z, literal.x,
1686; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1687; CM-NEXT:     AND_INT * T5.Z, T0.Z, literal.x,
1688; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1689; CM-NEXT:     LSHR * T5.Y, T0.Y, literal.x,
1690; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1691; CM-NEXT:     AND_INT * T5.X, T0.Y, literal.x,
1692; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1693; CM-NEXT:     LSHR * T6.X, KC0[2].Y, literal.x,
1694; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1695  %load = load <4 x i16>, <4 x i16> addrspace(1)* %in
1696  %ext = zext <4 x i16> %load to <4 x i32>
1697  store <4 x i32> %ext, <4 x i32> addrspace(1)* %out
1698  ret void
1699}
1700
1701; TODO: We should use ASHR instead of LSHR + BFE
1702; TODO: This should use DST, but for some there are redundant MOVs
1703define amdgpu_kernel void @global_sextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 {
1704; GCN-NOHSA-SI-LABEL: global_sextload_v4i16_to_v4i32:
1705; GCN-NOHSA-SI:       ; %bb.0:
1706; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1707; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
1708; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
1709; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
1710; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
1711; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1712; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
1713; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
1714; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx2 v[3:4], off, s[8:11], 0
1715; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
1716; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
1717; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
1718; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 16, v3
1719; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[5:6], v[3:4], 48
1720; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v2, v4, 0, 16
1721; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v3, 0, 16
1722; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v5
1723; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1724; GCN-NOHSA-SI-NEXT:    s_endpgm
1725;
1726; GCN-HSA-LABEL: global_sextload_v4i16_to_v4i32:
1727; GCN-HSA:       ; %bb.0:
1728; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1729; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1730; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1731; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1732; GCN-HSA-NEXT:    flat_load_dwordx2 v[3:4], v[0:1]
1733; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s0
1734; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s1
1735; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
1736; GCN-HSA-NEXT:    v_ashr_i64 v[7:8], v[3:4], 48
1737; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v3
1738; GCN-HSA-NEXT:    v_bfe_i32 v2, v4, 0, 16
1739; GCN-HSA-NEXT:    v_bfe_i32 v0, v3, 0, 16
1740; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v7
1741; GCN-HSA-NEXT:    flat_store_dwordx4 v[5:6], v[0:3]
1742; GCN-HSA-NEXT:    s_endpgm
1743;
1744; GCN-NOHSA-VI-LABEL: global_sextload_v4i16_to_v4i32:
1745; GCN-NOHSA-VI:       ; %bb.0:
1746; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1747; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
1748; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
1749; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
1750; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
1751; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1752; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
1753; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
1754; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx2 v[4:5], off, s[8:11], 0
1755; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
1756; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
1757; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
1758; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 16, v5
1759; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 16, v4
1760; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v5, 0, 16
1761; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v4, 0, 16
1762; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
1763; GCN-NOHSA-VI-NEXT:    s_endpgm
1764;
1765; EG-LABEL: global_sextload_v4i16_to_v4i32:
1766; EG:       ; %bb.0:
1767; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1768; EG-NEXT:    TEX 0 @6
1769; EG-NEXT:    ALU 14, @9, KC0[CB0:0-32], KC1[]
1770; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1
1771; EG-NEXT:    CF_END
1772; EG-NEXT:    PAD
1773; EG-NEXT:    Fetch clause starting at 6:
1774; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1775; EG-NEXT:    ALU clause starting at 8:
1776; EG-NEXT:     MOV * T5.X, KC0[2].Z,
1777; EG-NEXT:    ALU clause starting at 9:
1778; EG-NEXT:     MOV T2.X, T5.X,
1779; EG-NEXT:     MOV * T3.X, T5.Y,
1780; EG-NEXT:     MOV T0.Y, PV.X,
1781; EG-NEXT:     MOV * T0.Z, PS,
1782; EG-NEXT:     BFE_INT * T5.Z, PV.Z, 0.0, literal.x,
1783; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1784; EG-NEXT:     BFE_INT T5.X, T0.Y, 0.0, literal.x,
1785; EG-NEXT:     LSHR * T0.W, T0.Z, literal.x,
1786; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1787; EG-NEXT:     BFE_INT T5.W, PV.W, 0.0, literal.x,
1788; EG-NEXT:     LSHR * T0.W, T0.Y, literal.x,
1789; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1790; EG-NEXT:     LSHR T6.X, KC0[2].Y, literal.x,
1791; EG-NEXT:     BFE_INT * T5.Y, PS, 0.0, literal.y,
1792; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1793;
1794; CM-LABEL: global_sextload_v4i16_to_v4i32:
1795; CM:       ; %bb.0:
1796; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1797; CM-NEXT:    TEX 0 @6
1798; CM-NEXT:    ALU 14, @9, KC0[CB0:0-32], KC1[]
1799; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T5, T6.X
1800; CM-NEXT:    CF_END
1801; CM-NEXT:    PAD
1802; CM-NEXT:    Fetch clause starting at 6:
1803; CM-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
1804; CM-NEXT:    ALU clause starting at 8:
1805; CM-NEXT:     MOV * T5.X, KC0[2].Z,
1806; CM-NEXT:    ALU clause starting at 9:
1807; CM-NEXT:     MOV * T2.X, T5.X,
1808; CM-NEXT:     MOV T3.X, T5.Y,
1809; CM-NEXT:     MOV * T0.Y, PV.X,
1810; CM-NEXT:     MOV * T0.Z, PV.X,
1811; CM-NEXT:     BFE_INT * T5.Z, PV.Z, 0.0, literal.x,
1812; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1813; CM-NEXT:     BFE_INT T5.X, T0.Y, 0.0, literal.x,
1814; CM-NEXT:     LSHR * T0.W, T0.Z, literal.x,
1815; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1816; CM-NEXT:     LSHR T0.Z, T0.Y, literal.x,
1817; CM-NEXT:     BFE_INT * T5.W, PV.W, 0.0, literal.x,
1818; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1819; CM-NEXT:     LSHR T6.X, KC0[2].Y, literal.x,
1820; CM-NEXT:     BFE_INT * T5.Y, PV.Z, 0.0, literal.y,
1821; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1822  %load = load <4 x i16>, <4 x i16> addrspace(1)* %in
1823  %ext = sext <4 x i16> %load to <4 x i32>
1824  store <4 x i32> %ext, <4 x i32> addrspace(1)* %out
1825  ret void
1826}
1827
1828; TODO: These should use LSHR instead of BFE_UINT
1829define amdgpu_kernel void @global_zextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 {
1830; GCN-NOHSA-SI-LABEL: global_zextload_v8i16_to_v8i32:
1831; GCN-NOHSA-SI:       ; %bb.0:
1832; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1833; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
1834; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
1835; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
1836; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
1837; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1838; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
1839; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
1840; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
1841; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, 0xffff
1842; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
1843; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
1844; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
1845; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v1
1846; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v0
1847; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v3
1848; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v2
1849; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v6, s2, v1
1850; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v4, s2, v0
1851; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v10, s2, v3
1852; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v8, s2, v2
1853; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16
1854; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
1855; GCN-NOHSA-SI-NEXT:    s_endpgm
1856;
1857; GCN-HSA-LABEL: global_zextload_v8i16_to_v8i32:
1858; GCN-HSA:       ; %bb.0:
1859; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
1860; GCN-HSA-NEXT:    s_mov_b32 s4, 0xffff
1861; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
1862; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
1863; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
1864; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
1865; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
1866; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
1867; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s3
1868; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s1
1869; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s2
1870; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s0
1871; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
1872; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v11, 16, v3
1873; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v9, 16, v2
1874; GCN-HSA-NEXT:    v_and_b32_e32 v10, s4, v3
1875; GCN-HSA-NEXT:    v_and_b32_e32 v8, s4, v2
1876; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v1
1877; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v5, 16, v0
1878; GCN-HSA-NEXT:    v_and_b32_e32 v6, s4, v1
1879; GCN-HSA-NEXT:    v_and_b32_e32 v4, s4, v0
1880; GCN-HSA-NEXT:    flat_store_dwordx4 v[14:15], v[8:11]
1881; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[4:7]
1882; GCN-HSA-NEXT:    s_endpgm
1883;
1884; GCN-NOHSA-VI-LABEL: global_zextload_v8i16_to_v8i32:
1885; GCN-NOHSA-VI:       ; %bb.0:
1886; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
1887; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
1888; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
1889; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
1890; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
1891; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
1892; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
1893; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
1894; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
1895; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, 0xffff
1896; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
1897; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
1898; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
1899; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v11, 16, v3
1900; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v10, s2, v3
1901; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v9, 16, v2
1902; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v8, s2, v2
1903; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v7, 16, v1
1904; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v6, s2, v1
1905; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v0
1906; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v4, s2, v0
1907; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16
1908; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
1909; GCN-NOHSA-VI-NEXT:    s_endpgm
1910;
1911; EG-LABEL: global_zextload_v8i16_to_v8i32:
1912; EG:       ; %bb.0:
1913; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1914; EG-NEXT:    TEX 0 @6
1915; EG-NEXT:    ALU 17, @9, KC0[CB0:0-32], KC1[]
1916; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0
1917; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1
1918; EG-NEXT:    CF_END
1919; EG-NEXT:    Fetch clause starting at 6:
1920; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
1921; EG-NEXT:    ALU clause starting at 8:
1922; EG-NEXT:     MOV * T7.X, KC0[2].Z,
1923; EG-NEXT:    ALU clause starting at 9:
1924; EG-NEXT:     LSHR * T8.W, T7.Y, literal.x,
1925; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1926; EG-NEXT:     AND_INT * T8.Z, T7.Y, literal.x,
1927; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1928; EG-NEXT:     LSHR T8.Y, T7.X, literal.x,
1929; EG-NEXT:     LSHR * T9.W, T7.W, literal.x,
1930; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1931; EG-NEXT:     AND_INT T8.X, T7.X, literal.x,
1932; EG-NEXT:     AND_INT T9.Z, T7.W, literal.x,
1933; EG-NEXT:     LSHR * T7.X, KC0[2].Y, literal.y,
1934; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
1935; EG-NEXT:     LSHR * T9.Y, T7.Z, literal.x,
1936; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1937; EG-NEXT:     AND_INT T9.X, T7.Z, literal.x,
1938; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1939; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
1940; EG-NEXT:     LSHR * T10.X, PV.W, literal.x,
1941; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1942;
1943; CM-LABEL: global_zextload_v8i16_to_v8i32:
1944; CM:       ; %bb.0:
1945; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
1946; CM-NEXT:    TEX 0 @6
1947; CM-NEXT:    ALU 17, @9, KC0[CB0:0-32], KC1[]
1948; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T7, T10.X
1949; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T8, T9.X
1950; CM-NEXT:    CF_END
1951; CM-NEXT:    Fetch clause starting at 6:
1952; CM-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
1953; CM-NEXT:    ALU clause starting at 8:
1954; CM-NEXT:     MOV * T7.X, KC0[2].Z,
1955; CM-NEXT:    ALU clause starting at 9:
1956; CM-NEXT:     LSHR * T8.W, T7.W, literal.x,
1957; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1958; CM-NEXT:     AND_INT * T8.Z, T7.W, literal.x,
1959; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1960; CM-NEXT:     LSHR T8.Y, T7.Z, literal.x,
1961; CM-NEXT:     LSHR * T7.W, T7.Y, literal.x,
1962; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
1963; CM-NEXT:     AND_INT T8.X, T7.Z, literal.x,
1964; CM-NEXT:     AND_INT T7.Z, T7.Y, literal.x,
1965; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
1966; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
1967; CM-NEXT:     LSHR T9.X, PV.W, literal.x,
1968; CM-NEXT:     LSHR * T7.Y, T7.X, literal.y,
1969; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
1970; CM-NEXT:     AND_INT * T7.X, T7.X, literal.x,
1971; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
1972; CM-NEXT:     LSHR * T10.X, KC0[2].Y, literal.x,
1973; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
1974  %load = load <8 x i16>, <8 x i16> addrspace(1)* %in
1975  %ext = zext <8 x i16> %load to <8 x i32>
1976  store <8 x i32> %ext, <8 x i32> addrspace(1)* %out
1977  ret void
1978}
1979
1980; TODO: These should use ASHR instead of LSHR + BFE_INT
1981define amdgpu_kernel void @global_sextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 {
1982; GCN-NOHSA-SI-LABEL: global_sextload_v8i16_to_v8i32:
1983; GCN-NOHSA-SI:       ; %bb.0:
1984; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
1985; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
1986; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
1987; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
1988; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
1989; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
1990; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
1991; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
1992; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
1993; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
1994; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
1995; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
1996; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v7, 16, v1
1997; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v5, 16, v0
1998; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v6, v1, 0, 16
1999; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v4, v0, 0, 16
2000; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v11, 16, v3
2001; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v9, 16, v2
2002; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v10, v3, 0, 16
2003; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v8, v2, 0, 16
2004; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16
2005; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2006; GCN-NOHSA-SI-NEXT:    s_endpgm
2007;
2008; GCN-HSA-LABEL: global_sextload_v8i16_to_v8i32:
2009; GCN-HSA:       ; %bb.0:
2010; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
2011; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2012; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
2013; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
2014; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
2015; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
2016; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2017; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s3
2018; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s1
2019; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s2
2020; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s0
2021; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
2022; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v11, 16, v3
2023; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 16, v2
2024; GCN-HSA-NEXT:    v_bfe_i32 v10, v3, 0, 16
2025; GCN-HSA-NEXT:    v_bfe_i32 v8, v2, 0, 16
2026; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v7, 16, v1
2027; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v5, 16, v0
2028; GCN-HSA-NEXT:    v_bfe_i32 v6, v1, 0, 16
2029; GCN-HSA-NEXT:    v_bfe_i32 v4, v0, 0, 16
2030; GCN-HSA-NEXT:    flat_store_dwordx4 v[14:15], v[8:11]
2031; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[4:7]
2032; GCN-HSA-NEXT:    s_endpgm
2033;
2034; GCN-NOHSA-VI-LABEL: global_sextload_v8i16_to_v8i32:
2035; GCN-NOHSA-VI:       ; %bb.0:
2036; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
2037; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
2038; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
2039; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
2040; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
2041; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2042; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
2043; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
2044; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
2045; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
2046; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
2047; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
2048; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v11, 16, v3
2049; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v9, 16, v2
2050; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v10, v3, 0, 16
2051; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v8, v2, 0, 16
2052; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v7, 16, v1
2053; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v5, 16, v0
2054; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v6, v1, 0, 16
2055; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v4, v0, 0, 16
2056; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:16
2057; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
2058; GCN-NOHSA-VI-NEXT:    s_endpgm
2059;
2060; EG-LABEL: global_sextload_v8i16_to_v8i32:
2061; EG:       ; %bb.0:
2062; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
2063; EG-NEXT:    TEX 0 @6
2064; EG-NEXT:    ALU 19, @9, KC0[CB0:0-32], KC1[]
2065; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T10.X, 0
2066; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T7.X, 1
2067; EG-NEXT:    CF_END
2068; EG-NEXT:    Fetch clause starting at 6:
2069; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
2070; EG-NEXT:    ALU clause starting at 8:
2071; EG-NEXT:     MOV * T7.X, KC0[2].Z,
2072; EG-NEXT:    ALU clause starting at 9:
2073; EG-NEXT:     BFE_INT * T8.Z, T7.Y, 0.0, literal.x,
2074; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2075; EG-NEXT:     BFE_INT T8.X, T7.X, 0.0, literal.x,
2076; EG-NEXT:     BFE_INT T9.Z, T7.W, 0.0, literal.x,
2077; EG-NEXT:     LSHR * T0.W, T7.Y, literal.x,
2078; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2079; EG-NEXT:     BFE_INT T9.X, T7.Z, 0.0, literal.x,
2080; EG-NEXT:     LSHR T0.Z, T7.W, literal.x,
2081; EG-NEXT:     BFE_INT T8.W, PV.W, 0.0, literal.x,
2082; EG-NEXT:     LSHR * T0.W, T7.X, literal.x,
2083; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2084; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
2085; EG-NEXT:     BFE_INT T8.Y, PS, 0.0, literal.y,
2086; EG-NEXT:     LSHR T1.Z, T7.Z, literal.y,
2087; EG-NEXT:     BFE_INT T9.W, PV.Z, 0.0, literal.y,
2088; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2089; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2090; EG-NEXT:     LSHR T10.X, PS, literal.x,
2091; EG-NEXT:     BFE_INT * T9.Y, PV.Z, 0.0, literal.y,
2092; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2093;
2094; CM-LABEL: global_sextload_v8i16_to_v8i32:
2095; CM:       ; %bb.0:
2096; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
2097; CM-NEXT:    TEX 0 @6
2098; CM-NEXT:    ALU 19, @9, KC0[CB0:0-32], KC1[]
2099; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T9, T7.X
2100; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T8, T10.X
2101; CM-NEXT:    CF_END
2102; CM-NEXT:    Fetch clause starting at 6:
2103; CM-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
2104; CM-NEXT:    ALU clause starting at 8:
2105; CM-NEXT:     MOV * T7.X, KC0[2].Z,
2106; CM-NEXT:    ALU clause starting at 9:
2107; CM-NEXT:     BFE_INT * T8.Z, T7.W, 0.0, literal.x,
2108; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2109; CM-NEXT:     BFE_INT T8.X, T7.Z, 0.0, literal.x,
2110; CM-NEXT:     LSHR T0.Y, T7.Y, literal.x,
2111; CM-NEXT:     BFE_INT T9.Z, T7.Y, 0.0, literal.x,
2112; CM-NEXT:     LSHR * T0.W, T7.W, literal.x,
2113; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2114; CM-NEXT:     BFE_INT T9.X, T7.X, 0.0, literal.x,
2115; CM-NEXT:     LSHR T1.Y, T7.Z, literal.x,
2116; CM-NEXT:     ADD_INT T0.Z, KC0[2].Y, literal.x,
2117; CM-NEXT:     BFE_INT * T8.W, PV.W, 0.0, literal.x,
2118; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2119; CM-NEXT:     LSHR T10.X, PV.Z, literal.x,
2120; CM-NEXT:     BFE_INT T8.Y, PV.Y, 0.0, literal.y,
2121; CM-NEXT:     LSHR T0.Z, T7.X, literal.y,
2122; CM-NEXT:     BFE_INT * T9.W, T0.Y, 0.0, literal.y,
2123; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2124; CM-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
2125; CM-NEXT:     BFE_INT * T9.Y, PV.Z, 0.0, literal.y,
2126; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2127  %load = load <8 x i16>, <8 x i16> addrspace(1)* %in
2128  %ext = sext <8 x i16> %load to <8 x i32>
2129  store <8 x i32> %ext, <8 x i32> addrspace(1)* %out
2130  ret void
2131}
2132
2133define amdgpu_kernel void @global_zextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 {
2134; GCN-NOHSA-SI-LABEL: global_zextload_v16i16_to_v16i32:
2135; GCN-NOHSA-SI:       ; %bb.0:
2136; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
2137; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
2138; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
2139; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
2140; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
2141; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2142; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
2143; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
2144; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
2145; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, 0xffff
2146; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
2147; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
2148; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
2149; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
2150; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v1
2151; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v0
2152; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v3
2153; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v2
2154; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
2155; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v5
2156; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v4
2157; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v10, s6, v1
2158; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v8, s6, v0
2159; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v14, s6, v3
2160; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v12, s6, v2
2161; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v7
2162; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v6
2163; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v18, s6, v5
2164; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v16, s6, v4
2165; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v2, s6, v7
2166; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, s6, v6
2167; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
2168; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:32
2169; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16
2170; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0
2171; GCN-NOHSA-SI-NEXT:    s_endpgm
2172;
2173; GCN-HSA-LABEL: global_zextload_v16i16_to_v16i32:
2174; GCN-HSA:       ; %bb.0:
2175; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
2176; GCN-HSA-NEXT:    s_mov_b32 s4, 0xffff
2177; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2178; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
2179; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
2180; GCN-HSA-NEXT:    s_add_u32 s2, s2, 16
2181; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
2182; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2183; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
2184; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2185; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
2186; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
2187; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2188; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
2189; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
2190; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
2191; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s1
2192; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2193; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s0
2194; GCN-HSA-NEXT:    s_add_u32 s0, s0, 32
2195; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
2196; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s3
2197; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s2
2198; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
2199; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v11, 16, v3
2200; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v9, 16, v2
2201; GCN-HSA-NEXT:    v_and_b32_e32 v10, s4, v3
2202; GCN-HSA-NEXT:    v_and_b32_e32 v8, s4, v2
2203; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
2204; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
2205; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v13, 16, v6
2206; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v11, 16, v5
2207; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v9, 16, v4
2208; GCN-HSA-NEXT:    v_and_b32_e32 v10, s4, v5
2209; GCN-HSA-NEXT:    v_and_b32_e32 v8, s4, v4
2210; GCN-HSA-NEXT:    v_and_b32_e32 v12, s4, v6
2211; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v4, 16, v1
2212; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
2213; GCN-HSA-NEXT:    v_and_b32_e32 v3, s4, v1
2214; GCN-HSA-NEXT:    v_and_b32_e32 v1, s4, v0
2215; GCN-HSA-NEXT:    v_mov_b32_e32 v6, s1
2216; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v15, 16, v7
2217; GCN-HSA-NEXT:    v_and_b32_e32 v14, s4, v7
2218; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s0
2219; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[1:4]
2220; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[12:15]
2221; GCN-HSA-NEXT:    flat_store_dwordx4 v[5:6], v[8:11]
2222; GCN-HSA-NEXT:    s_endpgm
2223;
2224; GCN-NOHSA-VI-LABEL: global_zextload_v16i16_to_v16i32:
2225; GCN-NOHSA-VI:       ; %bb.0:
2226; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
2227; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
2228; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
2229; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s2
2230; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s3
2231; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2232; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s6
2233; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s7
2234; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
2235; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
2236; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, 0xffff
2237; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
2238; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
2239; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
2240; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v11, 16, v1
2241; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
2242; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v19, 16, v7
2243; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v18, s6, v7
2244; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v17, 16, v6
2245; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v16, s6, v6
2246; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v10, s6, v1
2247; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v9, 16, v0
2248; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v8, s6, v0
2249; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v15, 16, v3
2250; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v14, s6, v3
2251; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v13, 16, v2
2252; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v12, s6, v2
2253; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v5
2254; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v2, s6, v5
2255; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v4
2256; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, s6, v4
2257; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48
2258; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2259; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16
2260; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0
2261; GCN-NOHSA-VI-NEXT:    s_endpgm
2262;
2263; EG-LABEL: global_zextload_v16i16_to_v16i32:
2264; EG:       ; %bb.0:
2265; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
2266; EG-NEXT:    TEX 1 @8
2267; EG-NEXT:    ALU 35, @13, KC0[CB0:0-32], KC1[]
2268; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T18.X, 0
2269; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T11.X, 0
2270; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T16.X, 0
2271; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T12.X, 1
2272; EG-NEXT:    CF_END
2273; EG-NEXT:    Fetch clause starting at 8:
2274; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 0, #1
2275; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 16, #1
2276; EG-NEXT:    ALU clause starting at 12:
2277; EG-NEXT:     MOV * T11.X, KC0[2].Z,
2278; EG-NEXT:    ALU clause starting at 13:
2279; EG-NEXT:     LSHR * T13.W, T12.Y, literal.x,
2280; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2281; EG-NEXT:     AND_INT * T13.Z, T12.Y, literal.x,
2282; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2283; EG-NEXT:     LSHR T13.Y, T12.X, literal.x,
2284; EG-NEXT:     LSHR * T14.W, T12.W, literal.x,
2285; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2286; EG-NEXT:     AND_INT T13.X, T12.X, literal.x,
2287; EG-NEXT:     AND_INT T14.Z, T12.W, literal.x,
2288; EG-NEXT:     LSHR * T12.X, KC0[2].Y, literal.y,
2289; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
2290; EG-NEXT:     LSHR T14.Y, T12.Z, literal.x,
2291; EG-NEXT:     LSHR * T15.W, T11.Y, literal.x,
2292; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2293; EG-NEXT:     AND_INT T14.X, T12.Z, literal.x,
2294; EG-NEXT:     AND_INT T15.Z, T11.Y, literal.x,
2295; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2296; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
2297; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
2298; EG-NEXT:     LSHR T15.Y, T11.X, literal.y,
2299; EG-NEXT:     LSHR T17.W, T11.W, literal.y,
2300; EG-NEXT:     AND_INT * T15.X, T11.X, literal.z,
2301; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2302; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2303; EG-NEXT:     AND_INT T17.Z, T11.W, literal.x,
2304; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2305; EG-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
2306; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
2307; EG-NEXT:     LSHR T17.Y, T11.Z, literal.y,
2308; EG-NEXT:     AND_INT * T17.X, T11.Z, literal.z,
2309; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2310; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2311; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
2312; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
2313; EG-NEXT:     LSHR * T18.X, PV.W, literal.x,
2314; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2315;
2316; CM-LABEL: global_zextload_v16i16_to_v16i32:
2317; CM:       ; %bb.0:
2318; CM-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
2319; CM-NEXT:    TEX 1 @8
2320; CM-NEXT:    ALU 33, @13, KC0[CB0:0-32], KC1[]
2321; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T11, T18.X
2322; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T15, T17.X
2323; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T12, T16.X
2324; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T13, T14.X
2325; CM-NEXT:    CF_END
2326; CM-NEXT:    Fetch clause starting at 8:
2327; CM-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
2328; CM-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
2329; CM-NEXT:    ALU clause starting at 12:
2330; CM-NEXT:     MOV * T11.X, KC0[2].Z,
2331; CM-NEXT:    ALU clause starting at 13:
2332; CM-NEXT:     LSHR * T13.W, T12.W, literal.x,
2333; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2334; CM-NEXT:     AND_INT * T13.Z, T12.W, literal.x,
2335; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2336; CM-NEXT:     LSHR T13.Y, T12.Z, literal.x,
2337; CM-NEXT:     LSHR * T12.W, T12.Y, literal.x,
2338; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2339; CM-NEXT:     AND_INT T13.X, T12.Z, literal.x,
2340; CM-NEXT:     AND_INT T12.Z, T12.Y, literal.x,
2341; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2342; CM-NEXT:    65535(9.183409e-41), 48(6.726233e-44)
2343; CM-NEXT:     LSHR T14.X, PV.W, literal.x,
2344; CM-NEXT:     LSHR T12.Y, T12.X, literal.y,
2345; CM-NEXT:     LSHR * T15.W, T11.W, literal.y,
2346; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2347; CM-NEXT:     AND_INT T12.X, T12.X, literal.x,
2348; CM-NEXT:     AND_INT T15.Z, T11.W, literal.x,
2349; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2350; CM-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
2351; CM-NEXT:     LSHR T16.X, PV.W, literal.x,
2352; CM-NEXT:     LSHR T15.Y, T11.Z, literal.y,
2353; CM-NEXT:     LSHR * T11.W, T11.Y, literal.y,
2354; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2355; CM-NEXT:     AND_INT T15.X, T11.Z, literal.x,
2356; CM-NEXT:     AND_INT T11.Z, T11.Y, literal.x,
2357; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2358; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
2359; CM-NEXT:     LSHR T17.X, PV.W, literal.x,
2360; CM-NEXT:     LSHR * T11.Y, T11.X, literal.y,
2361; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2362; CM-NEXT:     AND_INT * T11.X, T11.X, literal.x,
2363; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2364; CM-NEXT:     LSHR * T18.X, KC0[2].Y, literal.x,
2365; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2366  %load = load <16 x i16>, <16 x i16> addrspace(1)* %in
2367  %ext = zext <16 x i16> %load to <16 x i32>
2368  store <16 x i32> %ext, <16 x i32> addrspace(1)* %out
2369  ret void
2370}
2371
2372define amdgpu_kernel void @global_sextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 {
2373; GCN-NOHSA-SI-LABEL: global_sextload_v16i16_to_v16i32:
2374; GCN-NOHSA-SI:       ; %bb.0:
2375; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
2376; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
2377; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
2378; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
2379; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
2380; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2381; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
2382; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
2383; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
2384; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
2385; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
2386; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
2387; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
2388; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v11, 16, v1
2389; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v9, 16, v0
2390; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v10, v1, 0, 16
2391; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v8, v0, 0, 16
2392; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v15, 16, v3
2393; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v13, 16, v2
2394; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v14, v3, 0, 16
2395; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v12, v2, 0, 16
2396; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
2397; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v3, 16, v5
2398; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 16, v4
2399; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v2, v5, 0, 16
2400; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v4, 0, 16
2401; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v19, 16, v7
2402; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v17, 16, v6
2403; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v18, v7, 0, 16
2404; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v16, v6, 0, 16
2405; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48
2406; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2407; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16
2408; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0
2409; GCN-NOHSA-SI-NEXT:    s_endpgm
2410;
2411; GCN-HSA-LABEL: global_sextload_v16i16_to_v16i32:
2412; GCN-HSA:       ; %bb.0:
2413; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
2414; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2415; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
2416; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
2417; GCN-HSA-NEXT:    s_add_u32 s2, s2, 16
2418; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
2419; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
2420; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
2421; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
2422; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
2423; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
2424; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2425; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s3
2426; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s2
2427; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
2428; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s1
2429; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2430; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s0
2431; GCN-HSA-NEXT:    s_add_u32 s0, s0, 32
2432; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s3
2433; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
2434; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s2
2435; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s1
2436; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s0
2437; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
2438; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 16, v0
2439; GCN-HSA-NEXT:    v_bfe_i32 v10, v1, 0, 16
2440; GCN-HSA-NEXT:    v_bfe_i32 v8, v0, 0, 16
2441; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v15, 16, v3
2442; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v13, 16, v2
2443; GCN-HSA-NEXT:    v_bfe_i32 v14, v3, 0, 16
2444; GCN-HSA-NEXT:    v_bfe_i32 v12, v2, 0, 16
2445; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v11, 16, v1
2446; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[12:15]
2447; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[8:11]
2448; GCN-HSA-NEXT:    s_waitcnt vmcnt(2)
2449; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 16, v5
2450; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v10, 16, v7
2451; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v8, 16, v6
2452; GCN-HSA-NEXT:    v_bfe_i32 v9, v7, 0, 16
2453; GCN-HSA-NEXT:    v_bfe_i32 v7, v6, 0, 16
2454; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v4
2455; GCN-HSA-NEXT:    v_bfe_i32 v2, v5, 0, 16
2456; GCN-HSA-NEXT:    v_bfe_i32 v0, v4, 0, 16
2457; GCN-HSA-NEXT:    flat_store_dwordx4 v[20:21], v[7:10]
2458; GCN-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[0:3]
2459; GCN-HSA-NEXT:    s_endpgm
2460;
2461; GCN-NOHSA-VI-LABEL: global_sextload_v16i16_to_v16i32:
2462; GCN-NOHSA-VI:       ; %bb.0:
2463; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
2464; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
2465; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
2466; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s2
2467; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s3
2468; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2469; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s6
2470; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s7
2471; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
2472; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
2473; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
2474; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
2475; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
2476; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v11, 16, v1
2477; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
2478; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v19, 16, v7
2479; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v17, 16, v6
2480; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v18, v7, 0, 16
2481; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v16, v6, 0, 16
2482; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v9, 16, v0
2483; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v10, v1, 0, 16
2484; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v8, v0, 0, 16
2485; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v15, 16, v3
2486; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v13, 16, v2
2487; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v14, v3, 0, 16
2488; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v12, v2, 0, 16
2489; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 16, v5
2490; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 16, v4
2491; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v5, 0, 16
2492; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v4, 0, 16
2493; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48
2494; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2495; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16
2496; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0
2497; GCN-NOHSA-VI-NEXT:    s_endpgm
2498;
2499; EG-LABEL: global_sextload_v16i16_to_v16i32:
2500; EG:       ; %bb.0:
2501; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
2502; EG-NEXT:    TEX 1 @8
2503; EG-NEXT:    ALU 39, @13, KC0[CB0:0-32], KC1[]
2504; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T12.X, 0
2505; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T11.X, 0
2506; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T14.X, 0
2507; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T13.X, 1
2508; EG-NEXT:    CF_END
2509; EG-NEXT:    Fetch clause starting at 8:
2510; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
2511; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
2512; EG-NEXT:    ALU clause starting at 12:
2513; EG-NEXT:     MOV * T11.X, KC0[2].Z,
2514; EG-NEXT:    ALU clause starting at 13:
2515; EG-NEXT:     LSHR T13.X, KC0[2].Y, literal.x,
2516; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2517; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2518; EG-NEXT:     LSHR T14.X, PV.W, literal.x,
2519; EG-NEXT:     BFE_INT * T15.Z, T11.Y, 0.0, literal.y,
2520; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2521; EG-NEXT:     BFE_INT T15.X, T11.X, 0.0, literal.x,
2522; EG-NEXT:     LSHR T0.Y, T12.W, literal.x,
2523; EG-NEXT:     BFE_INT T16.Z, T11.W, 0.0, literal.x, BS:VEC_120/SCL_212
2524; EG-NEXT:     LSHR T0.W, T12.Y, literal.x,
2525; EG-NEXT:     LSHR * T1.W, T11.Y, literal.x,
2526; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2527; EG-NEXT:     BFE_INT T16.X, T11.Z, 0.0, literal.x,
2528; EG-NEXT:     LSHR T1.Y, T11.W, literal.x,
2529; EG-NEXT:     BFE_INT T17.Z, T12.Y, 0.0, literal.x,
2530; EG-NEXT:     BFE_INT T15.W, PS, 0.0, literal.x,
2531; EG-NEXT:     LSHR * T1.W, T11.X, literal.x,
2532; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2533; EG-NEXT:     BFE_INT T17.X, T12.X, 0.0, literal.x,
2534; EG-NEXT:     BFE_INT T15.Y, PS, 0.0, literal.x,
2535; EG-NEXT:     BFE_INT T18.Z, T12.W, 0.0, literal.x,
2536; EG-NEXT:     BFE_INT T16.W, PV.Y, 0.0, literal.x,
2537; EG-NEXT:     LSHR * T1.W, T11.Z, literal.x,
2538; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2539; EG-NEXT:     BFE_INT T18.X, T12.Z, 0.0, literal.x,
2540; EG-NEXT:     BFE_INT T16.Y, PS, 0.0, literal.x,
2541; EG-NEXT:     LSHR T0.Z, T12.X, literal.x,
2542; EG-NEXT:     BFE_INT T17.W, T0.W, 0.0, literal.x,
2543; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2544; EG-NEXT:    16(2.242078e-44), 32(4.484155e-44)
2545; EG-NEXT:     LSHR T11.X, PS, literal.x,
2546; EG-NEXT:     BFE_INT T17.Y, PV.Z, 0.0, literal.y,
2547; EG-NEXT:     LSHR T0.Z, T12.Z, literal.y,
2548; EG-NEXT:     BFE_INT T18.W, T0.Y, 0.0, literal.y,
2549; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
2550; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2551; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
2552; EG-NEXT:     LSHR T12.X, PS, literal.x,
2553; EG-NEXT:     BFE_INT * T18.Y, PV.Z, 0.0, literal.y,
2554; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2555;
2556; CM-LABEL: global_sextload_v16i16_to_v16i32:
2557; CM:       ; %bb.0:
2558; CM-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
2559; CM-NEXT:    TEX 1 @8
2560; CM-NEXT:    ALU 40, @13, KC0[CB0:0-32], KC1[]
2561; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T17, T11.X
2562; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T12, T18.X
2563; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T16, T14.X
2564; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T15, T13.X
2565; CM-NEXT:    CF_END
2566; CM-NEXT:    Fetch clause starting at 8:
2567; CM-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
2568; CM-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
2569; CM-NEXT:    ALU clause starting at 12:
2570; CM-NEXT:     MOV * T11.X, KC0[2].Z,
2571; CM-NEXT:    ALU clause starting at 13:
2572; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
2573; CM-NEXT:    48(6.726233e-44), 0(0.000000e+00)
2574; CM-NEXT:     LSHR T13.X, PV.W, literal.x,
2575; CM-NEXT:     LSHR T0.Y, T11.Y, literal.y,
2576; CM-NEXT:     LSHR T0.Z, T11.Z, literal.y,
2577; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
2578; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2579; CM-NEXT:    32(4.484155e-44), 0(0.000000e+00)
2580; CM-NEXT:     LSHR T14.X, PV.W, literal.x,
2581; CM-NEXT:     LSHR T1.Y, T11.W, literal.y,
2582; CM-NEXT:     BFE_INT T15.Z, T12.W, 0.0, literal.y, BS:VEC_120/SCL_212
2583; CM-NEXT:     LSHR * T0.W, T12.X, literal.y,
2584; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2585; CM-NEXT:     BFE_INT T15.X, T12.Z, 0.0, literal.x,
2586; CM-NEXT:     LSHR T2.Y, T12.Y, literal.x,
2587; CM-NEXT:     BFE_INT T16.Z, T12.Y, 0.0, literal.x,
2588; CM-NEXT:     LSHR * T1.W, T12.W, literal.x,
2589; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2590; CM-NEXT:     BFE_INT T16.X, T12.X, 0.0, literal.x,
2591; CM-NEXT:     LSHR T3.Y, T12.Z, literal.x,
2592; CM-NEXT:     BFE_INT T12.Z, T11.W, 0.0, literal.x,
2593; CM-NEXT:     BFE_INT * T15.W, PV.W, 0.0, literal.x,
2594; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2595; CM-NEXT:     BFE_INT T12.X, T11.Z, 0.0, literal.x,
2596; CM-NEXT:     BFE_INT T15.Y, PV.Y, 0.0, literal.x,
2597; CM-NEXT:     BFE_INT T17.Z, T11.Y, 0.0, literal.x,
2598; CM-NEXT:     BFE_INT * T16.W, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212
2599; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2600; CM-NEXT:     BFE_INT T17.X, T11.X, 0.0, literal.x,
2601; CM-NEXT:     BFE_INT T16.Y, T0.W, 0.0, literal.x,
2602; CM-NEXT:     ADD_INT T1.Z, KC0[2].Y, literal.x,
2603; CM-NEXT:     BFE_INT * T12.W, T1.Y, 0.0, literal.x,
2604; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2605; CM-NEXT:     LSHR T18.X, PV.Z, literal.x,
2606; CM-NEXT:     BFE_INT T12.Y, T0.Z, 0.0, literal.y,
2607; CM-NEXT:     LSHR T0.Z, T11.X, literal.y,
2608; CM-NEXT:     BFE_INT * T17.W, T0.Y, 0.0, literal.y,
2609; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2610; CM-NEXT:     LSHR T11.X, KC0[2].Y, literal.x,
2611; CM-NEXT:     BFE_INT * T17.Y, PV.Z, 0.0, literal.y,
2612; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2613  %load = load <16 x i16>, <16 x i16> addrspace(1)* %in
2614  %ext = sext <16 x i16> %load to <16 x i32>
2615  store <16 x i32> %ext, <16 x i32> addrspace(1)* %out
2616  ret void
2617}
2618
2619define amdgpu_kernel void @global_zextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 {
2620; GCN-NOHSA-SI-LABEL: global_zextload_v32i16_to_v32i32:
2621; GCN-NOHSA-SI:       ; %bb.0:
2622; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
2623; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
2624; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
2625; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, 0xffff
2626; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
2627; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
2628; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
2629; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
2630; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
2631; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
2632; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
2633; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32
2634; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48
2635; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(3)
2636; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v3
2637; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v2
2638; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v1
2639; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v0
2640; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(2)
2641; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v7
2642; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v6
2643; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v18, s0, v3
2644; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v16, s0, v2
2645; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v22, s0, v1
2646; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v20, s0, v0
2647; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v5
2648; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v4
2649; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v26, s0, v7
2650; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v24, s0, v6
2651; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v2, s0, v5
2652; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, s0, v4
2653; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
2654; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v11
2655; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v10
2656; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v31, 16, v9
2657; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v29, 16, v8
2658; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v6, s0, v11
2659; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v4, s0, v10
2660; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v30, s0, v9
2661; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v28, s0, v8
2662; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
2663; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v15
2664; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v14
2665; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v35, 16, v13
2666; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v33, 16, v12
2667; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v10, s0, v15
2668; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v8, s0, v14
2669; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v34, s0, v13
2670; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v32, s0, v12
2671; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
2672; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
2673; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96
2674; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112
2675; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64
2676; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80
2677; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
2678; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:48
2679; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0
2680; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16
2681; GCN-NOHSA-SI-NEXT:    s_endpgm
2682;
2683; GCN-HSA-LABEL: global_zextload_v32i16_to_v32i32:
2684; GCN-HSA:       ; %bb.0:
2685; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
2686; GCN-HSA-NEXT:    s_mov_b32 s14, 0xffff
2687; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
2688; GCN-HSA-NEXT:    s_add_u32 s4, s2, 16
2689; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
2690; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
2691; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
2692; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
2693; GCN-HSA-NEXT:    s_add_u32 s4, s2, 32
2694; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
2695; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
2696; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
2697; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
2698; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
2699; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
2700; GCN-HSA-NEXT:    s_add_u32 s2, s2, 48
2701; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
2702; GCN-HSA-NEXT:    flat_load_dwordx4 v[8:11], v[8:9]
2703; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
2704; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
2705; GCN-HSA-NEXT:    flat_load_dwordx4 v[12:15], v[12:13]
2706; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
2707; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
2708; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0x60
2709; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
2710; GCN-HSA-NEXT:    s_add_u32 s6, s0, 0x70
2711; GCN-HSA-NEXT:    s_addc_u32 s7, s1, 0
2712; GCN-HSA-NEXT:    s_add_u32 s8, s0, 64
2713; GCN-HSA-NEXT:    s_addc_u32 s9, s1, 0
2714; GCN-HSA-NEXT:    s_add_u32 s10, s0, 0x50
2715; GCN-HSA-NEXT:    s_addc_u32 s11, s1, 0
2716; GCN-HSA-NEXT:    s_add_u32 s12, s0, 32
2717; GCN-HSA-NEXT:    s_addc_u32 s13, s1, 0
2718; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s3
2719; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s2
2720; GCN-HSA-NEXT:    v_mov_b32_e32 v23, s7
2721; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s6
2722; GCN-HSA-NEXT:    s_waitcnt vmcnt(3)
2723; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v19, 16, v1
2724; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v17, 16, v0
2725; GCN-HSA-NEXT:    v_and_b32_e32 v18, s14, v1
2726; GCN-HSA-NEXT:    v_and_b32_e32 v16, s14, v0
2727; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s12
2728; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s13
2729; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
2730; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s8
2731; GCN-HSA-NEXT:    s_waitcnt vmcnt(3)
2732; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v19, 16, v5
2733; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v17, 16, v4
2734; GCN-HSA-NEXT:    v_and_b32_e32 v18, s14, v5
2735; GCN-HSA-NEXT:    v_and_b32_e32 v16, s14, v4
2736; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s9
2737; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s10
2738; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
2739; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
2740; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v19, 16, v7
2741; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v17, 16, v6
2742; GCN-HSA-NEXT:    v_and_b32_e32 v18, s14, v7
2743; GCN-HSA-NEXT:    v_and_b32_e32 v16, s14, v6
2744; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s11
2745; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
2746; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[16:19]
2747; GCN-HSA-NEXT:    s_waitcnt vmcnt(4)
2748; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v9
2749; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v5, 16, v8
2750; GCN-HSA-NEXT:    v_and_b32_e32 v6, s14, v9
2751; GCN-HSA-NEXT:    v_and_b32_e32 v4, s14, v8
2752; GCN-HSA-NEXT:    s_add_u32 s0, s0, 48
2753; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
2754; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
2755; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v19, 16, v11
2756; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v17, 16, v10
2757; GCN-HSA-NEXT:    v_and_b32_e32 v18, s14, v11
2758; GCN-HSA-NEXT:    v_and_b32_e32 v16, s14, v10
2759; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
2760; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
2761; GCN-HSA-NEXT:    flat_store_dwordx4 v[20:21], v[16:19]
2762; GCN-HSA-NEXT:    s_waitcnt vmcnt(5)
2763; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v10, 16, v15
2764; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v18, 16, v13
2765; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v16, 16, v12
2766; GCN-HSA-NEXT:    v_and_b32_e32 v9, s14, v15
2767; GCN-HSA-NEXT:    v_and_b32_e32 v17, s14, v13
2768; GCN-HSA-NEXT:    v_and_b32_e32 v15, s14, v12
2769; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s1
2770; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v6, 16, v3
2771; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v4, 16, v2
2772; GCN-HSA-NEXT:    v_and_b32_e32 v5, s14, v3
2773; GCN-HSA-NEXT:    v_and_b32_e32 v3, s14, v2
2774; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v8, 16, v14
2775; GCN-HSA-NEXT:    v_and_b32_e32 v7, s14, v14
2776; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s0
2777; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[15:18]
2778; GCN-HSA-NEXT:    flat_store_dwordx4 v[22:23], v[7:10]
2779; GCN-HSA-NEXT:    flat_store_dwordx4 v[11:12], v[3:6]
2780; GCN-HSA-NEXT:    s_endpgm
2781;
2782; GCN-NOHSA-VI-LABEL: global_zextload_v32i16_to_v32i32:
2783; GCN-NOHSA-VI:       ; %bb.0:
2784; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
2785; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
2786; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
2787; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s2
2788; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s3
2789; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
2790; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s6
2791; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s7
2792; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
2793; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
2794; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32
2795; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48
2796; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, 0xffff
2797; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
2798; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(3)
2799; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v19, 16, v3
2800; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v18, s0, v3
2801; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v17, 16, v2
2802; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v16, s0, v2
2803; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
2804; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v2, s0, v1
2805; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
2806; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, s0, v0
2807; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(2)
2808; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v23, 16, v7
2809; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v22, s0, v7
2810; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v21, 16, v6
2811; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v20, s0, v6
2812; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v7, 16, v5
2813; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v6, s0, v5
2814; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v4
2815; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v4, s0, v4
2816; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
2817; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v27, 16, v11
2818; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v26, s0, v11
2819; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v25, 16, v10
2820; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v24, s0, v10
2821; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v11, 16, v9
2822; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v10, s0, v9
2823; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v9, 16, v8
2824; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v8, s0, v8
2825; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
2826; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v31, 16, v15
2827; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v30, s0, v15
2828; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v29, 16, v14
2829; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v28, s0, v14
2830; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v15, 16, v13
2831; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v14, s0, v13
2832; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v13, 16, v12
2833; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v12, s0, v12
2834; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
2835; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:96
2836; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:112
2837; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:64
2838; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:80
2839; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32
2840; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:48
2841; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
2842; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16
2843; GCN-NOHSA-VI-NEXT:    s_endpgm
2844;
2845; EG-LABEL: global_zextload_v32i16_to_v32i32:
2846; EG:       ; %bb.0:
2847; EG-NEXT:    ALU 0, @20, KC0[CB0:0-32], KC1[]
2848; EG-NEXT:    TEX 3 @12
2849; EG-NEXT:    ALU 72, @21, KC0[CB0:0-32], KC1[]
2850; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T34.X, 0
2851; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T33.X, 0
2852; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T32.X, 0
2853; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T30.X, 0
2854; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T29.X, 0
2855; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T27.X, 0
2856; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T26.X, 0
2857; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T24.X, 1
2858; EG-NEXT:    CF_END
2859; EG-NEXT:    Fetch clause starting at 12:
2860; EG-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 0, #1
2861; EG-NEXT:     VTX_READ_128 T21.XYZW, T19.X, 48, #1
2862; EG-NEXT:     VTX_READ_128 T22.XYZW, T19.X, 32, #1
2863; EG-NEXT:     VTX_READ_128 T19.XYZW, T19.X, 16, #1
2864; EG-NEXT:    ALU clause starting at 20:
2865; EG-NEXT:     MOV * T19.X, KC0[2].Z,
2866; EG-NEXT:    ALU clause starting at 21:
2867; EG-NEXT:     LSHR * T23.W, T20.W, literal.x,
2868; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2869; EG-NEXT:     AND_INT * T23.Z, T20.W, literal.x,
2870; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2871; EG-NEXT:     LSHR T23.Y, T20.Z, literal.x,
2872; EG-NEXT:     LSHR * T20.W, T20.Y, literal.x,
2873; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2874; EG-NEXT:     AND_INT T23.X, T20.Z, literal.x,
2875; EG-NEXT:     AND_INT T20.Z, T20.Y, literal.x,
2876; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2877; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
2878; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
2879; EG-NEXT:     LSHR T20.Y, T20.X, literal.y,
2880; EG-NEXT:     LSHR T25.W, T19.W, literal.y,
2881; EG-NEXT:     AND_INT * T20.X, T20.X, literal.z,
2882; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2883; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2884; EG-NEXT:     AND_INT * T25.Z, T19.W, literal.x,
2885; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2886; EG-NEXT:     LSHR T26.X, KC0[2].Y, literal.x,
2887; EG-NEXT:     LSHR T25.Y, T19.Z, literal.y,
2888; EG-NEXT:     LSHR T19.W, T19.Y, literal.y,
2889; EG-NEXT:     AND_INT * T25.X, T19.Z, literal.z,
2890; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2891; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2892; EG-NEXT:     AND_INT T19.Z, T19.Y, literal.x,
2893; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2894; EG-NEXT:    65535(9.183409e-41), 48(6.726233e-44)
2895; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
2896; EG-NEXT:     LSHR T19.Y, T19.X, literal.y,
2897; EG-NEXT:     LSHR T28.W, T22.W, literal.y,
2898; EG-NEXT:     AND_INT * T19.X, T19.X, literal.z,
2899; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2900; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2901; EG-NEXT:     AND_INT T28.Z, T22.W, literal.x,
2902; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2903; EG-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
2904; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
2905; EG-NEXT:     LSHR T28.Y, T22.Z, literal.y,
2906; EG-NEXT:     LSHR T22.W, T22.Y, literal.y,
2907; EG-NEXT:     AND_INT * T28.X, T22.Z, literal.z,
2908; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2909; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2910; EG-NEXT:     AND_INT T22.Z, T22.Y, literal.x,
2911; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2912; EG-NEXT:    65535(9.183409e-41), 80(1.121039e-43)
2913; EG-NEXT:     LSHR T30.X, PV.W, literal.x,
2914; EG-NEXT:     LSHR T22.Y, T22.X, literal.y,
2915; EG-NEXT:     LSHR T31.W, T21.W, literal.y,
2916; EG-NEXT:     AND_INT * T22.X, T22.X, literal.z,
2917; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2918; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2919; EG-NEXT:     AND_INT T31.Z, T21.W, literal.x,
2920; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2921; EG-NEXT:    65535(9.183409e-41), 64(8.968310e-44)
2922; EG-NEXT:     LSHR T32.X, PV.W, literal.x,
2923; EG-NEXT:     LSHR T31.Y, T21.Z, literal.y,
2924; EG-NEXT:     LSHR T21.W, T21.Y, literal.y,
2925; EG-NEXT:     AND_INT * T31.X, T21.Z, literal.z,
2926; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2927; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2928; EG-NEXT:     AND_INT T21.Z, T21.Y, literal.x,
2929; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2930; EG-NEXT:    65535(9.183409e-41), 112(1.569454e-43)
2931; EG-NEXT:     LSHR T33.X, PV.W, literal.x,
2932; EG-NEXT:     LSHR T21.Y, T21.X, literal.y,
2933; EG-NEXT:     AND_INT * T21.X, T21.X, literal.z,
2934; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2935; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2936; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
2937; EG-NEXT:    96(1.345247e-43), 0(0.000000e+00)
2938; EG-NEXT:     LSHR * T34.X, PV.W, literal.x,
2939; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
2940;
2941; CM-LABEL: global_zextload_v32i16_to_v32i32:
2942; CM:       ; %bb.0:
2943; CM-NEXT:    ALU 0, @20, KC0[CB0:0-32], KC1[]
2944; CM-NEXT:    TEX 3 @12
2945; CM-NEXT:    ALU 65, @21, KC0[CB0:0-32], KC1[]
2946; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T33, T34.X
2947; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T31, T21.X
2948; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T30, T32.X
2949; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T28, T22.X
2950; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T27, T29.X
2951; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T25, T19.X
2952; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T24, T26.X
2953; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T23, T20.X
2954; CM-NEXT:    CF_END
2955; CM-NEXT:    Fetch clause starting at 12:
2956; CM-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 48, #1
2957; CM-NEXT:     VTX_READ_128 T21.XYZW, T19.X, 0, #1
2958; CM-NEXT:     VTX_READ_128 T22.XYZW, T19.X, 16, #1
2959; CM-NEXT:     VTX_READ_128 T19.XYZW, T19.X, 32, #1
2960; CM-NEXT:    ALU clause starting at 20:
2961; CM-NEXT:     MOV * T19.X, KC0[2].Z,
2962; CM-NEXT:    ALU clause starting at 21:
2963; CM-NEXT:     LSHR * T23.W, T20.Y, literal.x,
2964; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2965; CM-NEXT:     AND_INT * T23.Z, T20.Y, literal.x,
2966; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
2967; CM-NEXT:     LSHR T23.Y, T20.X, literal.x,
2968; CM-NEXT:     LSHR * T24.W, T20.W, literal.x,
2969; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
2970; CM-NEXT:     AND_INT T23.X, T20.X, literal.x,
2971; CM-NEXT:     AND_INT T24.Z, T20.W, literal.x,
2972; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2973; CM-NEXT:    65535(9.183409e-41), 96(1.345247e-43)
2974; CM-NEXT:     LSHR T20.X, PV.W, literal.x,
2975; CM-NEXT:     LSHR T24.Y, T20.Z, literal.y,
2976; CM-NEXT:     LSHR * T25.W, T19.Y, literal.y,
2977; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2978; CM-NEXT:     AND_INT T24.X, T20.Z, literal.x,
2979; CM-NEXT:     AND_INT T25.Z, T19.Y, literal.x,
2980; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2981; CM-NEXT:    65535(9.183409e-41), 112(1.569454e-43)
2982; CM-NEXT:     LSHR T26.X, PV.W, literal.x,
2983; CM-NEXT:     LSHR T25.Y, T19.X, literal.y,
2984; CM-NEXT:     LSHR * T27.W, T19.W, literal.y,
2985; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2986; CM-NEXT:     AND_INT T25.X, T19.X, literal.x,
2987; CM-NEXT:     AND_INT T27.Z, T19.W, literal.x,
2988; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2989; CM-NEXT:    65535(9.183409e-41), 64(8.968310e-44)
2990; CM-NEXT:     LSHR T19.X, PV.W, literal.x,
2991; CM-NEXT:     LSHR T27.Y, T19.Z, literal.y,
2992; CM-NEXT:     LSHR * T28.W, T22.Y, literal.y,
2993; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
2994; CM-NEXT:     AND_INT T27.X, T19.Z, literal.x,
2995; CM-NEXT:     AND_INT T28.Z, T22.Y, literal.x,
2996; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
2997; CM-NEXT:    65535(9.183409e-41), 80(1.121039e-43)
2998; CM-NEXT:     LSHR T29.X, PV.W, literal.x,
2999; CM-NEXT:     LSHR T28.Y, T22.X, literal.y,
3000; CM-NEXT:     LSHR * T30.W, T22.W, literal.y,
3001; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3002; CM-NEXT:     AND_INT T28.X, T22.X, literal.x,
3003; CM-NEXT:     AND_INT T30.Z, T22.W, literal.x,
3004; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3005; CM-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
3006; CM-NEXT:     LSHR T22.X, PV.W, literal.x,
3007; CM-NEXT:     LSHR T30.Y, T22.Z, literal.y,
3008; CM-NEXT:     LSHR * T31.W, T21.Y, literal.y,
3009; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3010; CM-NEXT:     AND_INT T30.X, T22.Z, literal.x,
3011; CM-NEXT:     AND_INT T31.Z, T21.Y, literal.x,
3012; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3013; CM-NEXT:    65535(9.183409e-41), 48(6.726233e-44)
3014; CM-NEXT:     LSHR T32.X, PV.W, literal.x,
3015; CM-NEXT:     LSHR T31.Y, T21.X, literal.y,
3016; CM-NEXT:     LSHR * T33.W, T21.W, literal.y,
3017; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3018; CM-NEXT:     AND_INT T31.X, T21.X, literal.x,
3019; CM-NEXT:     AND_INT * T33.Z, T21.W, literal.x,
3020; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3021; CM-NEXT:     LSHR T21.X, KC0[2].Y, literal.x,
3022; CM-NEXT:     LSHR * T33.Y, T21.Z, literal.y,
3023; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3024; CM-NEXT:     AND_INT T33.X, T21.Z, literal.x,
3025; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3026; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
3027; CM-NEXT:     LSHR * T34.X, PV.W, literal.x,
3028; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
3029  %load = load <32 x i16>, <32 x i16> addrspace(1)* %in
3030  %ext = zext <32 x i16> %load to <32 x i32>
3031  store <32 x i32> %ext, <32 x i32> addrspace(1)* %out
3032  ret void
3033}
3034
3035define amdgpu_kernel void @global_sextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 {
3036; GCN-NOHSA-SI-LABEL: global_sextload_v32i16_to_v32i32:
3037; GCN-NOHSA-SI:       ; %bb.0:
3038; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
3039; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
3040; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
3041; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
3042; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
3043; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
3044; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
3045; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
3046; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
3047; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
3048; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32
3049; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48
3050; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(3)
3051; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v19, 16, v3
3052; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v17, 16, v2
3053; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v18, v3, 0, 16
3054; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v16, v2, 0, 16
3055; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v23, 16, v1
3056; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v21, 16, v0
3057; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v22, v1, 0, 16
3058; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v20, v0, 0, 16
3059; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(2)
3060; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v3, 16, v7
3061; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 16, v6
3062; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v2, v7, 0, 16
3063; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v6, 0, 16
3064; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v27, 16, v5
3065; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v25, 16, v4
3066; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v26, v5, 0, 16
3067; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v24, v4, 0, 16
3068; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
3069; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v7, 16, v11
3070; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v5, 16, v10
3071; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v6, v11, 0, 16
3072; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v4, v10, 0, 16
3073; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v31, 16, v9
3074; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v29, 16, v8
3075; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v30, v9, 0, 16
3076; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v28, v8, 0, 16
3077; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3078; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v11, 16, v15
3079; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v9, 16, v14
3080; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v10, v15, 0, 16
3081; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v8, v14, 0, 16
3082; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v35, 16, v13
3083; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v33, 16, v12
3084; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v34, v13, 0, 16
3085; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v32, v12, 0, 16
3086; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
3087; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
3088; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96
3089; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112
3090; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64
3091; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80
3092; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32
3093; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
3094; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0
3095; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16
3096; GCN-NOHSA-SI-NEXT:    s_endpgm
3097;
3098; GCN-HSA-LABEL: global_sextload_v32i16_to_v32i32:
3099; GCN-HSA:       ; %bb.0:
3100; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
3101; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3102; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
3103; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
3104; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
3105; GCN-HSA-NEXT:    s_add_u32 s4, s2, 48
3106; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
3107; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
3108; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
3109; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
3110; GCN-HSA-NEXT:    s_add_u32 s4, s2, 32
3111; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
3112; GCN-HSA-NEXT:    s_add_u32 s2, s2, 16
3113; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s5
3114; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
3115; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s4
3116; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
3117; GCN-HSA-NEXT:    flat_load_dwordx4 v[8:11], v[8:9]
3118; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
3119; GCN-HSA-NEXT:    flat_load_dwordx4 v[12:15], v[12:13]
3120; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
3121; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3122; GCN-HSA-NEXT:    s_waitcnt vmcnt(3)
3123; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v19, 16, v1
3124; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v17, 16, v0
3125; GCN-HSA-NEXT:    v_bfe_i32 v18, v1, 0, 16
3126; GCN-HSA-NEXT:    v_bfe_i32 v16, v0, 0, 16
3127; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
3128; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
3129; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
3130; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
3131; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
3132; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x60
3133; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3134; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s3
3135; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s2
3136; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x70
3137; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v19, 16, v3
3138; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v17, 16, v2
3139; GCN-HSA-NEXT:    v_bfe_i32 v18, v3, 0, 16
3140; GCN-HSA-NEXT:    v_bfe_i32 v16, v2, 0, 16
3141; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3142; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]
3143; GCN-HSA-NEXT:    s_waitcnt vmcnt(4)
3144; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 16, v5
3145; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s3
3146; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s2
3147; GCN-HSA-NEXT:    s_add_u32 s2, s0, 64
3148; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3149; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s3
3150; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s2
3151; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x50
3152; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v4
3153; GCN-HSA-NEXT:    v_bfe_i32 v2, v5, 0, 16
3154; GCN-HSA-NEXT:    v_bfe_i32 v0, v4, 0, 16
3155; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3156; GCN-HSA-NEXT:    flat_store_dwordx4 v[20:21], v[0:3]
3157; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s3
3158; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s2
3159; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
3160; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3161; GCN-HSA-NEXT:    s_add_u32 s0, s0, 48
3162; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 16, v7
3163; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v6
3164; GCN-HSA-NEXT:    v_bfe_i32 v2, v7, 0, 16
3165; GCN-HSA-NEXT:    v_bfe_i32 v0, v6, 0, 16
3166; GCN-HSA-NEXT:    s_waitcnt vmcnt(4)
3167; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v7, 16, v9
3168; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v5, 16, v8
3169; GCN-HSA-NEXT:    v_bfe_i32 v6, v9, 0, 16
3170; GCN-HSA-NEXT:    v_bfe_i32 v4, v8, 0, 16
3171; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
3172; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
3173; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[0:3]
3174; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
3175; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 16, v11
3176; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v10
3177; GCN-HSA-NEXT:    v_bfe_i32 v2, v11, 0, 16
3178; GCN-HSA-NEXT:    v_bfe_i32 v0, v10, 0, 16
3179; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s1
3180; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[4:7]
3181; GCN-HSA-NEXT:    flat_store_dwordx4 v[20:21], v[0:3]
3182; GCN-HSA-NEXT:    s_waitcnt vmcnt(6)
3183; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v7, 16, v13
3184; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v5, 16, v12
3185; GCN-HSA-NEXT:    v_bfe_i32 v6, v13, 0, 16
3186; GCN-HSA-NEXT:    v_bfe_i32 v4, v12, 0, 16
3187; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s0
3188; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 16, v15
3189; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v14
3190; GCN-HSA-NEXT:    v_bfe_i32 v2, v15, 0, 16
3191; GCN-HSA-NEXT:    v_bfe_i32 v0, v14, 0, 16
3192; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
3193; GCN-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[0:3]
3194; GCN-HSA-NEXT:    s_endpgm
3195;
3196; GCN-NOHSA-VI-LABEL: global_sextload_v32i16_to_v32i32:
3197; GCN-NOHSA-VI:       ; %bb.0:
3198; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
3199; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
3200; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
3201; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s2
3202; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s3
3203; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
3204; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s6
3205; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s7
3206; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
3207; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
3208; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32
3209; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48
3210; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
3211; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
3212; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(3)
3213; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v19, 16, v3
3214; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v17, 16, v2
3215; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v18, v3, 0, 16
3216; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
3217; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v35, 16, v13
3218; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v33, 16, v12
3219; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v34, v13, 0, 16
3220; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v32, v12, 0, 16
3221; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v16, v2, 0, 16
3222; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v23, 16, v1
3223; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v21, 16, v0
3224; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v22, v1, 0, 16
3225; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v20, v0, 0, 16
3226; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 16, v7
3227; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 16, v6
3228; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v7, 0, 16
3229; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v6, 0, 16
3230; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v27, 16, v5
3231; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v25, 16, v4
3232; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v26, v5, 0, 16
3233; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v24, v4, 0, 16
3234; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v7, 16, v11
3235; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v5, 16, v10
3236; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v6, v11, 0, 16
3237; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v4, v10, 0, 16
3238; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v31, 16, v9
3239; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v29, 16, v8
3240; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v30, v9, 0, 16
3241; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v28, v8, 0, 16
3242; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v11, 16, v15
3243; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v9, 16, v14
3244; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v10, v15, 0, 16
3245; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v8, v14, 0, 16
3246; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96
3247; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112
3248; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64
3249; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80
3250; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32
3251; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
3252; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0
3253; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16
3254; GCN-NOHSA-VI-NEXT:    s_endpgm
3255;
3256; EG-LABEL: global_sextload_v32i16_to_v32i32:
3257; EG:       ; %bb.0:
3258; EG-NEXT:    ALU 9, @20, KC0[CB0:0-32], KC1[]
3259; EG-NEXT:    TEX 3 @12
3260; EG-NEXT:    ALU 73, @30, KC0[CB0:0-32], KC1[]
3261; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T22.X, 0
3262; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T34.X, 0
3263; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T28.X, 0
3264; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T27.X, 0
3265; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T26.X, 0
3266; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T21.X, 0
3267; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T20.X, 0
3268; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T19.X, 1
3269; EG-NEXT:    CF_END
3270; EG-NEXT:    Fetch clause starting at 12:
3271; EG-NEXT:     VTX_READ_128 T23.XYZW, T22.X, 16, #1
3272; EG-NEXT:     VTX_READ_128 T24.XYZW, T22.X, 32, #1
3273; EG-NEXT:     VTX_READ_128 T25.XYZW, T22.X, 0, #1
3274; EG-NEXT:     VTX_READ_128 T22.XYZW, T22.X, 48, #1
3275; EG-NEXT:    ALU clause starting at 20:
3276; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
3277; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3278; EG-NEXT:     LSHR T19.X, PV.W, literal.x,
3279; EG-NEXT:     LSHR * T20.X, KC0[2].Y, literal.x,
3280; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
3281; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
3282; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
3283; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
3284; EG-NEXT:     MOV * T22.X, KC0[2].Z,
3285; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
3286; EG-NEXT:    ALU clause starting at 30:
3287; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
3288; EG-NEXT:    32(4.484155e-44), 0(0.000000e+00)
3289; EG-NEXT:     LSHR T26.X, PV.W, literal.x,
3290; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3291; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
3292; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
3293; EG-NEXT:     LSHR T0.W, T22.Y, literal.y,
3294; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
3295; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3296; EG-NEXT:    64(8.968310e-44), 0(0.000000e+00)
3297; EG-NEXT:     LSHR T28.X, PS, literal.x,
3298; EG-NEXT:     LSHR T0.Y, T22.W, literal.y,
3299; EG-NEXT:     BFE_INT T29.Z, T25.W, 0.0, literal.y, BS:VEC_120/SCL_212
3300; EG-NEXT:     LSHR T1.W, T24.Y, literal.y,
3301; EG-NEXT:     LSHR * T2.W, T24.W, literal.y,
3302; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3303; EG-NEXT:     BFE_INT T29.X, T25.Z, 0.0, literal.x,
3304; EG-NEXT:     LSHR T1.Y, T23.Y, literal.x,
3305; EG-NEXT:     BFE_INT T30.Z, T25.Y, 0.0, literal.x, BS:VEC_120/SCL_212
3306; EG-NEXT:     LSHR T3.W, T23.W, literal.x,
3307; EG-NEXT:     LSHR * T4.W, T25.W, literal.x,
3308; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3309; EG-NEXT:     BFE_INT T30.X, T25.X, 0.0, literal.x,
3310; EG-NEXT:     LSHR T2.Y, T25.Y, literal.x,
3311; EG-NEXT:     BFE_INT T31.Z, T23.W, 0.0, literal.x,
3312; EG-NEXT:     BFE_INT T29.W, PS, 0.0, literal.x,
3313; EG-NEXT:     LSHR * T4.W, T25.Z, literal.x,
3314; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3315; EG-NEXT:     BFE_INT T31.X, T23.Z, 0.0, literal.x,
3316; EG-NEXT:     BFE_INT T29.Y, PS, 0.0, literal.x,
3317; EG-NEXT:     BFE_INT T25.Z, T23.Y, 0.0, literal.x,
3318; EG-NEXT:     BFE_INT T30.W, PV.Y, 0.0, literal.x,
3319; EG-NEXT:     LSHR * T4.W, T25.X, literal.x,
3320; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3321; EG-NEXT:     BFE_INT T25.X, T23.X, 0.0, literal.x,
3322; EG-NEXT:     BFE_INT T30.Y, PS, 0.0, literal.x,
3323; EG-NEXT:     BFE_INT T32.Z, T24.W, 0.0, literal.x,
3324; EG-NEXT:     BFE_INT T31.W, T3.W, 0.0, literal.x, BS:VEC_120/SCL_212
3325; EG-NEXT:     LSHR * T3.W, T23.Z, literal.x,
3326; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3327; EG-NEXT:     BFE_INT T32.X, T24.Z, 0.0, literal.x,
3328; EG-NEXT:     BFE_INT T31.Y, PS, 0.0, literal.x,
3329; EG-NEXT:     BFE_INT T23.Z, T24.Y, 0.0, literal.x,
3330; EG-NEXT:     BFE_INT T25.W, T1.Y, 0.0, literal.x, BS:VEC_120/SCL_212
3331; EG-NEXT:     LSHR * T3.W, T23.X, literal.x,
3332; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3333; EG-NEXT:     BFE_INT T23.X, T24.X, 0.0, literal.x,
3334; EG-NEXT:     BFE_INT T25.Y, PS, 0.0, literal.x,
3335; EG-NEXT:     BFE_INT T33.Z, T22.W, 0.0, literal.x,
3336; EG-NEXT:     BFE_INT T32.W, T2.W, 0.0, literal.x, BS:VEC_120/SCL_212
3337; EG-NEXT:     LSHR * T2.W, T24.Z, literal.x,
3338; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3339; EG-NEXT:     BFE_INT T33.X, T22.Z, 0.0, literal.x,
3340; EG-NEXT:     BFE_INT T32.Y, PS, 0.0, literal.x,
3341; EG-NEXT:     BFE_INT T24.Z, T22.Y, 0.0, literal.x,
3342; EG-NEXT:     BFE_INT T23.W, T1.W, 0.0, literal.x,
3343; EG-NEXT:     LSHR * T1.W, T24.X, literal.x,
3344; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3345; EG-NEXT:     BFE_INT T24.X, T22.X, 0.0, literal.x,
3346; EG-NEXT:     BFE_INT T23.Y, PS, 0.0, literal.x,
3347; EG-NEXT:     LSHR T0.Z, T22.Z, literal.x,
3348; EG-NEXT:     BFE_INT T33.W, T0.Y, 0.0, literal.x,
3349; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
3350; EG-NEXT:    16(2.242078e-44), 112(1.569454e-43)
3351; EG-NEXT:     LSHR T34.X, PS, literal.x,
3352; EG-NEXT:     BFE_INT T33.Y, PV.Z, 0.0, literal.y,
3353; EG-NEXT:     LSHR T0.Z, T22.X, literal.y,
3354; EG-NEXT:     BFE_INT T24.W, T0.W, 0.0, literal.y,
3355; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
3356; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3357; EG-NEXT:    96(1.345247e-43), 0(0.000000e+00)
3358; EG-NEXT:     LSHR T22.X, PS, literal.x,
3359; EG-NEXT:     BFE_INT * T24.Y, PV.Z, 0.0, literal.y,
3360; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3361;
3362; CM-LABEL: global_sextload_v32i16_to_v32i32:
3363; CM:       ; %bb.0:
3364; CM-NEXT:    ALU 0, @22, KC0[CB0:0-32], KC1[]
3365; CM-NEXT:    TEX 0 @14
3366; CM-NEXT:    ALU 7, @23, KC0[CB0:0-32], KC1[]
3367; CM-NEXT:    TEX 2 @16
3368; CM-NEXT:    ALU 76, @31, KC0[CB0:0-32], KC1[]
3369; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T33, T34.X
3370; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T19, T20.X
3371; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T32, T28.X
3372; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T23, T27.X
3373; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T31, T26.X
3374; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T22, T25.X
3375; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T30, T24.X
3376; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T29, T21.X
3377; CM-NEXT:    CF_END
3378; CM-NEXT:    Fetch clause starting at 14:
3379; CM-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 0, #1
3380; CM-NEXT:    Fetch clause starting at 16:
3381; CM-NEXT:     VTX_READ_128 T22.XYZW, T19.X, 48, #1
3382; CM-NEXT:     VTX_READ_128 T23.XYZW, T19.X, 32, #1
3383; CM-NEXT:     VTX_READ_128 T19.XYZW, T19.X, 16, #1
3384; CM-NEXT:    ALU clause starting at 22:
3385; CM-NEXT:     MOV * T19.X, KC0[2].Z,
3386; CM-NEXT:    ALU clause starting at 23:
3387; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
3388; CM-NEXT:    96(1.345247e-43), 0(0.000000e+00)
3389; CM-NEXT:     LSHR T21.X, PV.W, literal.x,
3390; CM-NEXT:     LSHR T0.Y, T20.Z, literal.y,
3391; CM-NEXT:     LSHR T0.Z, T20.W, literal.y,
3392; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
3393; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3394; CM-NEXT:    112(1.569454e-43), 0(0.000000e+00)
3395; CM-NEXT:    ALU clause starting at 31:
3396; CM-NEXT:     LSHR T24.X, T0.W, literal.x,
3397; CM-NEXT:     LSHR T1.Y, T20.Y, literal.y,
3398; CM-NEXT:     LSHR T1.Z, T19.Z, literal.y,
3399; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
3400; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3401; CM-NEXT:    64(8.968310e-44), 0(0.000000e+00)
3402; CM-NEXT:     LSHR T25.X, PV.W, literal.x,
3403; CM-NEXT:     LSHR T2.Y, T19.W, literal.y,
3404; CM-NEXT:     LSHR T2.Z, T19.X, literal.y,
3405; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
3406; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3407; CM-NEXT:    80(1.121039e-43), 0(0.000000e+00)
3408; CM-NEXT:     LSHR T26.X, PV.W, literal.x,
3409; CM-NEXT:     LSHR T3.Y, T19.Y, literal.y,
3410; CM-NEXT:     LSHR T3.Z, T23.Z, literal.y,
3411; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
3412; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3413; CM-NEXT:    32(4.484155e-44), 0(0.000000e+00)
3414; CM-NEXT:     LSHR T27.X, PV.W, literal.x,
3415; CM-NEXT:     LSHR T4.Y, T23.W, literal.y,
3416; CM-NEXT:     LSHR T4.Z, T23.X, literal.y,
3417; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
3418; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3419; CM-NEXT:    48(6.726233e-44), 0(0.000000e+00)
3420; CM-NEXT:     LSHR T28.X, PV.W, literal.x,
3421; CM-NEXT:     LSHR T5.Y, T23.Y, literal.y,
3422; CM-NEXT:     BFE_INT T29.Z, T22.Y, 0.0, literal.y, BS:VEC_120/SCL_212
3423; CM-NEXT:     LSHR * T0.W, T22.Z, literal.y,
3424; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3425; CM-NEXT:     BFE_INT T29.X, T22.X, 0.0, literal.x,
3426; CM-NEXT:     LSHR T6.Y, T22.W, literal.x,
3427; CM-NEXT:     BFE_INT T30.Z, T22.W, 0.0, literal.x,
3428; CM-NEXT:     LSHR * T1.W, T22.Y, literal.x,
3429; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3430; CM-NEXT:     BFE_INT T30.X, T22.Z, 0.0, literal.x,
3431; CM-NEXT:     LSHR T7.Y, T22.X, literal.x,
3432; CM-NEXT:     BFE_INT T22.Z, T23.Y, 0.0, literal.x,
3433; CM-NEXT:     BFE_INT * T29.W, PV.W, 0.0, literal.x,
3434; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3435; CM-NEXT:     BFE_INT T22.X, T23.X, 0.0, literal.x,
3436; CM-NEXT:     BFE_INT T29.Y, PV.Y, 0.0, literal.x,
3437; CM-NEXT:     BFE_INT T31.Z, T23.W, 0.0, literal.x,
3438; CM-NEXT:     BFE_INT * T30.W, T6.Y, 0.0, literal.x,
3439; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3440; CM-NEXT:     BFE_INT T31.X, T23.Z, 0.0, literal.x,
3441; CM-NEXT:     BFE_INT T30.Y, T0.W, 0.0, literal.x,
3442; CM-NEXT:     BFE_INT T23.Z, T19.Y, 0.0, literal.x,
3443; CM-NEXT:     BFE_INT * T22.W, T5.Y, 0.0, literal.x, BS:VEC_120/SCL_212
3444; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3445; CM-NEXT:     BFE_INT T23.X, T19.X, 0.0, literal.x,
3446; CM-NEXT:     BFE_INT T22.Y, T4.Z, 0.0, literal.x,
3447; CM-NEXT:     BFE_INT T32.Z, T19.W, 0.0, literal.x,
3448; CM-NEXT:     BFE_INT * T31.W, T4.Y, 0.0, literal.x,
3449; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3450; CM-NEXT:     BFE_INT T32.X, T19.Z, 0.0, literal.x,
3451; CM-NEXT:     BFE_INT T31.Y, T3.Z, 0.0, literal.x, BS:VEC_120/SCL_212
3452; CM-NEXT:     BFE_INT T19.Z, T20.Y, 0.0, literal.x,
3453; CM-NEXT:     BFE_INT * T23.W, T3.Y, 0.0, literal.x, BS:VEC_120/SCL_212
3454; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3455; CM-NEXT:     BFE_INT T19.X, T20.X, 0.0, literal.x,
3456; CM-NEXT:     BFE_INT T23.Y, T2.Z, 0.0, literal.x,
3457; CM-NEXT:     BFE_INT T33.Z, T20.W, 0.0, literal.x,
3458; CM-NEXT:     BFE_INT * T32.W, T2.Y, 0.0, literal.x,
3459; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3460; CM-NEXT:     BFE_INT T33.X, T20.Z, 0.0, literal.x,
3461; CM-NEXT:     BFE_INT T32.Y, T1.Z, 0.0, literal.x, BS:VEC_120/SCL_212
3462; CM-NEXT:     LSHR T1.Z, T20.X, literal.x,
3463; CM-NEXT:     BFE_INT * T19.W, T1.Y, 0.0, literal.x,
3464; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3465; CM-NEXT:     LSHR T20.X, KC0[2].Y, literal.x,
3466; CM-NEXT:     BFE_INT T19.Y, PV.Z, 0.0, literal.y,
3467; CM-NEXT:     ADD_INT T1.Z, KC0[2].Y, literal.y,
3468; CM-NEXT:     BFE_INT * T33.W, T0.Z, 0.0, literal.y,
3469; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3470; CM-NEXT:     LSHR T34.X, PV.Z, literal.x,
3471; CM-NEXT:     BFE_INT * T33.Y, T0.Y, 0.0, literal.y,
3472; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3473  %load = load <32 x i16>, <32 x i16> addrspace(1)* %in
3474  %ext = sext <32 x i16> %load to <32 x i32>
3475  store <32 x i32> %ext, <32 x i32> addrspace(1)* %out
3476  ret void
3477}
3478
3479define amdgpu_kernel void @global_zextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 {
3480; GCN-NOHSA-SI-LABEL: global_zextload_v64i16_to_v64i32:
3481; GCN-NOHSA-SI:       ; %bb.0:
3482; GCN-NOHSA-SI-NEXT:    s_mov_b32 s12, SCRATCH_RSRC_DWORD0
3483; GCN-NOHSA-SI-NEXT:    s_mov_b32 s13, SCRATCH_RSRC_DWORD1
3484; GCN-NOHSA-SI-NEXT:    s_mov_b32 s14, -1
3485; GCN-NOHSA-SI-NEXT:    s_mov_b32 s15, 0xe8f000
3486; GCN-NOHSA-SI-NEXT:    s_add_u32 s12, s12, s3
3487; GCN-NOHSA-SI-NEXT:    s_addc_u32 s13, s13, 0
3488; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
3489; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
3490; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
3491; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
3492; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
3493; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
3494; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
3495; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
3496; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[12:15], off, s[8:11], 0
3497; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, 0xffff
3498; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[16:19], off, s[8:11], 0 offset:16
3499; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
3500; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v15
3501; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v14
3502; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v13
3503; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v4, 16, v12
3504; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3505; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v19
3506; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v18
3507; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v2, s0, v15
3508; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, s0, v14
3509; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[12:15], 0 offset:4 ; 4-byte Folded Spill
3510; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3511; GCN-NOHSA-SI-NEXT:    buffer_store_dword v1, off, s[12:15], 0 offset:8 ; 4-byte Folded Spill
3512; GCN-NOHSA-SI-NEXT:    buffer_store_dword v2, off, s[12:15], 0 offset:12 ; 4-byte Folded Spill
3513; GCN-NOHSA-SI-NEXT:    buffer_store_dword v3, off, s[12:15], 0 offset:16 ; 4-byte Folded Spill
3514; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v5, s0, v13
3515; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3516; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v3, s0, v12
3517; GCN-NOHSA-SI-NEXT:    buffer_store_dword v3, off, s[12:15], 0 offset:20 ; 4-byte Folded Spill
3518; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3519; GCN-NOHSA-SI-NEXT:    buffer_store_dword v4, off, s[12:15], 0 offset:24 ; 4-byte Folded Spill
3520; GCN-NOHSA-SI-NEXT:    buffer_store_dword v5, off, s[12:15], 0 offset:28 ; 4-byte Folded Spill
3521; GCN-NOHSA-SI-NEXT:    buffer_store_dword v6, off, s[12:15], 0 offset:32 ; 4-byte Folded Spill
3522; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v17
3523; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v16
3524; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v8, s0, v19
3525; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3526; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v6, s0, v18
3527; GCN-NOHSA-SI-NEXT:    buffer_store_dword v6, off, s[12:15], 0 offset:36 ; 4-byte Folded Spill
3528; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3529; GCN-NOHSA-SI-NEXT:    buffer_store_dword v7, off, s[12:15], 0 offset:40 ; 4-byte Folded Spill
3530; GCN-NOHSA-SI-NEXT:    buffer_store_dword v8, off, s[12:15], 0 offset:44 ; 4-byte Folded Spill
3531; GCN-NOHSA-SI-NEXT:    buffer_store_dword v9, off, s[12:15], 0 offset:48 ; 4-byte Folded Spill
3532; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[24:27], off, s[8:11], 0 offset:32
3533; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v14, s0, v17
3534; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v12, s0, v16
3535; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[28:31], off, s[8:11], 0 offset:48
3536; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
3537; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v19, 16, v27
3538; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v17, 16, v26
3539; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v25
3540; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v24
3541; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v18, s0, v27
3542; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v16, s0, v26
3543; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v22, s0, v25
3544; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v20, s0, v24
3545; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3546; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v27, 16, v31
3547; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v30
3548; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v34, 16, v29
3549; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v28
3550; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v26, s0, v31
3551; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v24, s0, v30
3552; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[35:38], off, s[8:11], 0 offset:64
3553; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v33, s0, v29
3554; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v31, s0, v28
3555; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[39:42], off, s[8:11], 0 offset:80
3556; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
3557; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v46, 16, v38
3558; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v44, 16, v37
3559; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v50, 16, v36
3560; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v48, 16, v35
3561; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v45, s0, v38
3562; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v43, s0, v37
3563; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v49, s0, v36
3564; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v47, s0, v35
3565; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3566; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v38, 16, v42
3567; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v41
3568; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v54, 16, v40
3569; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v52, 16, v39
3570; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v37, s0, v42
3571; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v35, s0, v41
3572; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[55:58], off, s[8:11], 0 offset:96
3573; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v53, s0, v40
3574; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v51, s0, v39
3575; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[39:42], off, s[8:11], 0 offset:112
3576; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
3577; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v61, 16, v58
3578; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v59, 16, v57
3579; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v11, 16, v56
3580; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3581; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v55
3582; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v60, s0, v58
3583; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v58, s0, v57
3584; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v10, s0, v56
3585; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v8, s0, v55
3586; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3587; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v42
3588; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v41
3589; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v40
3590; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v39
3591; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v6, s0, v42
3592; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v4, s0, v41
3593; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v2, s0, v40
3594; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, s0, v39
3595; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
3596; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
3597; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224
3598; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:240
3599; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:192
3600; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[58:61], off, s[0:3], 0 offset:208
3601; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[51:54], off, s[0:3], 0 offset:160
3602; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[35:38], off, s[0:3], 0 offset:176
3603; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[47:50], off, s[0:3], 0 offset:128
3604; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[43:46], off, s[0:3], 0 offset:144
3605; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[31:34], off, s[0:3], 0 offset:96
3606; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:112
3607; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:64
3608; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:80
3609; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32
3610; GCN-NOHSA-SI-NEXT:    buffer_load_dword v0, off, s[12:15], 0 offset:36 ; 4-byte Folded Reload
3611; GCN-NOHSA-SI-NEXT:    buffer_load_dword v1, off, s[12:15], 0 offset:40 ; 4-byte Folded Reload
3612; GCN-NOHSA-SI-NEXT:    buffer_load_dword v2, off, s[12:15], 0 offset:44 ; 4-byte Folded Reload
3613; GCN-NOHSA-SI-NEXT:    buffer_load_dword v3, off, s[12:15], 0 offset:48 ; 4-byte Folded Reload
3614; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3615; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
3616; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3617; GCN-NOHSA-SI-NEXT:    buffer_load_dword v0, off, s[12:15], 0 offset:20 ; 4-byte Folded Reload
3618; GCN-NOHSA-SI-NEXT:    buffer_load_dword v1, off, s[12:15], 0 offset:24 ; 4-byte Folded Reload
3619; GCN-NOHSA-SI-NEXT:    buffer_load_dword v2, off, s[12:15], 0 offset:28 ; 4-byte Folded Reload
3620; GCN-NOHSA-SI-NEXT:    buffer_load_dword v3, off, s[12:15], 0 offset:32 ; 4-byte Folded Reload
3621; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3622; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
3623; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
3624; GCN-NOHSA-SI-NEXT:    buffer_load_dword v0, off, s[12:15], 0 offset:4 ; 4-byte Folded Reload
3625; GCN-NOHSA-SI-NEXT:    buffer_load_dword v1, off, s[12:15], 0 offset:8 ; 4-byte Folded Reload
3626; GCN-NOHSA-SI-NEXT:    buffer_load_dword v2, off, s[12:15], 0 offset:12 ; 4-byte Folded Reload
3627; GCN-NOHSA-SI-NEXT:    buffer_load_dword v3, off, s[12:15], 0 offset:16 ; 4-byte Folded Reload
3628; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
3629; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
3630; GCN-NOHSA-SI-NEXT:    s_endpgm
3631;
3632; GCN-HSA-LABEL: global_zextload_v64i16_to_v64i32:
3633; GCN-HSA:       ; %bb.0:
3634; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
3635; GCN-HSA-NEXT:    s_movk_i32 s12, 0x50
3636; GCN-HSA-NEXT:    s_movk_i32 s13, 0x60
3637; GCN-HSA-NEXT:    s_movk_i32 s14, 0x70
3638; GCN-HSA-NEXT:    s_mov_b32 s15, 0xffff
3639; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
3640; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
3641; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
3642; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
3643; GCN-HSA-NEXT:    s_add_u32 s4, s2, s12
3644; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
3645; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
3646; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
3647; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
3648; GCN-HSA-NEXT:    s_add_u32 s4, s2, s13
3649; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
3650; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s5
3651; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s4
3652; GCN-HSA-NEXT:    s_add_u32 s4, s2, s14
3653; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
3654; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s5
3655; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s4
3656; GCN-HSA-NEXT:    s_add_u32 s4, s2, 16
3657; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
3658; GCN-HSA-NEXT:    s_add_u32 s6, s2, 32
3659; GCN-HSA-NEXT:    s_addc_u32 s7, s3, 0
3660; GCN-HSA-NEXT:    flat_load_dwordx4 v[8:11], v[8:9]
3661; GCN-HSA-NEXT:    s_add_u32 s8, s2, 48
3662; GCN-HSA-NEXT:    s_addc_u32 s9, s3, 0
3663; GCN-HSA-NEXT:    s_add_u32 s2, s2, 64
3664; GCN-HSA-NEXT:    flat_load_dwordx4 v[12:15], v[12:13]
3665; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
3666; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s3
3667; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s2
3668; GCN-HSA-NEXT:    flat_load_dwordx4 v[16:19], v[16:17]
3669; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s9
3670; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s8
3671; GCN-HSA-NEXT:    flat_load_dwordx4 v[20:23], v[20:21]
3672; GCN-HSA-NEXT:    v_mov_b32_e32 v29, s5
3673; GCN-HSA-NEXT:    v_mov_b32_e32 v28, s4
3674; GCN-HSA-NEXT:    flat_load_dwordx4 v[28:31], v[28:29]
3675; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
3676; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3677; GCN-HSA-NEXT:    v_mov_b32_e32 v37, s1
3678; GCN-HSA-NEXT:    v_mov_b32_e32 v36, s0
3679; GCN-HSA-NEXT:    s_waitcnt vmcnt(6)
3680; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v27, 16, v1
3681; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v25, 16, v0
3682; GCN-HSA-NEXT:    v_and_b32_e32 v26, s15, v1
3683; GCN-HSA-NEXT:    v_and_b32_e32 v24, s15, v0
3684; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s6
3685; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s7
3686; GCN-HSA-NEXT:    flat_load_dwordx4 v[32:35], v[0:1]
3687; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
3688; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
3689; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xe0
3690; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3691; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0xf0
3692; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
3693; GCN-HSA-NEXT:    s_add_u32 s6, s0, 0xc0
3694; GCN-HSA-NEXT:    s_addc_u32 s7, s1, 0
3695; GCN-HSA-NEXT:    s_add_u32 s8, s0, 0xd0
3696; GCN-HSA-NEXT:    s_addc_u32 s9, s1, 0
3697; GCN-HSA-NEXT:    flat_store_dwordx4 v[36:37], v[24:27]
3698; GCN-HSA-NEXT:    s_add_u32 s10, s0, 0xa0
3699; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v27, 16, v3
3700; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v25, 16, v2
3701; GCN-HSA-NEXT:    v_and_b32_e32 v26, s15, v3
3702; GCN-HSA-NEXT:    v_and_b32_e32 v24, s15, v2
3703; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[24:27]
3704; GCN-HSA-NEXT:    s_addc_u32 s11, s1, 0
3705; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s3
3706; GCN-HSA-NEXT:    s_waitcnt vmcnt(8)
3707; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v5
3708; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v4
3709; GCN-HSA-NEXT:    v_and_b32_e32 v2, s15, v5
3710; GCN-HSA-NEXT:    v_and_b32_e32 v0, s15, v4
3711; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s10
3712; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s2
3713; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xb0
3714; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s11
3715; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3716; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3717; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
3718; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v7
3719; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v6
3720; GCN-HSA-NEXT:    v_and_b32_e32 v2, s15, v7
3721; GCN-HSA-NEXT:    v_and_b32_e32 v0, s15, v6
3722; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
3723; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3724; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s6
3725; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s7
3726; GCN-HSA-NEXT:    s_waitcnt vmcnt(9)
3727; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v9
3728; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v8
3729; GCN-HSA-NEXT:    v_and_b32_e32 v2, s15, v9
3730; GCN-HSA-NEXT:    v_and_b32_e32 v0, s15, v8
3731; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3732; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s8
3733; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v11
3734; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v10
3735; GCN-HSA-NEXT:    v_and_b32_e32 v2, s15, v11
3736; GCN-HSA-NEXT:    v_and_b32_e32 v0, s15, v10
3737; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s9
3738; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x80
3739; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s5
3740; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3741; GCN-HSA-NEXT:    s_waitcnt vmcnt(10)
3742; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v5, 16, v14
3743; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v13
3744; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v12
3745; GCN-HSA-NEXT:    v_and_b32_e32 v2, s15, v13
3746; GCN-HSA-NEXT:    v_and_b32_e32 v0, s15, v12
3747; GCN-HSA-NEXT:    v_and_b32_e32 v4, s15, v14
3748; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3749; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s4
3750; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v15
3751; GCN-HSA-NEXT:    v_and_b32_e32 v6, s15, v15
3752; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[0:3]
3753; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
3754; GCN-HSA-NEXT:    s_waitcnt vmcnt(11)
3755; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v17
3756; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
3757; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
3758; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x90
3759; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v16
3760; GCN-HSA-NEXT:    v_and_b32_e32 v2, s15, v17
3761; GCN-HSA-NEXT:    v_and_b32_e32 v0, s15, v16
3762; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3763; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3764; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
3765; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
3766; GCN-HSA-NEXT:    s_add_u32 s2, s0, s13
3767; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v19
3768; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v18
3769; GCN-HSA-NEXT:    v_and_b32_e32 v2, s15, v19
3770; GCN-HSA-NEXT:    v_and_b32_e32 v0, s15, v18
3771; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3772; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3773; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
3774; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
3775; GCN-HSA-NEXT:    s_add_u32 s2, s0, s14
3776; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3777; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
3778; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
3779; GCN-HSA-NEXT:    s_add_u32 s2, s0, 64
3780; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3781; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s3
3782; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s2
3783; GCN-HSA-NEXT:    s_add_u32 s2, s0, s12
3784; GCN-HSA-NEXT:    s_waitcnt vmcnt(10)
3785; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v15, 16, v33
3786; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v13, 16, v32
3787; GCN-HSA-NEXT:    v_and_b32_e32 v14, s15, v33
3788; GCN-HSA-NEXT:    v_and_b32_e32 v12, s15, v32
3789; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3790; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v21
3791; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v20
3792; GCN-HSA-NEXT:    v_and_b32_e32 v2, s15, v21
3793; GCN-HSA-NEXT:    v_and_b32_e32 v0, s15, v20
3794; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
3795; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3796; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
3797; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v23
3798; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v5, 16, v22
3799; GCN-HSA-NEXT:    v_and_b32_e32 v6, s15, v23
3800; GCN-HSA-NEXT:    v_and_b32_e32 v4, s15, v22
3801; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
3802; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
3803; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
3804; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v11, 16, v35
3805; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v9, 16, v34
3806; GCN-HSA-NEXT:    v_and_b32_e32 v10, s15, v35
3807; GCN-HSA-NEXT:    v_and_b32_e32 v8, s15, v34
3808; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
3809; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
3810; GCN-HSA-NEXT:    s_add_u32 s0, s0, 48
3811; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
3812; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v29
3813; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v5, 16, v28
3814; GCN-HSA-NEXT:    v_and_b32_e32 v6, s15, v29
3815; GCN-HSA-NEXT:    v_and_b32_e32 v4, s15, v28
3816; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
3817; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
3818; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
3819; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v31
3820; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
3821; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v30
3822; GCN-HSA-NEXT:    v_and_b32_e32 v2, s15, v31
3823; GCN-HSA-NEXT:    v_and_b32_e32 v0, s15, v30
3824; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
3825; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
3826; GCN-HSA-NEXT:    s_endpgm
3827;
3828; GCN-NOHSA-VI-LABEL: global_zextload_v64i16_to_v64i32:
3829; GCN-NOHSA-VI:       ; %bb.0:
3830; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
3831; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
3832; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
3833; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
3834; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
3835; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
3836; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s6
3837; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s7
3838; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, s2
3839; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, s3
3840; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[8:11], off, s[4:7], 0 offset:112
3841; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:96
3842; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:80
3843; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:64
3844; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[4:7], 0
3845; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[24:27], off, s[4:7], 0 offset:16
3846; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:32
3847; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[32:35], off, s[4:7], 0 offset:48
3848; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, 0xffff
3849; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(7)
3850; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v63, 16, v11
3851; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v62, s4, v11
3852; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v61, 16, v10
3853; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v60, s4, v10
3854; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v11, 16, v9
3855; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v10, s4, v9
3856; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v9, 16, v8
3857; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v8, s4, v8
3858; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(3)
3859; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v7
3860; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v2, s4, v7
3861; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v6
3862; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, s4, v6
3863; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v7, 16, v5
3864; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v6, s4, v5
3865; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v4
3866; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v4, s4, v4
3867; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(2)
3868; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v39, 16, v27
3869; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v38, s4, v27
3870; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v37, 16, v26
3871; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v36, s4, v26
3872; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v27, 16, v25
3873; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v26, s4, v25
3874; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v25, 16, v24
3875; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v24, s4, v24
3876; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
3877; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v43, 16, v31
3878; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v42, s4, v31
3879; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v41, 16, v30
3880; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v40, s4, v30
3881; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v31, 16, v29
3882; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v30, s4, v29
3883; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v29, 16, v28
3884; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v28, s4, v28
3885; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
3886; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v47, 16, v35
3887; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v46, s4, v35
3888; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v45, 16, v34
3889; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v44, s4, v34
3890; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v35, 16, v33
3891; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v34, s4, v33
3892; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v33, 16, v32
3893; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v32, s4, v32
3894; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v51, 16, v23
3895; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v50, s4, v23
3896; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v49, 16, v22
3897; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v48, s4, v22
3898; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v23, 16, v21
3899; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v22, s4, v21
3900; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v21, 16, v20
3901; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v20, s4, v20
3902; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v55, 16, v19
3903; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v54, s4, v19
3904; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v53, 16, v18
3905; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v52, s4, v18
3906; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v19, 16, v17
3907; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v18, s4, v17
3908; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v17, 16, v16
3909; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v16, s4, v16
3910; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v59, 16, v15
3911; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v58, s4, v15
3912; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v57, 16, v14
3913; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v56, s4, v14
3914; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v15, 16, v13
3915; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v14, s4, v13
3916; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v13, 16, v12
3917; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v12, s4, v12
3918; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:224
3919; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[60:63], off, s[0:3], 0 offset:240
3920; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:192
3921; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[56:59], off, s[0:3], 0 offset:208
3922; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:160
3923; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[52:55], off, s[0:3], 0 offset:176
3924; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:128
3925; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:144
3926; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:96
3927; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[44:47], off, s[0:3], 0 offset:112
3928; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:64
3929; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[40:43], off, s[0:3], 0 offset:80
3930; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:32
3931; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:48
3932; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
3933; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
3934; GCN-NOHSA-VI-NEXT:    s_endpgm
3935;
3936; EG-LABEL: global_zextload_v64i16_to_v64i32:
3937; EG:       ; %bb.0:
3938; EG-NEXT:    ALU 0, @38, KC0[CB0:0-32], KC1[]
3939; EG-NEXT:    TEX 3 @22
3940; EG-NEXT:    ALU 56, @39, KC0[CB0:0-32], KC1[]
3941; EG-NEXT:    TEX 3 @30
3942; EG-NEXT:    ALU 87, @96, KC0[CB0:0-32], KC1[]
3943; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T49.XYZW, T66.X, 0
3944; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T65.X, 0
3945; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T50.XYZW, T64.X, 0
3946; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T62.X, 0
3947; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T51.XYZW, T61.X, 0
3948; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T59.X, 0
3949; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T52.XYZW, T58.X, 0
3950; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T54.XYZW, T56.X, 0
3951; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T38.XYZW, T55.X, 0
3952; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T53.X, 0
3953; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T48.X, 0
3954; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T47.X, 0
3955; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T46.X, 0
3956; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T44.X, 0
3957; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T36.XYZW, T43.X, 0
3958; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T41.X, 1
3959; EG-NEXT:    CF_END
3960; EG-NEXT:    Fetch clause starting at 22:
3961; EG-NEXT:     VTX_READ_128 T36.XYZW, T35.X, 0, #1
3962; EG-NEXT:     VTX_READ_128 T38.XYZW, T35.X, 48, #1
3963; EG-NEXT:     VTX_READ_128 T39.XYZW, T35.X, 32, #1
3964; EG-NEXT:     VTX_READ_128 T40.XYZW, T35.X, 16, #1
3965; EG-NEXT:    Fetch clause starting at 30:
3966; EG-NEXT:     VTX_READ_128 T49.XYZW, T35.X, 112, #1
3967; EG-NEXT:     VTX_READ_128 T50.XYZW, T35.X, 96, #1
3968; EG-NEXT:     VTX_READ_128 T51.XYZW, T35.X, 80, #1
3969; EG-NEXT:     VTX_READ_128 T52.XYZW, T35.X, 64, #1
3970; EG-NEXT:    ALU clause starting at 38:
3971; EG-NEXT:     MOV * T35.X, KC0[2].Z,
3972; EG-NEXT:    ALU clause starting at 39:
3973; EG-NEXT:     LSHR * T37.W, T36.W, literal.x,
3974; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3975; EG-NEXT:     AND_INT * T37.Z, T36.W, literal.x,
3976; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3977; EG-NEXT:     LSHR T37.Y, T36.Z, literal.x,
3978; EG-NEXT:     LSHR * T36.W, T36.Y, literal.x,
3979; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
3980; EG-NEXT:     AND_INT T37.X, T36.Z, literal.x,
3981; EG-NEXT:     AND_INT T36.Z, T36.Y, literal.x,
3982; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
3983; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
3984; EG-NEXT:     LSHR T41.X, PV.W, literal.x,
3985; EG-NEXT:     LSHR T36.Y, T36.X, literal.y,
3986; EG-NEXT:     LSHR T42.W, T40.W, literal.y,
3987; EG-NEXT:     AND_INT * T36.X, T36.X, literal.z,
3988; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3989; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3990; EG-NEXT:     AND_INT * T42.Z, T40.W, literal.x,
3991; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3992; EG-NEXT:     LSHR T43.X, KC0[2].Y, literal.x,
3993; EG-NEXT:     LSHR T42.Y, T40.Z, literal.y,
3994; EG-NEXT:     LSHR T40.W, T40.Y, literal.y,
3995; EG-NEXT:     AND_INT * T42.X, T40.Z, literal.z,
3996; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
3997; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
3998; EG-NEXT:     AND_INT T40.Z, T40.Y, literal.x,
3999; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4000; EG-NEXT:    65535(9.183409e-41), 48(6.726233e-44)
4001; EG-NEXT:     LSHR T44.X, PV.W, literal.x,
4002; EG-NEXT:     LSHR T40.Y, T40.X, literal.y,
4003; EG-NEXT:     LSHR T45.W, T39.W, literal.y,
4004; EG-NEXT:     AND_INT * T40.X, T40.X, literal.z,
4005; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4006; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4007; EG-NEXT:     AND_INT T45.Z, T39.W, literal.x,
4008; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4009; EG-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
4010; EG-NEXT:     LSHR T46.X, PV.W, literal.x,
4011; EG-NEXT:     LSHR T45.Y, T39.Z, literal.y,
4012; EG-NEXT:     LSHR T39.W, T39.Y, literal.y,
4013; EG-NEXT:     AND_INT * T45.X, T39.Z, literal.z,
4014; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4015; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4016; EG-NEXT:     AND_INT T39.Z, T39.Y, literal.x,
4017; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4018; EG-NEXT:    65535(9.183409e-41), 80(1.121039e-43)
4019; EG-NEXT:     LSHR T47.X, PV.W, literal.x,
4020; EG-NEXT:     LSHR T39.Y, T39.X, literal.y,
4021; EG-NEXT:     AND_INT * T39.X, T39.X, literal.z,
4022; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4023; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4024; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.x,
4025; EG-NEXT:     LSHR * T35.W, T38.W, literal.y,
4026; EG-NEXT:    64(8.968310e-44), 16(2.242078e-44)
4027; EG-NEXT:     LSHR T48.X, PV.W, literal.x,
4028; EG-NEXT:     AND_INT * T35.Z, T38.W, literal.y,
4029; EG-NEXT:    2(2.802597e-45), 65535(9.183409e-41)
4030; EG-NEXT:    ALU clause starting at 96:
4031; EG-NEXT:     LSHR T35.Y, T38.Z, literal.x,
4032; EG-NEXT:     LSHR * T38.W, T38.Y, literal.x,
4033; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4034; EG-NEXT:     AND_INT T35.X, T38.Z, literal.x,
4035; EG-NEXT:     AND_INT T38.Z, T38.Y, literal.x,
4036; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4037; EG-NEXT:    65535(9.183409e-41), 112(1.569454e-43)
4038; EG-NEXT:     LSHR T53.X, PV.W, literal.x,
4039; EG-NEXT:     LSHR T38.Y, T38.X, literal.y,
4040; EG-NEXT:     LSHR T54.W, T52.W, literal.y,
4041; EG-NEXT:     AND_INT * T38.X, T38.X, literal.z,
4042; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4043; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4044; EG-NEXT:     AND_INT T54.Z, T52.W, literal.x,
4045; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4046; EG-NEXT:    65535(9.183409e-41), 96(1.345247e-43)
4047; EG-NEXT:     LSHR T55.X, PV.W, literal.x,
4048; EG-NEXT:     LSHR T54.Y, T52.Z, literal.y,
4049; EG-NEXT:     LSHR T52.W, T52.Y, literal.y,
4050; EG-NEXT:     AND_INT * T54.X, T52.Z, literal.z,
4051; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4052; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4053; EG-NEXT:     AND_INT T52.Z, T52.Y, literal.x,
4054; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4055; EG-NEXT:    65535(9.183409e-41), 144(2.017870e-43)
4056; EG-NEXT:     LSHR T56.X, PV.W, literal.x,
4057; EG-NEXT:     LSHR T52.Y, T52.X, literal.y,
4058; EG-NEXT:     LSHR T57.W, T51.W, literal.y,
4059; EG-NEXT:     AND_INT * T52.X, T52.X, literal.z,
4060; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4061; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4062; EG-NEXT:     AND_INT T57.Z, T51.W, literal.x,
4063; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4064; EG-NEXT:    65535(9.183409e-41), 128(1.793662e-43)
4065; EG-NEXT:     LSHR T58.X, PV.W, literal.x,
4066; EG-NEXT:     LSHR T57.Y, T51.Z, literal.y,
4067; EG-NEXT:     LSHR T51.W, T51.Y, literal.y,
4068; EG-NEXT:     AND_INT * T57.X, T51.Z, literal.z,
4069; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4070; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4071; EG-NEXT:     AND_INT T51.Z, T51.Y, literal.x,
4072; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4073; EG-NEXT:    65535(9.183409e-41), 176(2.466285e-43)
4074; EG-NEXT:     LSHR T59.X, PV.W, literal.x,
4075; EG-NEXT:     LSHR T51.Y, T51.X, literal.y,
4076; EG-NEXT:     LSHR T60.W, T50.W, literal.y,
4077; EG-NEXT:     AND_INT * T51.X, T51.X, literal.z,
4078; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4079; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4080; EG-NEXT:     AND_INT T60.Z, T50.W, literal.x,
4081; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4082; EG-NEXT:    65535(9.183409e-41), 160(2.242078e-43)
4083; EG-NEXT:     LSHR T61.X, PV.W, literal.x,
4084; EG-NEXT:     LSHR T60.Y, T50.Z, literal.y,
4085; EG-NEXT:     LSHR T50.W, T50.Y, literal.y,
4086; EG-NEXT:     AND_INT * T60.X, T50.Z, literal.z,
4087; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4088; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4089; EG-NEXT:     AND_INT T50.Z, T50.Y, literal.x,
4090; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4091; EG-NEXT:    65535(9.183409e-41), 208(2.914701e-43)
4092; EG-NEXT:     LSHR T62.X, PV.W, literal.x,
4093; EG-NEXT:     LSHR T50.Y, T50.X, literal.y,
4094; EG-NEXT:     LSHR T63.W, T49.W, literal.y,
4095; EG-NEXT:     AND_INT * T50.X, T50.X, literal.z,
4096; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4097; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4098; EG-NEXT:     AND_INT T63.Z, T49.W, literal.x,
4099; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4100; EG-NEXT:    65535(9.183409e-41), 192(2.690493e-43)
4101; EG-NEXT:     LSHR T64.X, PV.W, literal.x,
4102; EG-NEXT:     LSHR T63.Y, T49.Z, literal.y,
4103; EG-NEXT:     LSHR T49.W, T49.Y, literal.y,
4104; EG-NEXT:     AND_INT * T63.X, T49.Z, literal.z,
4105; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4106; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4107; EG-NEXT:     AND_INT T49.Z, T49.Y, literal.x,
4108; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4109; EG-NEXT:    65535(9.183409e-41), 240(3.363116e-43)
4110; EG-NEXT:     LSHR T65.X, PV.W, literal.x,
4111; EG-NEXT:     LSHR T49.Y, T49.X, literal.y,
4112; EG-NEXT:     AND_INT * T49.X, T49.X, literal.z,
4113; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4114; EG-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4115; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
4116; EG-NEXT:    224(3.138909e-43), 0(0.000000e+00)
4117; EG-NEXT:     LSHR * T66.X, PV.W, literal.x,
4118; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4119;
4120; CM-LABEL: global_zextload_v64i16_to_v64i32:
4121; CM:       ; %bb.0:
4122; CM-NEXT:    ALU 0, @38, KC0[CB0:0-32], KC1[]
4123; CM-NEXT:    TEX 3 @22
4124; CM-NEXT:    ALU 50, @39, KC0[CB0:0-32], KC1[]
4125; CM-NEXT:    TEX 3 @30
4126; CM-NEXT:    ALU 78, @90, KC0[CB0:0-32], KC1[]
4127; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T65, T66.X
4128; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T63, T48.X
4129; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T62, T64.X
4130; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T60, T49.X
4131; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T59, T61.X
4132; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T57, T50.X
4133; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T56, T58.X
4134; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T54, T51.X
4135; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T53, T55.X
4136; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T35, T37.X
4137; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T47, T52.X
4138; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T45, T38.X
4139; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T44, T46.X
4140; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T42, T39.X
4141; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T41, T43.X
4142; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T40, T36.X
4143; CM-NEXT:    CF_END
4144; CM-NEXT:    Fetch clause starting at 22:
4145; CM-NEXT:     VTX_READ_128 T36.XYZW, T35.X, 112, #1
4146; CM-NEXT:     VTX_READ_128 T37.XYZW, T35.X, 64, #1
4147; CM-NEXT:     VTX_READ_128 T38.XYZW, T35.X, 80, #1
4148; CM-NEXT:     VTX_READ_128 T39.XYZW, T35.X, 96, #1
4149; CM-NEXT:    Fetch clause starting at 30:
4150; CM-NEXT:     VTX_READ_128 T48.XYZW, T35.X, 0, #1
4151; CM-NEXT:     VTX_READ_128 T49.XYZW, T35.X, 16, #1
4152; CM-NEXT:     VTX_READ_128 T50.XYZW, T35.X, 32, #1
4153; CM-NEXT:     VTX_READ_128 T51.XYZW, T35.X, 48, #1
4154; CM-NEXT:    ALU clause starting at 38:
4155; CM-NEXT:     MOV * T35.X, KC0[2].Z,
4156; CM-NEXT:    ALU clause starting at 39:
4157; CM-NEXT:     LSHR * T40.W, T36.Y, literal.x,
4158; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4159; CM-NEXT:     AND_INT * T40.Z, T36.Y, literal.x,
4160; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4161; CM-NEXT:     LSHR T40.Y, T36.X, literal.x,
4162; CM-NEXT:     LSHR * T41.W, T36.W, literal.x,
4163; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4164; CM-NEXT:     AND_INT T40.X, T36.X, literal.x,
4165; CM-NEXT:     AND_INT T41.Z, T36.W, literal.x,
4166; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4167; CM-NEXT:    65535(9.183409e-41), 224(3.138909e-43)
4168; CM-NEXT:     LSHR T36.X, PV.W, literal.x,
4169; CM-NEXT:     LSHR T41.Y, T36.Z, literal.y,
4170; CM-NEXT:     LSHR * T42.W, T39.Y, literal.y,
4171; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4172; CM-NEXT:     AND_INT T41.X, T36.Z, literal.x,
4173; CM-NEXT:     AND_INT T42.Z, T39.Y, literal.x,
4174; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4175; CM-NEXT:    65535(9.183409e-41), 240(3.363116e-43)
4176; CM-NEXT:     LSHR T43.X, PV.W, literal.x,
4177; CM-NEXT:     LSHR T42.Y, T39.X, literal.y,
4178; CM-NEXT:     LSHR * T44.W, T39.W, literal.y,
4179; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4180; CM-NEXT:     AND_INT T42.X, T39.X, literal.x,
4181; CM-NEXT:     AND_INT T44.Z, T39.W, literal.x,
4182; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4183; CM-NEXT:    65535(9.183409e-41), 192(2.690493e-43)
4184; CM-NEXT:     LSHR T39.X, PV.W, literal.x,
4185; CM-NEXT:     LSHR T44.Y, T39.Z, literal.y,
4186; CM-NEXT:     LSHR * T45.W, T38.Y, literal.y,
4187; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4188; CM-NEXT:     AND_INT T44.X, T39.Z, literal.x,
4189; CM-NEXT:     AND_INT T45.Z, T38.Y, literal.x,
4190; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4191; CM-NEXT:    65535(9.183409e-41), 208(2.914701e-43)
4192; CM-NEXT:     LSHR T46.X, PV.W, literal.x,
4193; CM-NEXT:     LSHR T45.Y, T38.X, literal.y,
4194; CM-NEXT:     LSHR * T47.W, T38.W, literal.y,
4195; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4196; CM-NEXT:     AND_INT T45.X, T38.X, literal.x,
4197; CM-NEXT:     AND_INT T47.Z, T38.W, literal.x,
4198; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4199; CM-NEXT:    65535(9.183409e-41), 160(2.242078e-43)
4200; CM-NEXT:     LSHR T38.X, PV.W, literal.x,
4201; CM-NEXT:     LSHR T47.Y, T38.Z, literal.y,
4202; CM-NEXT:     LSHR * T35.W, T37.Y, literal.y,
4203; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4204; CM-NEXT:     AND_INT T47.X, T38.Z, literal.x,
4205; CM-NEXT:     AND_INT T35.Z, T37.Y, literal.x,
4206; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4207; CM-NEXT:    65535(9.183409e-41), 176(2.466285e-43)
4208; CM-NEXT:    ALU clause starting at 90:
4209; CM-NEXT:     LSHR T52.X, T0.W, literal.x,
4210; CM-NEXT:     LSHR T35.Y, T37.X, literal.y,
4211; CM-NEXT:     LSHR * T53.W, T37.W, literal.y, BS:VEC_120/SCL_212
4212; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4213; CM-NEXT:     AND_INT T35.X, T37.X, literal.x,
4214; CM-NEXT:     AND_INT T53.Z, T37.W, literal.x,
4215; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4216; CM-NEXT:    65535(9.183409e-41), 128(1.793662e-43)
4217; CM-NEXT:     LSHR T37.X, PV.W, literal.x,
4218; CM-NEXT:     LSHR T53.Y, T37.Z, literal.y,
4219; CM-NEXT:     LSHR * T54.W, T51.Y, literal.y,
4220; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4221; CM-NEXT:     AND_INT T53.X, T37.Z, literal.x,
4222; CM-NEXT:     AND_INT T54.Z, T51.Y, literal.x,
4223; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4224; CM-NEXT:    65535(9.183409e-41), 144(2.017870e-43)
4225; CM-NEXT:     LSHR T55.X, PV.W, literal.x,
4226; CM-NEXT:     LSHR T54.Y, T51.X, literal.y,
4227; CM-NEXT:     LSHR * T56.W, T51.W, literal.y,
4228; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4229; CM-NEXT:     AND_INT T54.X, T51.X, literal.x,
4230; CM-NEXT:     AND_INT T56.Z, T51.W, literal.x,
4231; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4232; CM-NEXT:    65535(9.183409e-41), 96(1.345247e-43)
4233; CM-NEXT:     LSHR T51.X, PV.W, literal.x,
4234; CM-NEXT:     LSHR T56.Y, T51.Z, literal.y,
4235; CM-NEXT:     LSHR * T57.W, T50.Y, literal.y,
4236; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4237; CM-NEXT:     AND_INT T56.X, T51.Z, literal.x,
4238; CM-NEXT:     AND_INT T57.Z, T50.Y, literal.x,
4239; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4240; CM-NEXT:    65535(9.183409e-41), 112(1.569454e-43)
4241; CM-NEXT:     LSHR T58.X, PV.W, literal.x,
4242; CM-NEXT:     LSHR T57.Y, T50.X, literal.y,
4243; CM-NEXT:     LSHR * T59.W, T50.W, literal.y,
4244; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4245; CM-NEXT:     AND_INT T57.X, T50.X, literal.x,
4246; CM-NEXT:     AND_INT T59.Z, T50.W, literal.x,
4247; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4248; CM-NEXT:    65535(9.183409e-41), 64(8.968310e-44)
4249; CM-NEXT:     LSHR T50.X, PV.W, literal.x,
4250; CM-NEXT:     LSHR T59.Y, T50.Z, literal.y,
4251; CM-NEXT:     LSHR * T60.W, T49.Y, literal.y,
4252; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4253; CM-NEXT:     AND_INT T59.X, T50.Z, literal.x,
4254; CM-NEXT:     AND_INT T60.Z, T49.Y, literal.x,
4255; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4256; CM-NEXT:    65535(9.183409e-41), 80(1.121039e-43)
4257; CM-NEXT:     LSHR T61.X, PV.W, literal.x,
4258; CM-NEXT:     LSHR T60.Y, T49.X, literal.y,
4259; CM-NEXT:     LSHR * T62.W, T49.W, literal.y,
4260; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4261; CM-NEXT:     AND_INT T60.X, T49.X, literal.x,
4262; CM-NEXT:     AND_INT T62.Z, T49.W, literal.x,
4263; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4264; CM-NEXT:    65535(9.183409e-41), 32(4.484155e-44)
4265; CM-NEXT:     LSHR T49.X, PV.W, literal.x,
4266; CM-NEXT:     LSHR T62.Y, T49.Z, literal.y,
4267; CM-NEXT:     LSHR * T63.W, T48.Y, literal.y,
4268; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4269; CM-NEXT:     AND_INT T62.X, T49.Z, literal.x,
4270; CM-NEXT:     AND_INT T63.Z, T48.Y, literal.x,
4271; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4272; CM-NEXT:    65535(9.183409e-41), 48(6.726233e-44)
4273; CM-NEXT:     LSHR T64.X, PV.W, literal.x,
4274; CM-NEXT:     LSHR T63.Y, T48.X, literal.y,
4275; CM-NEXT:     LSHR * T65.W, T48.W, literal.y,
4276; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4277; CM-NEXT:     AND_INT T63.X, T48.X, literal.x,
4278; CM-NEXT:     AND_INT * T65.Z, T48.W, literal.x,
4279; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
4280; CM-NEXT:     LSHR T48.X, KC0[2].Y, literal.x,
4281; CM-NEXT:     LSHR * T65.Y, T48.Z, literal.y,
4282; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4283; CM-NEXT:     AND_INT T65.X, T48.Z, literal.x,
4284; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4285; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
4286; CM-NEXT:     LSHR * T66.X, PV.W, literal.x,
4287; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4288  %load = load <64 x i16>, <64 x i16> addrspace(1)* %in
4289  %ext = zext <64 x i16> %load to <64 x i32>
4290  store <64 x i32> %ext, <64 x i32> addrspace(1)* %out
4291  ret void
4292}
4293
4294define amdgpu_kernel void @global_sextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 {
4295; GCN-NOHSA-SI-LABEL: global_sextload_v64i16_to_v64i32:
4296; GCN-NOHSA-SI:       ; %bb.0:
4297; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, SCRATCH_RSRC_DWORD0
4298; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, SCRATCH_RSRC_DWORD1
4299; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, -1
4300; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, 0xe8f000
4301; GCN-NOHSA-SI-NEXT:    s_add_u32 s8, s8, s3
4302; GCN-NOHSA-SI-NEXT:    s_addc_u32 s9, s9, 0
4303; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
4304; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
4305; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
4306; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
4307; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
4308; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
4309; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s6
4310; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s7
4311; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, s2
4312; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, s3
4313; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:112
4314; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:96
4315; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:80
4316; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[24:27], off, s[4:7], 0 offset:64
4317; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[8:11], off, s[4:7], 0
4318; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:16
4319; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[32:35], off, s[4:7], 0 offset:32
4320; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[36:39], off, s[4:7], 0 offset:48
4321; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(3)
4322; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v3, 16, v11
4323; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 16, v10
4324; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v2, v11, 0, 16
4325; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v10, 0, 16
4326; GCN-NOHSA-SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0 offset:4 ; 4-byte Folded Spill
4327; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
4328; GCN-NOHSA-SI-NEXT:    buffer_store_dword v1, off, s[8:11], 0 offset:8 ; 4-byte Folded Spill
4329; GCN-NOHSA-SI-NEXT:    buffer_store_dword v2, off, s[8:11], 0 offset:12 ; 4-byte Folded Spill
4330; GCN-NOHSA-SI-NEXT:    buffer_store_dword v3, off, s[8:11], 0 offset:16 ; 4-byte Folded Spill
4331; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v7, 16, v9
4332; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v5, 16, v8
4333; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v6, v9, 0, 16
4334; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v4, v8, 0, 16
4335; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v11, 16, v31
4336; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v9, 16, v30
4337; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v10, v31, 0, 16
4338; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v8, v30, 0, 16
4339; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v43, 16, v29
4340; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v41, 16, v28
4341; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v42, v29, 0, 16
4342; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v40, v28, 0, 16
4343; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v31, 16, v35
4344; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v29, 16, v34
4345; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v30, v35, 0, 16
4346; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v28, v34, 0, 16
4347; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v47, 16, v33
4348; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v45, 16, v32
4349; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v46, v33, 0, 16
4350; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v44, v32, 0, 16
4351; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v35, 16, v39
4352; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v33, 16, v38
4353; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v34, v39, 0, 16
4354; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v32, v38, 0, 16
4355; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v51, 16, v37
4356; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v49, 16, v36
4357; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v50, v37, 0, 16
4358; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v48, v36, 0, 16
4359; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v39, 16, v27
4360; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v37, 16, v26
4361; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v38, v27, 0, 16
4362; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v36, v26, 0, 16
4363; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v55, 16, v25
4364; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v53, 16, v24
4365; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v54, v25, 0, 16
4366; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v52, v24, 0, 16
4367; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v26, 16, v23
4368; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v24, 16, v22
4369; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v25, v23, 0, 16
4370; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v23, v22, 0, 16
4371; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v59, 16, v21
4372; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v57, 16, v20
4373; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v58, v21, 0, 16
4374; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v56, v20, 0, 16
4375; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v22, 16, v19
4376; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v20, 16, v18
4377; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v21, v19, 0, 16
4378; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v19, v18, 0, 16
4379; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v63, 16, v17
4380; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v61, 16, v16
4381; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v62, v17, 0, 16
4382; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v60, v16, 0, 16
4383; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v18, 16, v15
4384; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 16, v14
4385; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v17, v15, 0, 16
4386; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v14, 0, 16
4387; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
4388; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v3, 16, v13
4389; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 16, v12
4390; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v2, v13, 0, 16
4391; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v12, 0, 16
4392; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224
4393; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:240
4394; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[60:63], off, s[0:3], 0 offset:192
4395; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[19:22], off, s[0:3], 0 offset:208
4396; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[56:59], off, s[0:3], 0 offset:160
4397; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[23:26], off, s[0:3], 0 offset:176
4398; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[52:55], off, s[0:3], 0 offset:128
4399; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:144
4400; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:96
4401; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:112
4402; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[44:47], off, s[0:3], 0 offset:64
4403; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:80
4404; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[40:43], off, s[0:3], 0 offset:32
4405; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:48
4406; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
4407; GCN-NOHSA-SI-NEXT:    buffer_load_dword v0, off, s[8:11], 0 offset:4 ; 4-byte Folded Reload
4408; GCN-NOHSA-SI-NEXT:    buffer_load_dword v1, off, s[8:11], 0 offset:8 ; 4-byte Folded Reload
4409; GCN-NOHSA-SI-NEXT:    buffer_load_dword v2, off, s[8:11], 0 offset:12 ; 4-byte Folded Reload
4410; GCN-NOHSA-SI-NEXT:    buffer_load_dword v3, off, s[8:11], 0 offset:16 ; 4-byte Folded Reload
4411; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
4412; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
4413; GCN-NOHSA-SI-NEXT:    s_endpgm
4414;
4415; GCN-HSA-LABEL: global_sextload_v64i16_to_v64i32:
4416; GCN-HSA:       ; %bb.0:
4417; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
4418; GCN-HSA-NEXT:    s_movk_i32 s7, 0x70
4419; GCN-HSA-NEXT:    s_movk_i32 s8, 0x60
4420; GCN-HSA-NEXT:    s_movk_i32 s6, 0x50
4421; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
4422; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4423; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4424; GCN-HSA-NEXT:    flat_load_dwordx4 v[12:15], v[0:1]
4425; GCN-HSA-NEXT:    s_add_u32 s4, s2, s7
4426; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
4427; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
4428; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
4429; GCN-HSA-NEXT:    flat_load_dwordx4 v[8:11], v[0:1]
4430; GCN-HSA-NEXT:    s_add_u32 s4, s2, s8
4431; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
4432; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
4433; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
4434; GCN-HSA-NEXT:    s_add_u32 s4, s2, s6
4435; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[0:1]
4436; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
4437; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
4438; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
4439; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
4440; GCN-HSA-NEXT:    s_add_u32 s4, s2, 64
4441; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
4442; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s5
4443; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s4
4444; GCN-HSA-NEXT:    flat_load_dwordx4 v[16:19], v[16:17]
4445; GCN-HSA-NEXT:    s_add_u32 s4, s2, 48
4446; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
4447; GCN-HSA-NEXT:    s_add_u32 s10, s2, 32
4448; GCN-HSA-NEXT:    s_addc_u32 s11, s3, 0
4449; GCN-HSA-NEXT:    s_add_u32 s2, s2, 16
4450; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s5
4451; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
4452; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s4
4453; GCN-HSA-NEXT:    v_mov_b32_e32 v33, s11
4454; GCN-HSA-NEXT:    flat_load_dwordx4 v[20:23], v[20:21]
4455; GCN-HSA-NEXT:    v_mov_b32_e32 v32, s10
4456; GCN-HSA-NEXT:    v_mov_b32_e32 v37, s1
4457; GCN-HSA-NEXT:    v_mov_b32_e32 v36, s0
4458; GCN-HSA-NEXT:    s_waitcnt vmcnt(5)
4459; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v27, 16, v13
4460; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v25, 16, v12
4461; GCN-HSA-NEXT:    v_bfe_i32 v26, v13, 0, 16
4462; GCN-HSA-NEXT:    v_bfe_i32 v24, v12, 0, 16
4463; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
4464; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
4465; GCN-HSA-NEXT:    flat_load_dwordx4 v[28:31], v[12:13]
4466; GCN-HSA-NEXT:    flat_load_dwordx4 v[32:35], v[32:33]
4467; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
4468; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4469; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
4470; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
4471; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xe0
4472; GCN-HSA-NEXT:    flat_store_dwordx4 v[36:37], v[24:27]
4473; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4474; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v27, 16, v15
4475; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v25, 16, v14
4476; GCN-HSA-NEXT:    v_bfe_i32 v26, v15, 0, 16
4477; GCN-HSA-NEXT:    v_bfe_i32 v24, v14, 0, 16
4478; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[24:27]
4479; GCN-HSA-NEXT:    s_waitcnt vmcnt(8)
4480; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v15, 16, v9
4481; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v13, 16, v8
4482; GCN-HSA-NEXT:    v_bfe_i32 v14, v9, 0, 16
4483; GCN-HSA-NEXT:    v_bfe_i32 v12, v8, 0, 16
4484; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
4485; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
4486; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xf0
4487; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4488; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[12:15]
4489; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
4490; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
4491; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xc0
4492; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4493; GCN-HSA-NEXT:    v_mov_b32_e32 v25, s3
4494; GCN-HSA-NEXT:    v_mov_b32_e32 v24, s2
4495; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xd0
4496; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v14, 16, v11
4497; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v12, 16, v10
4498; GCN-HSA-NEXT:    v_bfe_i32 v13, v11, 0, 16
4499; GCN-HSA-NEXT:    v_bfe_i32 v11, v10, 0, 16
4500; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4501; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[11:14]
4502; GCN-HSA-NEXT:    s_waitcnt vmcnt(9)
4503; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 16, v4
4504; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
4505; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
4506; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xa0
4507; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4508; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v11, 16, v5
4509; GCN-HSA-NEXT:    v_bfe_i32 v10, v5, 0, 16
4510; GCN-HSA-NEXT:    v_bfe_i32 v8, v4, 0, 16
4511; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s3
4512; GCN-HSA-NEXT:    flat_store_dwordx4 v[24:25], v[8:11]
4513; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s2
4514; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xb0
4515; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v10, 16, v7
4516; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v8, 16, v6
4517; GCN-HSA-NEXT:    v_bfe_i32 v9, v7, 0, 16
4518; GCN-HSA-NEXT:    v_bfe_i32 v7, v6, 0, 16
4519; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4520; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[7:10]
4521; GCN-HSA-NEXT:    s_waitcnt vmcnt(10)
4522; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v5, 16, v0
4523; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v7, 16, v1
4524; GCN-HSA-NEXT:    v_bfe_i32 v6, v1, 0, 16
4525; GCN-HSA-NEXT:    v_bfe_i32 v4, v0, 0, 16
4526; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
4527; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
4528; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x80
4529; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4530; GCN-HSA-NEXT:    flat_store_dwordx4 v[14:15], v[4:7]
4531; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v11, 16, v3
4532; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
4533; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 16, v2
4534; GCN-HSA-NEXT:    v_bfe_i32 v10, v3, 0, 16
4535; GCN-HSA-NEXT:    v_bfe_i32 v8, v2, 0, 16
4536; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
4537; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x90
4538; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]
4539; GCN-HSA-NEXT:    s_waitcnt vmcnt(11)
4540; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 16, v17
4541; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v16
4542; GCN-HSA-NEXT:    v_bfe_i32 v2, v17, 0, 16
4543; GCN-HSA-NEXT:    v_bfe_i32 v0, v16, 0, 16
4544; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4545; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4546; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
4547; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
4548; GCN-HSA-NEXT:    s_add_u32 s2, s0, s8
4549; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 16, v19
4550; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v18
4551; GCN-HSA-NEXT:    v_bfe_i32 v2, v19, 0, 16
4552; GCN-HSA-NEXT:    v_bfe_i32 v0, v18, 0, 16
4553; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4554; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4555; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
4556; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
4557; GCN-HSA-NEXT:    s_add_u32 s2, s0, s7
4558; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4559; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
4560; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
4561; GCN-HSA-NEXT:    s_add_u32 s2, s0, 64
4562; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4563; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s3
4564; GCN-HSA-NEXT:    s_waitcnt vmcnt(12)
4565; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v11, 16, v23
4566; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 16, v22
4567; GCN-HSA-NEXT:    v_bfe_i32 v10, v23, 0, 16
4568; GCN-HSA-NEXT:    v_bfe_i32 v8, v22, 0, 16
4569; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s2
4570; GCN-HSA-NEXT:    s_add_u32 s2, s0, s6
4571; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
4572; GCN-HSA-NEXT:    s_waitcnt vmcnt(11)
4573; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v15, 16, v33
4574; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v13, 16, v32
4575; GCN-HSA-NEXT:    v_bfe_i32 v14, v33, 0, 16
4576; GCN-HSA-NEXT:    v_bfe_i32 v12, v32, 0, 16
4577; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4578; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[12:15]
4579; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v11, 16, v35
4580; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
4581; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
4582; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
4583; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 16, v34
4584; GCN-HSA-NEXT:    v_bfe_i32 v10, v35, 0, 16
4585; GCN-HSA-NEXT:    v_bfe_i32 v8, v34, 0, 16
4586; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
4587; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 16, v21
4588; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v20
4589; GCN-HSA-NEXT:    v_bfe_i32 v2, v21, 0, 16
4590; GCN-HSA-NEXT:    v_bfe_i32 v0, v20, 0, 16
4591; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[8:11]
4592; GCN-HSA-NEXT:    s_add_u32 s0, s0, 48
4593; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
4594; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4595; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v7, 16, v29
4596; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v5, 16, v28
4597; GCN-HSA-NEXT:    v_bfe_i32 v6, v29, 0, 16
4598; GCN-HSA-NEXT:    v_bfe_i32 v4, v28, 0, 16
4599; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
4600; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
4601; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
4602; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 16, v31
4603; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
4604; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 16, v30
4605; GCN-HSA-NEXT:    v_bfe_i32 v2, v31, 0, 16
4606; GCN-HSA-NEXT:    v_bfe_i32 v0, v30, 0, 16
4607; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
4608; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
4609; GCN-HSA-NEXT:    s_endpgm
4610;
4611; GCN-NOHSA-VI-LABEL: global_sextload_v64i16_to_v64i32:
4612; GCN-NOHSA-VI:       ; %bb.0:
4613; GCN-NOHSA-VI-NEXT:    s_mov_b32 s88, SCRATCH_RSRC_DWORD0
4614; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
4615; GCN-NOHSA-VI-NEXT:    s_mov_b32 s89, SCRATCH_RSRC_DWORD1
4616; GCN-NOHSA-VI-NEXT:    s_mov_b32 s90, -1
4617; GCN-NOHSA-VI-NEXT:    s_mov_b32 s91, 0xe80000
4618; GCN-NOHSA-VI-NEXT:    s_add_u32 s88, s88, s3
4619; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
4620; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
4621; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
4622; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
4623; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
4624; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s6
4625; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s7
4626; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, s2
4627; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, s3
4628; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[8:11], off, s[4:7], 0 offset:112
4629; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:96
4630; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:80
4631; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:64
4632; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[24:27], off, s[4:7], 0
4633; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:16
4634; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[32:35], off, s[4:7], 0 offset:32
4635; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[36:39], off, s[4:7], 0 offset:48
4636; GCN-NOHSA-VI-NEXT:    s_addc_u32 s89, s89, 0
4637; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(6)
4638; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v63, 16, v13
4639; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(5)
4640; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v59, 16, v17
4641; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(4)
4642; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v55, 16, v21
4643; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(3)
4644; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 16, v27
4645; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 16, v26
4646; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v27, 0, 16
4647; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v26, 0, 16
4648; GCN-NOHSA-VI-NEXT:    buffer_store_dword v0, off, s[88:91], 0 offset:4 ; 4-byte Folded Spill
4649; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
4650; GCN-NOHSA-VI-NEXT:    buffer_store_dword v1, off, s[88:91], 0 offset:8 ; 4-byte Folded Spill
4651; GCN-NOHSA-VI-NEXT:    buffer_store_dword v2, off, s[88:91], 0 offset:12 ; 4-byte Folded Spill
4652; GCN-NOHSA-VI-NEXT:    buffer_store_dword v3, off, s[88:91], 0 offset:16 ; 4-byte Folded Spill
4653; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 16, v9
4654; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 16, v8
4655; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v9, 0, 16
4656; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v8, 0, 16
4657; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v7, 16, v25
4658; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v5, 16, v24
4659; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v6, v25, 0, 16
4660; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v4, v24, 0, 16
4661; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v27, 16, v31
4662; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v25, 16, v30
4663; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v26, v31, 0, 16
4664; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v24, v30, 0, 16
4665; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v43, 16, v29
4666; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v41, 16, v28
4667; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v42, v29, 0, 16
4668; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v40, v28, 0, 16
4669; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v31, 16, v35
4670; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v29, 16, v34
4671; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v30, v35, 0, 16
4672; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v28, v34, 0, 16
4673; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v47, 16, v33
4674; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v45, 16, v32
4675; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v46, v33, 0, 16
4676; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v44, v32, 0, 16
4677; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v35, 16, v39
4678; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v33, 16, v38
4679; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v34, v39, 0, 16
4680; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v32, v38, 0, 16
4681; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v51, 16, v37
4682; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v49, 16, v36
4683; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v50, v37, 0, 16
4684; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v48, v36, 0, 16
4685; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v39, 16, v23
4686; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v37, 16, v22
4687; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v38, v23, 0, 16
4688; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v36, v22, 0, 16
4689; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v53, 16, v20
4690; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v54, v21, 0, 16
4691; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v52, v20, 0, 16
4692; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v22, 16, v19
4693; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v20, 16, v18
4694; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v21, v19, 0, 16
4695; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v19, v18, 0, 16
4696; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v57, 16, v16
4697; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v58, v17, 0, 16
4698; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v56, v16, 0, 16
4699; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v18, 16, v15
4700; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v16, 16, v14
4701; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v17, v15, 0, 16
4702; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v15, v14, 0, 16
4703; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v61, 16, v12
4704; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v62, v13, 0, 16
4705; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v60, v12, 0, 16
4706; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v14, 16, v11
4707; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v12, 16, v10
4708; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v13, v11, 0, 16
4709; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v11, v10, 0, 16
4710; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:224
4711; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:240
4712; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[60:63], off, s[0:3], 0 offset:192
4713; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:208
4714; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[56:59], off, s[0:3], 0 offset:160
4715; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[19:22], off, s[0:3], 0 offset:176
4716; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[52:55], off, s[0:3], 0 offset:128
4717; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:144
4718; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:96
4719; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:112
4720; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[44:47], off, s[0:3], 0 offset:64
4721; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:80
4722; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[40:43], off, s[0:3], 0 offset:32
4723; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:48
4724; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
4725; GCN-NOHSA-VI-NEXT:    buffer_load_dword v0, off, s[88:91], 0 offset:4 ; 4-byte Folded Reload
4726; GCN-NOHSA-VI-NEXT:    buffer_load_dword v1, off, s[88:91], 0 offset:8 ; 4-byte Folded Reload
4727; GCN-NOHSA-VI-NEXT:    buffer_load_dword v2, off, s[88:91], 0 offset:12 ; 4-byte Folded Reload
4728; GCN-NOHSA-VI-NEXT:    buffer_load_dword v3, off, s[88:91], 0 offset:16 ; 4-byte Folded Reload
4729; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
4730; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
4731; GCN-NOHSA-VI-NEXT:    s_endpgm
4732;
4733; EG-LABEL: global_sextload_v64i16_to_v64i32:
4734; EG:       ; %bb.0:
4735; EG-NEXT:    ALU 18, @38, KC0[CB0:0-32], KC1[]
4736; EG-NEXT:    TEX 7 @22
4737; EG-NEXT:    ALU 75, @57, KC0[CB0:0-32], KC1[]
4738; EG-NEXT:    ALU 71, @133, KC0[CB0:0-32], KC1[]
4739; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T41.X, 0
4740; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T65.XYZW, T66.X, 0
4741; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T56.X, 0
4742; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T64.XYZW, T55.X, 0
4743; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T54.X, 0
4744; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T63.XYZW, T53.X, 0
4745; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T52.X, 0
4746; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T62.XYZW, T51.X, 0
4747; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T50.X, 0
4748; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T61.XYZW, T49.X, 0
4749; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T40.X, 0
4750; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T60.XYZW, T39.X, 0
4751; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T38.X, 0
4752; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T59.XYZW, T37.X, 0
4753; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T58.XYZW, T36.X, 0
4754; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T57.XYZW, T35.X, 1
4755; EG-NEXT:    CF_END
4756; EG-NEXT:    PAD
4757; EG-NEXT:    Fetch clause starting at 22:
4758; EG-NEXT:     VTX_READ_128 T42.XYZW, T41.X, 16, #1
4759; EG-NEXT:     VTX_READ_128 T43.XYZW, T41.X, 32, #1
4760; EG-NEXT:     VTX_READ_128 T44.XYZW, T41.X, 0, #1
4761; EG-NEXT:     VTX_READ_128 T45.XYZW, T41.X, 48, #1
4762; EG-NEXT:     VTX_READ_128 T46.XYZW, T41.X, 64, #1
4763; EG-NEXT:     VTX_READ_128 T47.XYZW, T41.X, 80, #1
4764; EG-NEXT:     VTX_READ_128 T48.XYZW, T41.X, 96, #1
4765; EG-NEXT:     VTX_READ_128 T41.XYZW, T41.X, 112, #1
4766; EG-NEXT:    ALU clause starting at 38:
4767; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
4768; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4769; EG-NEXT:     LSHR T35.X, PV.W, literal.x,
4770; EG-NEXT:     LSHR * T36.X, KC0[2].Y, literal.x,
4771; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4772; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
4773; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
4774; EG-NEXT:     LSHR T37.X, PV.W, literal.x,
4775; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4776; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
4777; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
4778; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4779; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
4780; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
4781; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4782; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
4783; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
4784; EG-NEXT:     MOV * T41.X, KC0[2].Z,
4785; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
4786; EG-NEXT:    ALU clause starting at 57:
4787; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
4788; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
4789; EG-NEXT:     LSHR T49.X, PV.W, literal.x,
4790; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4791; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
4792; EG-NEXT:     LSHR T50.X, PV.W, literal.x,
4793; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4794; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
4795; EG-NEXT:     LSHR T51.X, PV.W, literal.x,
4796; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4797; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
4798; EG-NEXT:     LSHR T52.X, PV.W, literal.x,
4799; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4800; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
4801; EG-NEXT:     LSHR T53.X, PV.W, literal.x,
4802; EG-NEXT:     LSHR T0.Y, T41.Y, literal.y,
4803; EG-NEXT:     LSHR T0.Z, T41.W, literal.y,
4804; EG-NEXT:     LSHR T0.W, T48.Y, literal.y, BS:VEC_120/SCL_212
4805; EG-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
4806; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4807; EG-NEXT:    160(2.242078e-43), 0(0.000000e+00)
4808; EG-NEXT:     LSHR T54.X, PS, literal.x,
4809; EG-NEXT:     LSHR T1.Y, T48.W, literal.y,
4810; EG-NEXT:     LSHR T1.Z, T47.Y, literal.y,
4811; EG-NEXT:     LSHR T1.W, T47.W, literal.y, BS:VEC_120/SCL_212
4812; EG-NEXT:     ADD_INT * T2.W, KC0[2].Y, literal.z,
4813; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4814; EG-NEXT:    208(2.914701e-43), 0(0.000000e+00)
4815; EG-NEXT:     LSHR T55.X, PS, literal.x,
4816; EG-NEXT:     LSHR T2.Y, T46.Y, literal.y,
4817; EG-NEXT:     LSHR T2.Z, T46.W, literal.y,
4818; EG-NEXT:     LSHR T2.W, T45.Y, literal.y, BS:VEC_120/SCL_212
4819; EG-NEXT:     ADD_INT * T3.W, KC0[2].Y, literal.z,
4820; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4821; EG-NEXT:    192(2.690493e-43), 0(0.000000e+00)
4822; EG-NEXT:     LSHR T56.X, PS, literal.x,
4823; EG-NEXT:     LSHR T3.Y, T45.W, literal.y,
4824; EG-NEXT:     BFE_INT T57.Z, T44.W, 0.0, literal.y, BS:VEC_120/SCL_212
4825; EG-NEXT:     LSHR T3.W, T43.Y, literal.y,
4826; EG-NEXT:     LSHR * T4.W, T43.W, literal.y,
4827; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4828; EG-NEXT:     BFE_INT T57.X, T44.Z, 0.0, literal.x,
4829; EG-NEXT:     LSHR T4.Y, T42.Y, literal.x,
4830; EG-NEXT:     BFE_INT T58.Z, T44.Y, 0.0, literal.x, BS:VEC_120/SCL_212
4831; EG-NEXT:     LSHR T5.W, T42.W, literal.x,
4832; EG-NEXT:     LSHR * T6.W, T44.W, literal.x,
4833; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4834; EG-NEXT:     BFE_INT T58.X, T44.X, 0.0, literal.x,
4835; EG-NEXT:     LSHR T5.Y, T44.Y, literal.x,
4836; EG-NEXT:     BFE_INT T59.Z, T42.W, 0.0, literal.x,
4837; EG-NEXT:     BFE_INT T57.W, PS, 0.0, literal.x,
4838; EG-NEXT:     LSHR * T6.W, T44.Z, literal.x,
4839; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4840; EG-NEXT:     BFE_INT T59.X, T42.Z, 0.0, literal.x,
4841; EG-NEXT:     BFE_INT T57.Y, PS, 0.0, literal.x,
4842; EG-NEXT:     BFE_INT T44.Z, T42.Y, 0.0, literal.x,
4843; EG-NEXT:     BFE_INT T58.W, PV.Y, 0.0, literal.x,
4844; EG-NEXT:     LSHR * T6.W, T44.X, literal.x,
4845; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4846; EG-NEXT:     BFE_INT T44.X, T42.X, 0.0, literal.x,
4847; EG-NEXT:     BFE_INT T58.Y, PS, 0.0, literal.x,
4848; EG-NEXT:     BFE_INT T60.Z, T43.W, 0.0, literal.x,
4849; EG-NEXT:     BFE_INT T59.W, T5.W, 0.0, literal.x, BS:VEC_120/SCL_212
4850; EG-NEXT:     LSHR * T5.W, T42.Z, literal.x,
4851; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4852; EG-NEXT:     BFE_INT T60.X, T43.Z, 0.0, literal.x,
4853; EG-NEXT:     BFE_INT T59.Y, PS, 0.0, literal.x,
4854; EG-NEXT:     BFE_INT T42.Z, T43.Y, 0.0, literal.x,
4855; EG-NEXT:     BFE_INT T44.W, T4.Y, 0.0, literal.x, BS:VEC_120/SCL_212
4856; EG-NEXT:     LSHR * T5.W, T42.X, literal.x,
4857; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4858; EG-NEXT:     BFE_INT T42.X, T43.X, 0.0, literal.x,
4859; EG-NEXT:     BFE_INT T44.Y, PS, 0.0, literal.x,
4860; EG-NEXT:     BFE_INT T61.Z, T45.W, 0.0, literal.x,
4861; EG-NEXT:     BFE_INT * T60.W, T4.W, 0.0, literal.x, BS:VEC_120/SCL_212
4862; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4863; EG-NEXT:    ALU clause starting at 133:
4864; EG-NEXT:     LSHR * T4.W, T43.Z, literal.x,
4865; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4866; EG-NEXT:     BFE_INT T61.X, T45.Z, 0.0, literal.x,
4867; EG-NEXT:     BFE_INT T60.Y, PV.W, 0.0, literal.x,
4868; EG-NEXT:     BFE_INT T43.Z, T45.Y, 0.0, literal.x,
4869; EG-NEXT:     BFE_INT T42.W, T3.W, 0.0, literal.x,
4870; EG-NEXT:     LSHR * T3.W, T43.X, literal.x,
4871; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4872; EG-NEXT:     BFE_INT T43.X, T45.X, 0.0, literal.x,
4873; EG-NEXT:     BFE_INT T42.Y, PS, 0.0, literal.x,
4874; EG-NEXT:     BFE_INT T62.Z, T46.W, 0.0, literal.x,
4875; EG-NEXT:     BFE_INT T61.W, T3.Y, 0.0, literal.x,
4876; EG-NEXT:     LSHR * T3.W, T45.Z, literal.x,
4877; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4878; EG-NEXT:     BFE_INT T62.X, T46.Z, 0.0, literal.x,
4879; EG-NEXT:     BFE_INT T61.Y, PS, 0.0, literal.x,
4880; EG-NEXT:     BFE_INT T45.Z, T46.Y, 0.0, literal.x,
4881; EG-NEXT:     BFE_INT T43.W, T2.W, 0.0, literal.x,
4882; EG-NEXT:     LSHR * T2.W, T45.X, literal.x,
4883; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4884; EG-NEXT:     BFE_INT T45.X, T46.X, 0.0, literal.x,
4885; EG-NEXT:     BFE_INT T43.Y, PS, 0.0, literal.x,
4886; EG-NEXT:     BFE_INT T63.Z, T47.W, 0.0, literal.x,
4887; EG-NEXT:     BFE_INT T62.W, T2.Z, 0.0, literal.x,
4888; EG-NEXT:     LSHR * T2.W, T46.Z, literal.x,
4889; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4890; EG-NEXT:     BFE_INT T63.X, T47.Z, 0.0, literal.x,
4891; EG-NEXT:     BFE_INT T62.Y, PS, 0.0, literal.x,
4892; EG-NEXT:     BFE_INT T46.Z, T47.Y, 0.0, literal.x,
4893; EG-NEXT:     BFE_INT T45.W, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212
4894; EG-NEXT:     LSHR * T2.W, T46.X, literal.x,
4895; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4896; EG-NEXT:     BFE_INT T46.X, T47.X, 0.0, literal.x,
4897; EG-NEXT:     BFE_INT T45.Y, PS, 0.0, literal.x,
4898; EG-NEXT:     BFE_INT T64.Z, T48.W, 0.0, literal.x,
4899; EG-NEXT:     BFE_INT T63.W, T1.W, 0.0, literal.x, BS:VEC_120/SCL_212
4900; EG-NEXT:     LSHR * T1.W, T47.Z, literal.x,
4901; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4902; EG-NEXT:     BFE_INT T64.X, T48.Z, 0.0, literal.x,
4903; EG-NEXT:     BFE_INT T63.Y, PS, 0.0, literal.x,
4904; EG-NEXT:     BFE_INT T47.Z, T48.Y, 0.0, literal.x,
4905; EG-NEXT:     BFE_INT T46.W, T1.Z, 0.0, literal.x, BS:VEC_120/SCL_212
4906; EG-NEXT:     LSHR * T1.W, T47.X, literal.x,
4907; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4908; EG-NEXT:     BFE_INT T47.X, T48.X, 0.0, literal.x,
4909; EG-NEXT:     BFE_INT T46.Y, PS, 0.0, literal.x,
4910; EG-NEXT:     BFE_INT T65.Z, T41.W, 0.0, literal.x,
4911; EG-NEXT:     BFE_INT T64.W, T1.Y, 0.0, literal.x,
4912; EG-NEXT:     LSHR * T1.W, T48.Z, literal.x,
4913; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4914; EG-NEXT:     BFE_INT T65.X, T41.Z, 0.0, literal.x,
4915; EG-NEXT:     BFE_INT T64.Y, PS, 0.0, literal.x,
4916; EG-NEXT:     BFE_INT T48.Z, T41.Y, 0.0, literal.x,
4917; EG-NEXT:     BFE_INT T47.W, T0.W, 0.0, literal.x,
4918; EG-NEXT:     LSHR * T0.W, T48.X, literal.x,
4919; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
4920; EG-NEXT:     BFE_INT T48.X, T41.X, 0.0, literal.x,
4921; EG-NEXT:     BFE_INT T47.Y, PS, 0.0, literal.x,
4922; EG-NEXT:     LSHR T1.Z, T41.Z, literal.x,
4923; EG-NEXT:     BFE_INT T65.W, T0.Z, 0.0, literal.x, BS:VEC_120/SCL_212
4924; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4925; EG-NEXT:    16(2.242078e-44), 240(3.363116e-43)
4926; EG-NEXT:     LSHR T66.X, PS, literal.x,
4927; EG-NEXT:     BFE_INT T65.Y, PV.Z, 0.0, literal.y,
4928; EG-NEXT:     LSHR T0.Z, T41.X, literal.y,
4929; EG-NEXT:     BFE_INT T48.W, T0.Y, 0.0, literal.y,
4930; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
4931; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4932; EG-NEXT:    224(3.138909e-43), 0(0.000000e+00)
4933; EG-NEXT:     LSHR T41.X, PS, literal.x,
4934; EG-NEXT:     BFE_INT * T48.Y, PV.Z, 0.0, literal.y,
4935; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4936;
4937; CM-LABEL: global_sextload_v64i16_to_v64i32:
4938; CM:       ; %bb.0:
4939; CM-NEXT:    ALU 0, @40, KC0[CB0:0-32], KC1[]
4940; CM-NEXT:    TEX 1 @24
4941; CM-NEXT:    ALU 15, @41, KC0[CB0:0-32], KC1[]
4942; CM-NEXT:    TEX 5 @28
4943; CM-NEXT:    ALU 82, @57, KC0[CB0:0-32], KC1[]
4944; CM-NEXT:    ALU 72, @140, KC0[CB0:0-32], KC1[]
4945; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T65, T66.X
4946; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T35, T36.X
4947; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T64, T56.X
4948; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T37, T55.X
4949; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T63, T54.X
4950; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T45, T53.X
4951; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T62, T52.X
4952; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T44, T51.X
4953; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T61, T50.X
4954; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T43, T49.X
4955; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T60, T48.X
4956; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T42, T47.X
4957; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T59, T46.X
4958; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T41, T40.X
4959; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T58, T39.X
4960; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T57, T38.X
4961; CM-NEXT:    CF_END
4962; CM-NEXT:    PAD
4963; CM-NEXT:    Fetch clause starting at 24:
4964; CM-NEXT:     VTX_READ_128 T35.XYZW, T37.X, 16, #1
4965; CM-NEXT:     VTX_READ_128 T36.XYZW, T37.X, 0, #1
4966; CM-NEXT:    Fetch clause starting at 28:
4967; CM-NEXT:     VTX_READ_128 T41.XYZW, T37.X, 112, #1
4968; CM-NEXT:     VTX_READ_128 T42.XYZW, T37.X, 96, #1
4969; CM-NEXT:     VTX_READ_128 T43.XYZW, T37.X, 80, #1
4970; CM-NEXT:     VTX_READ_128 T44.XYZW, T37.X, 64, #1
4971; CM-NEXT:     VTX_READ_128 T45.XYZW, T37.X, 48, #1
4972; CM-NEXT:     VTX_READ_128 T37.XYZW, T37.X, 32, #1
4973; CM-NEXT:    ALU clause starting at 40:
4974; CM-NEXT:     MOV * T37.X, KC0[2].Z,
4975; CM-NEXT:    ALU clause starting at 41:
4976; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
4977; CM-NEXT:    224(3.138909e-43), 0(0.000000e+00)
4978; CM-NEXT:     LSHR T38.X, PV.W, literal.x,
4979; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
4980; CM-NEXT:    2(2.802597e-45), 240(3.363116e-43)
4981; CM-NEXT:     LSHR T39.X, PV.W, literal.x,
4982; CM-NEXT:     LSHR T0.Y, T36.Z, literal.y,
4983; CM-NEXT:     LSHR T0.Z, T36.W, literal.y,
4984; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
4985; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4986; CM-NEXT:    192(2.690493e-43), 0(0.000000e+00)
4987; CM-NEXT:     LSHR T40.X, PV.W, literal.x,
4988; CM-NEXT:     LSHR T1.Y, T36.Y, literal.y,
4989; CM-NEXT:     LSHR T1.Z, T35.Z, literal.y,
4990; CM-NEXT:     LSHR * T0.W, T35.W, literal.y,
4991; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
4992; CM-NEXT:    ALU clause starting at 57:
4993; CM-NEXT:     LSHR T2.Z, T35.X, literal.x,
4994; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.y,
4995; CM-NEXT:    16(2.242078e-44), 208(2.914701e-43)
4996; CM-NEXT:     LSHR T46.X, PV.W, literal.x,
4997; CM-NEXT:     LSHR T2.Y, T35.Y, literal.y,
4998; CM-NEXT:     LSHR T3.Z, T37.Z, literal.y,
4999; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5000; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5001; CM-NEXT:    160(2.242078e-43), 0(0.000000e+00)
5002; CM-NEXT:     LSHR T47.X, PV.W, literal.x,
5003; CM-NEXT:     LSHR T3.Y, T37.W, literal.y,
5004; CM-NEXT:     LSHR T4.Z, T37.X, literal.y,
5005; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5006; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5007; CM-NEXT:    176(2.466285e-43), 0(0.000000e+00)
5008; CM-NEXT:     LSHR T48.X, PV.W, literal.x,
5009; CM-NEXT:     LSHR T4.Y, T37.Y, literal.y,
5010; CM-NEXT:     LSHR T5.Z, T45.Z, literal.y,
5011; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5012; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5013; CM-NEXT:    128(1.793662e-43), 0(0.000000e+00)
5014; CM-NEXT:     LSHR T49.X, PV.W, literal.x,
5015; CM-NEXT:     LSHR T5.Y, T45.W, literal.y,
5016; CM-NEXT:     LSHR T6.Z, T45.X, literal.y,
5017; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5018; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5019; CM-NEXT:    144(2.017870e-43), 0(0.000000e+00)
5020; CM-NEXT:     LSHR T50.X, PV.W, literal.x,
5021; CM-NEXT:     LSHR T6.Y, T45.Y, literal.y,
5022; CM-NEXT:     LSHR T7.Z, T44.Z, literal.y,
5023; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5024; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5025; CM-NEXT:    96(1.345247e-43), 0(0.000000e+00)
5026; CM-NEXT:     LSHR T51.X, PV.W, literal.x,
5027; CM-NEXT:     LSHR T7.Y, T44.W, literal.y,
5028; CM-NEXT:     LSHR T8.Z, T44.X, literal.y,
5029; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5030; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5031; CM-NEXT:    112(1.569454e-43), 0(0.000000e+00)
5032; CM-NEXT:     LSHR T52.X, PV.W, literal.x,
5033; CM-NEXT:     LSHR T8.Y, T44.Y, literal.y,
5034; CM-NEXT:     LSHR T9.Z, T43.Z, literal.y,
5035; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5036; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5037; CM-NEXT:    64(8.968310e-44), 0(0.000000e+00)
5038; CM-NEXT:     LSHR T53.X, PV.W, literal.x,
5039; CM-NEXT:     LSHR T9.Y, T43.W, literal.y,
5040; CM-NEXT:     LSHR T10.Z, T43.X, literal.y,
5041; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5042; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5043; CM-NEXT:    80(1.121039e-43), 0(0.000000e+00)
5044; CM-NEXT:     LSHR T54.X, PV.W, literal.x,
5045; CM-NEXT:     LSHR T10.Y, T43.Y, literal.y,
5046; CM-NEXT:     LSHR T11.Z, T42.Z, literal.y,
5047; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5048; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5049; CM-NEXT:    32(4.484155e-44), 0(0.000000e+00)
5050; CM-NEXT:     LSHR T55.X, PV.W, literal.x,
5051; CM-NEXT:     LSHR T11.Y, T42.W, literal.y,
5052; CM-NEXT:     LSHR T12.Z, T42.X, literal.y,
5053; CM-NEXT:     ADD_INT * T1.W, KC0[2].Y, literal.z,
5054; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5055; CM-NEXT:    48(6.726233e-44), 0(0.000000e+00)
5056; CM-NEXT:     LSHR T56.X, PV.W, literal.x,
5057; CM-NEXT:     LSHR T12.Y, T42.Y, literal.y,
5058; CM-NEXT:     BFE_INT T57.Z, T41.Y, 0.0, literal.y, BS:VEC_120/SCL_212
5059; CM-NEXT:     LSHR * T1.W, T41.Z, literal.y,
5060; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5061; CM-NEXT:     BFE_INT T57.X, T41.X, 0.0, literal.x,
5062; CM-NEXT:     LSHR T13.Y, T41.W, literal.x,
5063; CM-NEXT:     BFE_INT T58.Z, T41.W, 0.0, literal.x,
5064; CM-NEXT:     LSHR * T2.W, T41.Y, literal.x,
5065; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5066; CM-NEXT:     BFE_INT T58.X, T41.Z, 0.0, literal.x,
5067; CM-NEXT:     LSHR T14.Y, T41.X, literal.x,
5068; CM-NEXT:     BFE_INT T41.Z, T42.Y, 0.0, literal.x,
5069; CM-NEXT:     BFE_INT * T57.W, PV.W, 0.0, literal.x,
5070; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5071; CM-NEXT:     BFE_INT T41.X, T42.X, 0.0, literal.x,
5072; CM-NEXT:     BFE_INT T57.Y, PV.Y, 0.0, literal.x,
5073; CM-NEXT:     BFE_INT T59.Z, T42.W, 0.0, literal.x,
5074; CM-NEXT:     BFE_INT * T58.W, T13.Y, 0.0, literal.x,
5075; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5076; CM-NEXT:    ALU clause starting at 140:
5077; CM-NEXT:     BFE_INT T59.X, T42.Z, 0.0, literal.x,
5078; CM-NEXT:     BFE_INT T58.Y, T1.W, 0.0, literal.x,
5079; CM-NEXT:     BFE_INT T42.Z, T43.Y, 0.0, literal.x,
5080; CM-NEXT:     BFE_INT * T41.W, T12.Y, 0.0, literal.x, BS:VEC_120/SCL_212
5081; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5082; CM-NEXT:     BFE_INT T42.X, T43.X, 0.0, literal.x,
5083; CM-NEXT:     BFE_INT T41.Y, T12.Z, 0.0, literal.x,
5084; CM-NEXT:     BFE_INT T60.Z, T43.W, 0.0, literal.x,
5085; CM-NEXT:     BFE_INT * T59.W, T11.Y, 0.0, literal.x,
5086; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5087; CM-NEXT:     BFE_INT T60.X, T43.Z, 0.0, literal.x,
5088; CM-NEXT:     BFE_INT T59.Y, T11.Z, 0.0, literal.x, BS:VEC_120/SCL_212
5089; CM-NEXT:     BFE_INT T43.Z, T44.Y, 0.0, literal.x,
5090; CM-NEXT:     BFE_INT * T42.W, T10.Y, 0.0, literal.x, BS:VEC_120/SCL_212
5091; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5092; CM-NEXT:     BFE_INT T43.X, T44.X, 0.0, literal.x,
5093; CM-NEXT:     BFE_INT T42.Y, T10.Z, 0.0, literal.x,
5094; CM-NEXT:     BFE_INT T61.Z, T44.W, 0.0, literal.x,
5095; CM-NEXT:     BFE_INT * T60.W, T9.Y, 0.0, literal.x,
5096; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5097; CM-NEXT:     BFE_INT T61.X, T44.Z, 0.0, literal.x,
5098; CM-NEXT:     BFE_INT T60.Y, T9.Z, 0.0, literal.x, BS:VEC_120/SCL_212
5099; CM-NEXT:     BFE_INT T44.Z, T45.Y, 0.0, literal.x,
5100; CM-NEXT:     BFE_INT * T43.W, T8.Y, 0.0, literal.x, BS:VEC_120/SCL_212
5101; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5102; CM-NEXT:     BFE_INT T44.X, T45.X, 0.0, literal.x,
5103; CM-NEXT:     BFE_INT T43.Y, T8.Z, 0.0, literal.x,
5104; CM-NEXT:     BFE_INT T62.Z, T45.W, 0.0, literal.x,
5105; CM-NEXT:     BFE_INT * T61.W, T7.Y, 0.0, literal.x,
5106; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5107; CM-NEXT:     BFE_INT T62.X, T45.Z, 0.0, literal.x,
5108; CM-NEXT:     BFE_INT T61.Y, T7.Z, 0.0, literal.x, BS:VEC_120/SCL_212
5109; CM-NEXT:     BFE_INT T45.Z, T37.Y, 0.0, literal.x,
5110; CM-NEXT:     BFE_INT * T44.W, T6.Y, 0.0, literal.x, BS:VEC_120/SCL_212
5111; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5112; CM-NEXT:     BFE_INT T45.X, T37.X, 0.0, literal.x,
5113; CM-NEXT:     BFE_INT T44.Y, T6.Z, 0.0, literal.x,
5114; CM-NEXT:     BFE_INT T63.Z, T37.W, 0.0, literal.x,
5115; CM-NEXT:     BFE_INT * T62.W, T5.Y, 0.0, literal.x,
5116; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5117; CM-NEXT:     BFE_INT T63.X, T37.Z, 0.0, literal.x,
5118; CM-NEXT:     BFE_INT T62.Y, T5.Z, 0.0, literal.x, BS:VEC_120/SCL_212
5119; CM-NEXT:     BFE_INT T37.Z, T35.Y, 0.0, literal.x,
5120; CM-NEXT:     BFE_INT * T45.W, T4.Y, 0.0, literal.x, BS:VEC_120/SCL_212
5121; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5122; CM-NEXT:     BFE_INT T37.X, T35.X, 0.0, literal.x,
5123; CM-NEXT:     BFE_INT T45.Y, T4.Z, 0.0, literal.x,
5124; CM-NEXT:     BFE_INT T64.Z, T35.W, 0.0, literal.x,
5125; CM-NEXT:     BFE_INT * T63.W, T3.Y, 0.0, literal.x,
5126; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5127; CM-NEXT:     BFE_INT T64.X, T35.Z, 0.0, literal.x,
5128; CM-NEXT:     BFE_INT T63.Y, T3.Z, 0.0, literal.x, BS:VEC_120/SCL_212
5129; CM-NEXT:     BFE_INT T35.Z, T36.Y, 0.0, literal.x,
5130; CM-NEXT:     BFE_INT * T37.W, T2.Y, 0.0, literal.x, BS:VEC_120/SCL_212
5131; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5132; CM-NEXT:     BFE_INT T35.X, T36.X, 0.0, literal.x,
5133; CM-NEXT:     BFE_INT T37.Y, T2.Z, 0.0, literal.x,
5134; CM-NEXT:     BFE_INT T65.Z, T36.W, 0.0, literal.x,
5135; CM-NEXT:     BFE_INT * T64.W, T0.W, 0.0, literal.x, BS:VEC_120/SCL_212
5136; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5137; CM-NEXT:     BFE_INT T65.X, T36.Z, 0.0, literal.x,
5138; CM-NEXT:     BFE_INT T64.Y, T1.Z, 0.0, literal.x, BS:VEC_120/SCL_212
5139; CM-NEXT:     LSHR T1.Z, T36.X, literal.x,
5140; CM-NEXT:     BFE_INT * T35.W, T1.Y, 0.0, literal.x,
5141; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5142; CM-NEXT:     LSHR T36.X, KC0[2].Y, literal.x,
5143; CM-NEXT:     BFE_INT T35.Y, PV.Z, 0.0, literal.y,
5144; CM-NEXT:     ADD_INT T1.Z, KC0[2].Y, literal.y,
5145; CM-NEXT:     BFE_INT * T65.W, T0.Z, 0.0, literal.y,
5146; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5147; CM-NEXT:     LSHR T66.X, PV.Z, literal.x,
5148; CM-NEXT:     BFE_INT * T65.Y, T0.Y, 0.0, literal.y,
5149; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5150  %load = load <64 x i16>, <64 x i16> addrspace(1)* %in
5151  %ext = sext <64 x i16> %load to <64 x i32>
5152  store <64 x i32> %ext, <64 x i32> addrspace(1)* %out
5153  ret void
5154}
5155
5156define amdgpu_kernel void @global_zextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(1)* %in) #0 {
5157; GCN-NOHSA-SI-LABEL: global_zextload_i16_to_i64:
5158; GCN-NOHSA-SI:       ; %bb.0:
5159; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5160; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
5161; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
5162; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
5163; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
5164; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5165; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
5166; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
5167; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
5168; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
5169; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
5170; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
5171; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
5172; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5173; GCN-NOHSA-SI-NEXT:    s_endpgm
5174;
5175; GCN-HSA-LABEL: global_zextload_i16_to_i64:
5176; GCN-HSA:       ; %bb.0:
5177; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5178; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5179; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5180; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5181; GCN-HSA-NEXT:    flat_load_ushort v0, v[0:1]
5182; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
5183; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
5184; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
5185; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
5186; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
5187; GCN-HSA-NEXT:    s_endpgm
5188;
5189; GCN-NOHSA-VI-LABEL: global_zextload_i16_to_i64:
5190; GCN-NOHSA-VI:       ; %bb.0:
5191; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5192; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
5193; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
5194; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
5195; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
5196; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5197; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
5198; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
5199; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
5200; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
5201; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
5202; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
5203; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
5204; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
5205; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5206; GCN-NOHSA-VI-NEXT:    s_endpgm
5207;
5208; EG-LABEL: global_zextload_i16_to_i64:
5209; EG:       ; %bb.0:
5210; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5211; EG-NEXT:    TEX 0 @6
5212; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
5213; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
5214; EG-NEXT:    CF_END
5215; EG-NEXT:    PAD
5216; EG-NEXT:    Fetch clause starting at 6:
5217; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
5218; EG-NEXT:    ALU clause starting at 8:
5219; EG-NEXT:     MOV * T0.X, KC0[2].Z,
5220; EG-NEXT:    ALU clause starting at 9:
5221; EG-NEXT:     MOV * T0.Y, 0.0,
5222; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
5223; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5224;
5225; CM-LABEL: global_zextload_i16_to_i64:
5226; CM:       ; %bb.0:
5227; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5228; CM-NEXT:    TEX 0 @6
5229; CM-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
5230; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0, T1.X
5231; CM-NEXT:    CF_END
5232; CM-NEXT:    PAD
5233; CM-NEXT:    Fetch clause starting at 6:
5234; CM-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
5235; CM-NEXT:    ALU clause starting at 8:
5236; CM-NEXT:     MOV * T0.X, KC0[2].Z,
5237; CM-NEXT:    ALU clause starting at 9:
5238; CM-NEXT:     MOV * T0.Y, 0.0,
5239; CM-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
5240; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5241  %a = load i16, i16 addrspace(1)* %in
5242  %ext = zext i16 %a to i64
5243  store i64 %ext, i64 addrspace(1)* %out
5244  ret void
5245}
5246
5247; FIXME: Need to optimize this sequence to avoid extra bfe:
5248;  t28: i32,ch = load<LD2[%in(addrspace=1)], anyext from i16> t12, t27, undef:i64
5249;          t31: i64 = any_extend t28
5250;        t33: i64 = sign_extend_inreg t31, ValueType:ch:i16
5251
5252; TODO: These could be expanded earlier using ASHR 15
5253define amdgpu_kernel void @global_sextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(1)* %in) #0 {
5254; GCN-NOHSA-SI-LABEL: global_sextload_i16_to_i64:
5255; GCN-NOHSA-SI:       ; %bb.0:
5256; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5257; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
5258; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
5259; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
5260; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
5261; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5262; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
5263; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
5264; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
5265; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
5266; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
5267; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
5268; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5269; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5270; GCN-NOHSA-SI-NEXT:    s_endpgm
5271;
5272; GCN-HSA-LABEL: global_sextload_i16_to_i64:
5273; GCN-HSA:       ; %bb.0:
5274; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5275; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5276; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5277; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5278; GCN-HSA-NEXT:    flat_load_sshort v0, v[0:1]
5279; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
5280; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
5281; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
5282; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5283; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
5284; GCN-HSA-NEXT:    s_endpgm
5285;
5286; GCN-NOHSA-VI-LABEL: global_sextload_i16_to_i64:
5287; GCN-NOHSA-VI:       ; %bb.0:
5288; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5289; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
5290; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
5291; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
5292; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
5293; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5294; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
5295; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
5296; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
5297; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
5298; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
5299; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
5300; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v0, 0, 16
5301; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5302; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5303; GCN-NOHSA-VI-NEXT:    s_endpgm
5304;
5305; EG-LABEL: global_sextload_i16_to_i64:
5306; EG:       ; %bb.0:
5307; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5308; EG-NEXT:    TEX 0 @6
5309; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
5310; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
5311; EG-NEXT:    CF_END
5312; EG-NEXT:    PAD
5313; EG-NEXT:    Fetch clause starting at 6:
5314; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
5315; EG-NEXT:    ALU clause starting at 8:
5316; EG-NEXT:     MOV * T0.X, KC0[2].Z,
5317; EG-NEXT:    ALU clause starting at 9:
5318; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
5319; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
5320; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
5321; EG-NEXT:     ASHR * T0.Y, PV.X, literal.x,
5322; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5323;
5324; CM-LABEL: global_sextload_i16_to_i64:
5325; CM:       ; %bb.0:
5326; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5327; CM-NEXT:    TEX 0 @6
5328; CM-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
5329; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0, T1.X
5330; CM-NEXT:    CF_END
5331; CM-NEXT:    PAD
5332; CM-NEXT:    Fetch clause starting at 6:
5333; CM-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
5334; CM-NEXT:    ALU clause starting at 8:
5335; CM-NEXT:     MOV * T0.X, KC0[2].Z,
5336; CM-NEXT:    ALU clause starting at 9:
5337; CM-NEXT:     BFE_INT * T0.X, T0.X, 0.0, literal.x,
5338; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5339; CM-NEXT:     LSHR T1.X, KC0[2].Y, literal.x,
5340; CM-NEXT:     ASHR * T0.Y, PV.X, literal.y,
5341; CM-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5342  %a = load i16, i16 addrspace(1)* %in
5343  %ext = sext i16 %a to i64
5344  store i64 %ext, i64 addrspace(1)* %out
5345  ret void
5346}
5347
5348define amdgpu_kernel void @global_zextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(1)* %in) #0 {
5349; GCN-NOHSA-SI-LABEL: global_zextload_v1i16_to_v1i64:
5350; GCN-NOHSA-SI:       ; %bb.0:
5351; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5352; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
5353; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
5354; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
5355; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
5356; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5357; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
5358; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
5359; GCN-NOHSA-SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
5360; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
5361; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
5362; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
5363; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
5364; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5365; GCN-NOHSA-SI-NEXT:    s_endpgm
5366;
5367; GCN-HSA-LABEL: global_zextload_v1i16_to_v1i64:
5368; GCN-HSA:       ; %bb.0:
5369; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5370; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5371; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5372; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5373; GCN-HSA-NEXT:    flat_load_ushort v0, v[0:1]
5374; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
5375; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
5376; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
5377; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
5378; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
5379; GCN-HSA-NEXT:    s_endpgm
5380;
5381; GCN-NOHSA-VI-LABEL: global_zextload_v1i16_to_v1i64:
5382; GCN-NOHSA-VI:       ; %bb.0:
5383; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5384; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
5385; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
5386; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
5387; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
5388; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5389; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
5390; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
5391; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
5392; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
5393; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
5394; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
5395; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
5396; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
5397; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5398; GCN-NOHSA-VI-NEXT:    s_endpgm
5399;
5400; EG-LABEL: global_zextload_v1i16_to_v1i64:
5401; EG:       ; %bb.0:
5402; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5403; EG-NEXT:    TEX 0 @6
5404; EG-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
5405; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
5406; EG-NEXT:    CF_END
5407; EG-NEXT:    PAD
5408; EG-NEXT:    Fetch clause starting at 6:
5409; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
5410; EG-NEXT:    ALU clause starting at 8:
5411; EG-NEXT:     MOV * T0.X, KC0[2].Z,
5412; EG-NEXT:    ALU clause starting at 9:
5413; EG-NEXT:     MOV * T0.Y, 0.0,
5414; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
5415; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5416;
5417; CM-LABEL: global_zextload_v1i16_to_v1i64:
5418; CM:       ; %bb.0:
5419; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5420; CM-NEXT:    TEX 0 @6
5421; CM-NEXT:    ALU 2, @9, KC0[CB0:0-32], KC1[]
5422; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0, T1.X
5423; CM-NEXT:    CF_END
5424; CM-NEXT:    PAD
5425; CM-NEXT:    Fetch clause starting at 6:
5426; CM-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
5427; CM-NEXT:    ALU clause starting at 8:
5428; CM-NEXT:     MOV * T0.X, KC0[2].Z,
5429; CM-NEXT:    ALU clause starting at 9:
5430; CM-NEXT:     MOV * T0.Y, 0.0,
5431; CM-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
5432; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5433  %load = load <1 x i16>, <1 x i16> addrspace(1)* %in
5434  %ext = zext <1 x i16> %load to <1 x i64>
5435  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
5436  ret void
5437}
5438
5439; TODO: These could be expanded earlier using ASHR 15
5440define amdgpu_kernel void @global_sextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(1)* %in) #0 {
5441; GCN-NOHSA-SI-LABEL: global_sextload_v1i16_to_v1i64:
5442; GCN-NOHSA-SI:       ; %bb.0:
5443; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5444; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
5445; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
5446; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
5447; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
5448; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5449; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
5450; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
5451; GCN-NOHSA-SI-NEXT:    buffer_load_sshort v0, off, s[8:11], 0
5452; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
5453; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
5454; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
5455; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5456; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5457; GCN-NOHSA-SI-NEXT:    s_endpgm
5458;
5459; GCN-HSA-LABEL: global_sextload_v1i16_to_v1i64:
5460; GCN-HSA:       ; %bb.0:
5461; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5462; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5463; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5464; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5465; GCN-HSA-NEXT:    flat_load_sshort v0, v[0:1]
5466; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s0
5467; GCN-HSA-NEXT:    v_mov_b32_e32 v3, s1
5468; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
5469; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5470; GCN-HSA-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
5471; GCN-HSA-NEXT:    s_endpgm
5472;
5473; GCN-NOHSA-VI-LABEL: global_sextload_v1i16_to_v1i64:
5474; GCN-NOHSA-VI:       ; %bb.0:
5475; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5476; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
5477; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
5478; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
5479; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
5480; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5481; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
5482; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
5483; GCN-NOHSA-VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0
5484; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
5485; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
5486; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
5487; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v0, 0, 16
5488; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5489; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0
5490; GCN-NOHSA-VI-NEXT:    s_endpgm
5491;
5492; EG-LABEL: global_sextload_v1i16_to_v1i64:
5493; EG:       ; %bb.0:
5494; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5495; EG-NEXT:    TEX 0 @6
5496; EG-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
5497; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
5498; EG-NEXT:    CF_END
5499; EG-NEXT:    PAD
5500; EG-NEXT:    Fetch clause starting at 6:
5501; EG-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
5502; EG-NEXT:    ALU clause starting at 8:
5503; EG-NEXT:     MOV * T0.X, KC0[2].Z,
5504; EG-NEXT:    ALU clause starting at 9:
5505; EG-NEXT:     BFE_INT T0.X, T0.X, 0.0, literal.x,
5506; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.y,
5507; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
5508; EG-NEXT:     ASHR * T0.Y, PV.X, literal.x,
5509; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5510;
5511; CM-LABEL: global_sextload_v1i16_to_v1i64:
5512; CM:       ; %bb.0:
5513; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5514; CM-NEXT:    TEX 0 @6
5515; CM-NEXT:    ALU 4, @9, KC0[CB0:0-32], KC1[]
5516; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T0, T1.X
5517; CM-NEXT:    CF_END
5518; CM-NEXT:    PAD
5519; CM-NEXT:    Fetch clause starting at 6:
5520; CM-NEXT:     VTX_READ_16 T0.X, T0.X, 0, #1
5521; CM-NEXT:    ALU clause starting at 8:
5522; CM-NEXT:     MOV * T0.X, KC0[2].Z,
5523; CM-NEXT:    ALU clause starting at 9:
5524; CM-NEXT:     BFE_INT * T0.X, T0.X, 0.0, literal.x,
5525; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5526; CM-NEXT:     LSHR T1.X, KC0[2].Y, literal.x,
5527; CM-NEXT:     ASHR * T0.Y, PV.X, literal.y,
5528; CM-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5529  %load = load <1 x i16>, <1 x i16> addrspace(1)* %in
5530  %ext = sext <1 x i16> %load to <1 x i64>
5531  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
5532  ret void
5533}
5534
5535define amdgpu_kernel void @global_zextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) #0 {
5536; GCN-NOHSA-SI-LABEL: global_zextload_v2i16_to_v2i64:
5537; GCN-NOHSA-SI:       ; %bb.0:
5538; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5539; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
5540; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
5541; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
5542; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
5543; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5544; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
5545; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
5546; GCN-NOHSA-SI-NEXT:    buffer_load_dword v0, off, s[8:11], 0
5547; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
5548; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
5549; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
5550; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
5551; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
5552; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
5553; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
5554; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
5555; GCN-NOHSA-SI-NEXT:    s_endpgm
5556;
5557; GCN-HSA-LABEL: global_zextload_v2i16_to_v2i64:
5558; GCN-HSA:       ; %bb.0:
5559; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5560; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5561; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5562; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5563; GCN-HSA-NEXT:    flat_load_dword v0, v[0:1]
5564; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
5565; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5566; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5567; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
5568; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
5569; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
5570; GCN-HSA-NEXT:    v_and_b32_e32 v0, 0xffff, v0
5571; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5572; GCN-HSA-NEXT:    s_endpgm
5573;
5574; GCN-NOHSA-VI-LABEL: global_zextload_v2i16_to_v2i64:
5575; GCN-NOHSA-VI:       ; %bb.0:
5576; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5577; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
5578; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
5579; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
5580; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
5581; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5582; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
5583; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
5584; GCN-NOHSA-VI-NEXT:    buffer_load_dword v0, off, s[8:11], 0
5585; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, 0
5586; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
5587; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
5588; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, v1
5589; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
5590; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
5591; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
5592; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
5593; GCN-NOHSA-VI-NEXT:    s_endpgm
5594;
5595; EG-LABEL: global_zextload_v2i16_to_v2i64:
5596; EG:       ; %bb.0:
5597; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5598; EG-NEXT:    TEX 0 @6
5599; EG-NEXT:    ALU 6, @9, KC0[CB0:0-32], KC1[]
5600; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
5601; EG-NEXT:    CF_END
5602; EG-NEXT:    PAD
5603; EG-NEXT:    Fetch clause starting at 6:
5604; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
5605; EG-NEXT:    ALU clause starting at 8:
5606; EG-NEXT:     MOV * T4.X, KC0[2].Z,
5607; EG-NEXT:    ALU clause starting at 9:
5608; EG-NEXT:     LSHR * T4.Z, T4.X, literal.x,
5609; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5610; EG-NEXT:     AND_INT T4.X, T4.X, literal.x,
5611; EG-NEXT:     MOV T4.Y, 0.0,
5612; EG-NEXT:     MOV T4.W, 0.0,
5613; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
5614; EG-NEXT:    65535(9.183409e-41), 2(2.802597e-45)
5615;
5616; CM-LABEL: global_zextload_v2i16_to_v2i64:
5617; CM:       ; %bb.0:
5618; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5619; CM-NEXT:    TEX 0 @6
5620; CM-NEXT:    ALU 7, @9, KC0[CB0:0-32], KC1[]
5621; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T4, T5.X
5622; CM-NEXT:    CF_END
5623; CM-NEXT:    PAD
5624; CM-NEXT:    Fetch clause starting at 6:
5625; CM-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
5626; CM-NEXT:    ALU clause starting at 8:
5627; CM-NEXT:     MOV * T4.X, KC0[2].Z,
5628; CM-NEXT:    ALU clause starting at 9:
5629; CM-NEXT:     LSHR * T4.Z, T4.X, literal.x,
5630; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5631; CM-NEXT:     AND_INT T4.X, T4.X, literal.x,
5632; CM-NEXT:     MOV T4.Y, 0.0,
5633; CM-NEXT:     MOV * T4.W, 0.0,
5634; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
5635; CM-NEXT:     LSHR * T5.X, KC0[2].Y, literal.x,
5636; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5637  %load = load <2 x i16>, <2 x i16> addrspace(1)* %in
5638  %ext = zext <2 x i16> %load to <2 x i64>
5639  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
5640  ret void
5641}
5642
5643define amdgpu_kernel void @global_sextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(1)* %in) #0 {
5644; GCN-NOHSA-SI-LABEL: global_sextload_v2i16_to_v2i64:
5645; GCN-NOHSA-SI:       ; %bb.0:
5646; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5647; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
5648; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
5649; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
5650; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
5651; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5652; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
5653; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
5654; GCN-NOHSA-SI-NEXT:    buffer_load_dword v0, off, s[8:11], 0
5655; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
5656; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
5657; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
5658; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
5659; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v0, 0, 16
5660; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5661; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v2, v2, 0, 16
5662; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5663; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
5664; GCN-NOHSA-SI-NEXT:    s_endpgm
5665;
5666; GCN-HSA-LABEL: global_sextload_v2i16_to_v2i64:
5667; GCN-HSA:       ; %bb.0:
5668; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5669; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5670; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5671; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5672; GCN-HSA-NEXT:    flat_load_dword v0, v[0:1]
5673; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
5674; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
5675; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
5676; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
5677; GCN-HSA-NEXT:    v_bfe_i32 v0, v0, 0, 16
5678; GCN-HSA-NEXT:    v_bfe_i32 v2, v2, 0, 16
5679; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5680; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5681; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
5682; GCN-HSA-NEXT:    s_endpgm
5683;
5684; GCN-NOHSA-VI-LABEL: global_sextload_v2i16_to_v2i64:
5685; GCN-NOHSA-VI:       ; %bb.0:
5686; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5687; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
5688; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
5689; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
5690; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
5691; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5692; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
5693; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
5694; GCN-NOHSA-VI-NEXT:    buffer_load_dword v1, off, s[8:11], 0
5695; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
5696; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
5697; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
5698; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v1
5699; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v1, 0, 16
5700; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v2, 0, 16
5701; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5702; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5703; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
5704; GCN-NOHSA-VI-NEXT:    s_endpgm
5705;
5706; EG-LABEL: global_sextload_v2i16_to_v2i64:
5707; EG:       ; %bb.0:
5708; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5709; EG-NEXT:    TEX 0 @6
5710; EG-NEXT:    ALU 8, @9, KC0[CB0:0-32], KC1[]
5711; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T4.XYZW, T5.X, 1
5712; EG-NEXT:    CF_END
5713; EG-NEXT:    PAD
5714; EG-NEXT:    Fetch clause starting at 6:
5715; EG-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
5716; EG-NEXT:    ALU clause starting at 8:
5717; EG-NEXT:     MOV * T4.X, KC0[2].Z,
5718; EG-NEXT:    ALU clause starting at 9:
5719; EG-NEXT:     ASHR * T4.W, T4.X, literal.x,
5720; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5721; EG-NEXT:     ASHR * T4.Z, T4.X, literal.x,
5722; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5723; EG-NEXT:     BFE_INT T4.X, T4.X, 0.0, literal.x,
5724; EG-NEXT:     LSHR * T5.X, KC0[2].Y, literal.y,
5725; EG-NEXT:    16(2.242078e-44), 2(2.802597e-45)
5726; EG-NEXT:     ASHR * T4.Y, PV.X, literal.x,
5727; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5728;
5729; CM-LABEL: global_sextload_v2i16_to_v2i64:
5730; CM:       ; %bb.0:
5731; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5732; CM-NEXT:    TEX 0 @6
5733; CM-NEXT:    ALU 8, @9, KC0[CB0:0-32], KC1[]
5734; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T4, T5.X
5735; CM-NEXT:    CF_END
5736; CM-NEXT:    PAD
5737; CM-NEXT:    Fetch clause starting at 6:
5738; CM-NEXT:     VTX_READ_32 T4.X, T4.X, 0, #1
5739; CM-NEXT:    ALU clause starting at 8:
5740; CM-NEXT:     MOV * T4.X, KC0[2].Z,
5741; CM-NEXT:    ALU clause starting at 9:
5742; CM-NEXT:     ASHR * T4.W, T4.X, literal.x,
5743; CM-NEXT:    31(4.344025e-44), 0(0.000000e+00)
5744; CM-NEXT:     ASHR * T4.Z, T4.X, literal.x,
5745; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5746; CM-NEXT:     BFE_INT * T4.X, T4.X, 0.0, literal.x,
5747; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5748; CM-NEXT:     LSHR T5.X, KC0[2].Y, literal.x,
5749; CM-NEXT:     ASHR * T4.Y, PV.X, literal.y,
5750; CM-NEXT:    2(2.802597e-45), 31(4.344025e-44)
5751  %load = load <2 x i16>, <2 x i16> addrspace(1)* %in
5752  %ext = sext <2 x i16> %load to <2 x i64>
5753  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
5754  ret void
5755}
5756
5757define amdgpu_kernel void @global_zextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 {
5758; GCN-NOHSA-SI-LABEL: global_zextload_v4i16_to_v4i64:
5759; GCN-NOHSA-SI:       ; %bb.0:
5760; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5761; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
5762; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
5763; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
5764; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
5765; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5766; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
5767; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
5768; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx2 v[8:9], off, s[8:11], 0
5769; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
5770; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, 0xffff
5771; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
5772; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, v1
5773; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, v1
5774; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
5775; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
5776; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
5777; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v9
5778; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v8
5779; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v4, s2, v8
5780; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, s2, v9
5781; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16
5782; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0
5783; GCN-NOHSA-SI-NEXT:    s_endpgm
5784;
5785; GCN-HSA-LABEL: global_zextload_v4i16_to_v4i64:
5786; GCN-HSA:       ; %bb.0:
5787; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5788; GCN-HSA-NEXT:    s_mov_b32 s4, 0xffff
5789; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5790; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5791; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5792; GCN-HSA-NEXT:    flat_load_dwordx2 v[8:9], v[0:1]
5793; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
5794; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5795; GCN-HSA-NEXT:    v_mov_b32_e32 v1, 0
5796; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
5797; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v1
5798; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s1
5799; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
5800; GCN-HSA-NEXT:    v_mov_b32_e32 v5, v1
5801; GCN-HSA-NEXT:    v_mov_b32_e32 v7, v1
5802; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s0
5803; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
5804; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v2, 16, v9
5805; GCN-HSA-NEXT:    v_and_b32_e32 v0, s4, v9
5806; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v6, 16, v8
5807; GCN-HSA-NEXT:    v_and_b32_e32 v4, s4, v8
5808; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[0:3]
5809; GCN-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]
5810; GCN-HSA-NEXT:    s_endpgm
5811;
5812; GCN-NOHSA-VI-LABEL: global_zextload_v4i16_to_v4i64:
5813; GCN-NOHSA-VI:       ; %bb.0:
5814; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5815; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
5816; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
5817; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
5818; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
5819; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5820; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
5821; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
5822; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx2 v[8:9], off, s[8:11], 0
5823; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, 0xffff
5824; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v7, 0
5825; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, 0
5826; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
5827; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
5828; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, 0
5829; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, v5
5830; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
5831; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v4, s2, v9
5832; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v6, 16, v9
5833; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, s2, v8
5834; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v8
5835; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16
5836; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
5837; GCN-NOHSA-VI-NEXT:    s_endpgm
5838;
5839; EG-LABEL: global_zextload_v4i16_to_v4i64:
5840; EG:       ; %bb.0:
5841; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5842; EG-NEXT:    TEX 0 @6
5843; EG-NEXT:    ALU 18, @9, KC0[CB0:0-32], KC1[]
5844; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T8.X, 0
5845; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T6.XYZW, T7.X, 1
5846; EG-NEXT:    CF_END
5847; EG-NEXT:    Fetch clause starting at 6:
5848; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
5849; EG-NEXT:    ALU clause starting at 8:
5850; EG-NEXT:     MOV * T5.X, KC0[2].Z,
5851; EG-NEXT:    ALU clause starting at 9:
5852; EG-NEXT:     MOV T2.X, T5.X,
5853; EG-NEXT:     MOV * T3.X, T5.Y,
5854; EG-NEXT:     MOV T0.Y, PV.X,
5855; EG-NEXT:     MOV * T0.Z, PS,
5856; EG-NEXT:     LSHR * T5.Z, PV.Z, literal.x,
5857; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5858; EG-NEXT:     AND_INT T5.X, T0.Z, literal.x,
5859; EG-NEXT:     MOV T5.Y, 0.0,
5860; EG-NEXT:     LSHR T6.Z, T0.Y, literal.y,
5861; EG-NEXT:     AND_INT * T6.X, T0.Y, literal.x,
5862; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5863; EG-NEXT:     MOV T6.Y, 0.0,
5864; EG-NEXT:     MOV T5.W, 0.0,
5865; EG-NEXT:     MOV * T6.W, 0.0,
5866; EG-NEXT:     LSHR T7.X, KC0[2].Y, literal.x,
5867; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
5868; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
5869; EG-NEXT:     LSHR * T8.X, PV.W, literal.x,
5870; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5871;
5872; CM-LABEL: global_zextload_v4i16_to_v4i64:
5873; CM:       ; %bb.0:
5874; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5875; CM-NEXT:    TEX 0 @6
5876; CM-NEXT:    ALU 20, @9, KC0[CB0:0-32], KC1[]
5877; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T5, T8.X
5878; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T6, T7.X
5879; CM-NEXT:    CF_END
5880; CM-NEXT:    Fetch clause starting at 6:
5881; CM-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
5882; CM-NEXT:    ALU clause starting at 8:
5883; CM-NEXT:     MOV * T5.X, KC0[2].Z,
5884; CM-NEXT:    ALU clause starting at 9:
5885; CM-NEXT:     MOV * T2.X, T5.X,
5886; CM-NEXT:     MOV * T3.X, T5.Y,
5887; CM-NEXT:     MOV T0.Y, PV.X,
5888; CM-NEXT:     MOV * T0.Z, T2.X,
5889; CM-NEXT:     LSHR * T5.Z, PV.Z, literal.x,
5890; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5891; CM-NEXT:     AND_INT T5.X, T0.Z, literal.x,
5892; CM-NEXT:     MOV T5.Y, 0.0,
5893; CM-NEXT:     LSHR * T6.Z, T0.Y, literal.y,
5894; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
5895; CM-NEXT:     AND_INT T6.X, T0.Y, literal.x,
5896; CM-NEXT:     MOV T6.Y, 0.0,
5897; CM-NEXT:     MOV * T5.W, 0.0,
5898; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
5899; CM-NEXT:     MOV * T6.W, 0.0,
5900; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
5901; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
5902; CM-NEXT:     LSHR * T7.X, PV.W, literal.x,
5903; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5904; CM-NEXT:     LSHR * T8.X, KC0[2].Y, literal.x,
5905; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
5906  %load = load <4 x i16>, <4 x i16> addrspace(1)* %in
5907  %ext = zext <4 x i16> %load to <4 x i64>
5908  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
5909  ret void
5910}
5911
5912define amdgpu_kernel void @global_sextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(1)* %in) #0 {
5913; GCN-NOHSA-SI-LABEL: global_sextload_v4i16_to_v4i64:
5914; GCN-NOHSA-SI:       ; %bb.0:
5915; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
5916; GCN-NOHSA-SI-NEXT:    s_mov_b32 s7, 0xf000
5917; GCN-NOHSA-SI-NEXT:    s_mov_b32 s6, -1
5918; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s6
5919; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s7
5920; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
5921; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s2
5922; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s3
5923; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx2 v[1:2], off, s[8:11], 0
5924; GCN-NOHSA-SI-NEXT:    s_mov_b32 s4, s0
5925; GCN-NOHSA-SI-NEXT:    s_mov_b32 s5, s1
5926; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
5927; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v2
5928; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v1
5929; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v1, 0, 16
5930; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[6:7], v[1:2], 48
5931; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v4, v3, 0, 16
5932; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5933; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v2, v5, 0, 16
5934; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v5, 31, v4
5935; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5936; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16
5937; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
5938; GCN-NOHSA-SI-NEXT:    s_endpgm
5939;
5940; GCN-HSA-LABEL: global_sextload_v4i16_to_v4i64:
5941; GCN-HSA:       ; %bb.0:
5942; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
5943; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
5944; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
5945; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
5946; GCN-HSA-NEXT:    flat_load_dwordx2 v[1:2], v[0:1]
5947; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
5948; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
5949; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s3
5950; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s1
5951; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s2
5952; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s0
5953; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
5954; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v2
5955; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v4, 16, v1
5956; GCN-HSA-NEXT:    v_ashr_i64 v[6:7], v[1:2], 48
5957; GCN-HSA-NEXT:    v_bfe_i32 v2, v4, 0, 16
5958; GCN-HSA-NEXT:    v_bfe_i32 v4, v3, 0, 16
5959; GCN-HSA-NEXT:    v_bfe_i32 v0, v1, 0, 16
5960; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v5, 31, v4
5961; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5962; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5963; GCN-HSA-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]
5964; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]
5965; GCN-HSA-NEXT:    s_endpgm
5966;
5967; GCN-NOHSA-VI-LABEL: global_sextload_v4i16_to_v4i64:
5968; GCN-NOHSA-VI:       ; %bb.0:
5969; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
5970; GCN-NOHSA-VI-NEXT:    s_mov_b32 s7, 0xf000
5971; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, -1
5972; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s6
5973; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s7
5974; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
5975; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s2
5976; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s3
5977; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx2 v[1:2], off, s[8:11], 0
5978; GCN-NOHSA-VI-NEXT:    s_mov_b32 s4, s0
5979; GCN-NOHSA-VI-NEXT:    s_mov_b32 s5, s1
5980; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
5981; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, v2
5982; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v2
5983; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
5984; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v4, v4, 0, 16
5985; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v6, v5, 0, 16
5986; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v1, 0, 16
5987; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v3, 0, 16
5988; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v5, 31, v4
5989; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
5990; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
5991; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
5992; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16
5993; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 0
5994; GCN-NOHSA-VI-NEXT:    s_endpgm
5995;
5996; EG-LABEL: global_sextload_v4i16_to_v4i64:
5997; EG:       ; %bb.0:
5998; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
5999; EG-NEXT:    TEX 0 @6
6000; EG-NEXT:    ALU 20, @9, KC0[CB0:0-32], KC1[]
6001; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T8.X, 0
6002; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T5.XYZW, T6.X, 1
6003; EG-NEXT:    CF_END
6004; EG-NEXT:    Fetch clause starting at 6:
6005; EG-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
6006; EG-NEXT:    ALU clause starting at 8:
6007; EG-NEXT:     MOV * T5.X, KC0[2].Z,
6008; EG-NEXT:    ALU clause starting at 9:
6009; EG-NEXT:     MOV T2.X, T5.X,
6010; EG-NEXT:     MOV * T3.X, T5.Y,
6011; EG-NEXT:     MOV T0.Y, PS,
6012; EG-NEXT:     MOV * T0.Z, PV.X,
6013; EG-NEXT:     ASHR * T5.W, PV.Z, literal.x,
6014; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6015; EG-NEXT:     LSHR T6.X, KC0[2].Y, literal.x,
6016; EG-NEXT:     ASHR T5.Z, T0.Z, literal.y,
6017; EG-NEXT:     ASHR * T7.W, T0.Y, literal.z,
6018; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6019; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6020; EG-NEXT:     BFE_INT T5.X, T0.Z, 0.0, literal.x,
6021; EG-NEXT:     ASHR * T7.Z, T0.Y, literal.x,
6022; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6023; EG-NEXT:     BFE_INT T7.X, T0.Y, 0.0, literal.x,
6024; EG-NEXT:     ASHR T5.Y, PV.X, literal.y,
6025; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
6026; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6027; EG-NEXT:     LSHR T8.X, PV.W, literal.x,
6028; EG-NEXT:     ASHR * T7.Y, PV.X, literal.y,
6029; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6030;
6031; CM-LABEL: global_sextload_v4i16_to_v4i64:
6032; CM:       ; %bb.0:
6033; CM-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
6034; CM-NEXT:    TEX 0 @6
6035; CM-NEXT:    ALU 20, @9, KC0[CB0:0-32], KC1[]
6036; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T7, T8.X
6037; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T5, T6.X
6038; CM-NEXT:    CF_END
6039; CM-NEXT:    Fetch clause starting at 6:
6040; CM-NEXT:     VTX_READ_64 T5.XY, T5.X, 0, #1
6041; CM-NEXT:    ALU clause starting at 8:
6042; CM-NEXT:     MOV * T5.X, KC0[2].Z,
6043; CM-NEXT:    ALU clause starting at 9:
6044; CM-NEXT:     MOV * T2.X, T5.X,
6045; CM-NEXT:     MOV T3.X, T5.Y,
6046; CM-NEXT:     MOV * T0.Y, PV.X,
6047; CM-NEXT:     MOV * T0.Z, PV.X,
6048; CM-NEXT:     ADD_INT T1.Z, KC0[2].Y, literal.x,
6049; CM-NEXT:     ASHR * T5.W, PV.Z, literal.y,
6050; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6051; CM-NEXT:     LSHR T6.X, PV.Z, literal.x,
6052; CM-NEXT:     ASHR T5.Z, T0.Z, literal.y,
6053; CM-NEXT:     ASHR * T7.W, T0.Y, literal.z,
6054; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6055; CM-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6056; CM-NEXT:     BFE_INT T5.X, T0.Z, 0.0, literal.x,
6057; CM-NEXT:     ASHR * T7.Z, T0.Y, literal.x,
6058; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6059; CM-NEXT:     BFE_INT T7.X, T0.Y, 0.0, literal.x,
6060; CM-NEXT:     ASHR * T5.Y, PV.X, literal.y,
6061; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6062; CM-NEXT:     LSHR T8.X, KC0[2].Y, literal.x,
6063; CM-NEXT:     ASHR * T7.Y, PV.X, literal.y,
6064; CM-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6065  %load = load <4 x i16>, <4 x i16> addrspace(1)* %in
6066  %ext = sext <4 x i16> %load to <4 x i64>
6067  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
6068  ret void
6069}
6070
6071define amdgpu_kernel void @global_zextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 {
6072; GCN-NOHSA-SI-LABEL: global_zextload_v8i16_to_v8i64:
6073; GCN-NOHSA-SI:       ; %bb.0:
6074; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
6075; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
6076; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
6077; GCN-NOHSA-SI-NEXT:    s_mov_b32 s12, 0xffff
6078; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
6079; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
6080; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6081; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
6082; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
6083; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
6084; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, 0
6085; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, 0
6086; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, 0
6087; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, v9
6088; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v17, v9
6089; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v19, v9
6090; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, v9
6091; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, v9
6092; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
6093; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
6094; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
6095; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v1
6096; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v3
6097; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v2
6098; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v0
6099; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v4, s12, v0
6100; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v12, s12, v2
6101; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v16, s12, v1
6102; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v8, s12, v3
6103; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:48
6104; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:16
6105; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32
6106; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
6107; GCN-NOHSA-SI-NEXT:    s_endpgm
6108;
6109; GCN-HSA-LABEL: global_zextload_v8i16_to_v8i64:
6110; GCN-HSA:       ; %bb.0:
6111; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
6112; GCN-HSA-NEXT:    s_mov_b32 s4, 0xffff
6113; GCN-HSA-NEXT:    v_mov_b32_e32 v12, 0
6114; GCN-HSA-NEXT:    v_mov_b32_e32 v14, v12
6115; GCN-HSA-NEXT:    v_mov_b32_e32 v15, v12
6116; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6117; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
6118; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
6119; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
6120; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
6121; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6122; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6123; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6124; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
6125; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s1
6126; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6127; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s0
6128; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s3
6129; GCN-HSA-NEXT:    s_add_u32 s0, s0, 32
6130; GCN-HSA-NEXT:    v_mov_b32_e32 v8, v12
6131; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s2
6132; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
6133; GCN-HSA-NEXT:    v_mov_b32_e32 v6, 0
6134; GCN-HSA-NEXT:    v_mov_b32_e32 v10, 0
6135; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
6136; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v13, 16, v3
6137; GCN-HSA-NEXT:    v_and_b32_e32 v11, s4, v3
6138; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[11:14]
6139; GCN-HSA-NEXT:    v_mov_b32_e32 v4, v12
6140; GCN-HSA-NEXT:    v_mov_b32_e32 v13, v12
6141; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v14, 16, v1
6142; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v5, 16, v0
6143; GCN-HSA-NEXT:    v_and_b32_e32 v3, s4, v0
6144; GCN-HSA-NEXT:    v_and_b32_e32 v12, s4, v1
6145; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
6146; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v9, 16, v2
6147; GCN-HSA-NEXT:    v_and_b32_e32 v7, s4, v2
6148; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
6149; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[12:15]
6150; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[7:10]
6151; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[3:6]
6152; GCN-HSA-NEXT:    s_endpgm
6153;
6154; GCN-NOHSA-VI-LABEL: global_zextload_v8i16_to_v8i64:
6155; GCN-NOHSA-VI:       ; %bb.0:
6156; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
6157; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
6158; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
6159; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s2
6160; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s3
6161; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6162; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s6
6163; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s7
6164; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
6165; GCN-NOHSA-VI-NEXT:    s_mov_b32 s6, 0xffff
6166; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v19, 0
6167; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v17, 0
6168; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
6169; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
6170; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v7, 0
6171; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v11, 0
6172; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v15, 0
6173; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v13, v17
6174; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v9, v17
6175; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, v17
6176; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
6177; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v16, s6, v3
6178; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v18, 16, v3
6179; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v4, s6, v0
6180; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v6, 16, v0
6181; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v8, s6, v1
6182; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v10, 16, v1
6183; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v12, s6, v2
6184; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v14, 16, v2
6185; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48
6186; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32
6187; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16
6188; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
6189; GCN-NOHSA-VI-NEXT:    s_endpgm
6190;
6191; EG-LABEL: global_zextload_v8i16_to_v8i64:
6192; EG:       ; %bb.0:
6193; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
6194; EG-NEXT:    TEX 0 @8
6195; EG-NEXT:    ALU 30, @11, KC0[CB0:0-32], KC1[]
6196; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T8.XYZW, T14.X, 0
6197; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T9.XYZW, T13.X, 0
6198; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T12.X, 0
6199; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T7.XYZW, T11.X, 1
6200; EG-NEXT:    CF_END
6201; EG-NEXT:    Fetch clause starting at 8:
6202; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
6203; EG-NEXT:    ALU clause starting at 10:
6204; EG-NEXT:     MOV * T7.X, KC0[2].Z,
6205; EG-NEXT:    ALU clause starting at 11:
6206; EG-NEXT:     LSHR * T8.Z, T7.W, literal.x,
6207; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6208; EG-NEXT:     AND_INT T8.X, T7.W, literal.x,
6209; EG-NEXT:     MOV T8.Y, 0.0,
6210; EG-NEXT:     LSHR T9.Z, T7.Z, literal.y,
6211; EG-NEXT:     AND_INT * T9.X, T7.Z, literal.x,
6212; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6213; EG-NEXT:     MOV T9.Y, 0.0,
6214; EG-NEXT:     LSHR * T10.Z, T7.Y, literal.x,
6215; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6216; EG-NEXT:     AND_INT T10.X, T7.Y, literal.x,
6217; EG-NEXT:     MOV T10.Y, 0.0,
6218; EG-NEXT:     LSHR T7.Z, T7.X, literal.y,
6219; EG-NEXT:     AND_INT * T7.X, T7.X, literal.x,
6220; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6221; EG-NEXT:     MOV T7.Y, 0.0,
6222; EG-NEXT:     MOV T8.W, 0.0,
6223; EG-NEXT:     MOV * T9.W, 0.0,
6224; EG-NEXT:     MOV T10.W, 0.0,
6225; EG-NEXT:     MOV * T7.W, 0.0,
6226; EG-NEXT:     LSHR T11.X, KC0[2].Y, literal.x,
6227; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6228; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6229; EG-NEXT:     LSHR T12.X, PV.W, literal.x,
6230; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6231; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6232; EG-NEXT:     LSHR T13.X, PV.W, literal.x,
6233; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6234; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
6235; EG-NEXT:     LSHR * T14.X, PV.W, literal.x,
6236; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6237;
6238; CM-LABEL: global_zextload_v8i16_to_v8i64:
6239; CM:       ; %bb.0:
6240; CM-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
6241; CM-NEXT:    TEX 0 @8
6242; CM-NEXT:    ALU 32, @11, KC0[CB0:0-32], KC1[]
6243; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T8, T14.X
6244; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T9, T13.X
6245; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T10, T12.X
6246; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T7, T11.X
6247; CM-NEXT:    CF_END
6248; CM-NEXT:    Fetch clause starting at 8:
6249; CM-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
6250; CM-NEXT:    ALU clause starting at 10:
6251; CM-NEXT:     MOV * T7.X, KC0[2].Z,
6252; CM-NEXT:    ALU clause starting at 11:
6253; CM-NEXT:     LSHR * T8.Z, T7.X, literal.x,
6254; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6255; CM-NEXT:     AND_INT T8.X, T7.X, literal.x,
6256; CM-NEXT:     MOV T8.Y, 0.0,
6257; CM-NEXT:     LSHR * T9.Z, T7.Y, literal.y,
6258; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6259; CM-NEXT:     AND_INT T9.X, T7.Y, literal.x,
6260; CM-NEXT:     MOV T9.Y, 0.0,
6261; CM-NEXT:     LSHR * T10.Z, T7.Z, literal.y,
6262; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6263; CM-NEXT:     AND_INT T10.X, T7.Z, literal.x,
6264; CM-NEXT:     MOV T10.Y, 0.0,
6265; CM-NEXT:     LSHR * T7.Z, T7.W, literal.y,
6266; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6267; CM-NEXT:     AND_INT T7.X, T7.W, literal.x,
6268; CM-NEXT:     MOV T7.Y, 0.0,
6269; CM-NEXT:     MOV * T8.W, 0.0,
6270; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
6271; CM-NEXT:     MOV * T9.W, 0.0,
6272; CM-NEXT:     MOV * T10.W, 0.0,
6273; CM-NEXT:     MOV * T7.W, 0.0,
6274; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
6275; CM-NEXT:    48(6.726233e-44), 0(0.000000e+00)
6276; CM-NEXT:     LSHR T11.X, PV.W, literal.x,
6277; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6278; CM-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6279; CM-NEXT:     LSHR T12.X, PV.W, literal.x,
6280; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6281; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6282; CM-NEXT:     LSHR * T13.X, PV.W, literal.x,
6283; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6284; CM-NEXT:     LSHR * T14.X, KC0[2].Y, literal.x,
6285; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6286  %load = load <8 x i16>, <8 x i16> addrspace(1)* %in
6287  %ext = zext <8 x i16> %load to <8 x i64>
6288  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
6289  ret void
6290}
6291
6292define amdgpu_kernel void @global_sextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(1)* %in) #0 {
6293; GCN-NOHSA-SI-LABEL: global_sextload_v8i16_to_v8i64:
6294; GCN-NOHSA-SI:       ; %bb.0:
6295; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
6296; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
6297; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
6298; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
6299; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
6300; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6301; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
6302; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
6303; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
6304; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
6305; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
6306; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
6307; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, v3
6308; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v2
6309; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v0
6310; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v4, v0, 0, 16
6311; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[10:11], v[0:1], 48
6312; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v12, v5, 0, 16
6313; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[14:15], v[2:3], 48
6314; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v8, v1, 0, 16
6315; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v2, 0, 16
6316; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v5, 31, v4
6317; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
6318; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v6, v6, 0, 16
6319; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v2, v7, 0, 16
6320; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
6321; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v13, 31, v12
6322; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
6323; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
6324; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:48
6325; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16
6326; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
6327; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
6328; GCN-NOHSA-SI-NEXT:    s_endpgm
6329;
6330; GCN-HSA-LABEL: global_sextload_v8i16_to_v8i64:
6331; GCN-HSA:       ; %bb.0:
6332; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
6333; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6334; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
6335; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
6336; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
6337; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
6338; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6339; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s3
6340; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s2
6341; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
6342; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6343; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s1
6344; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s3
6345; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s0
6346; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s2
6347; GCN-HSA-NEXT:    s_add_u32 s0, s0, 32
6348; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
6349; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s1
6350; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s0
6351; GCN-HSA-NEXT:    s_waitcnt vmcnt(0)
6352; GCN-HSA-NEXT:    v_ashr_i64 v[6:7], v[0:1], 48
6353; GCN-HSA-NEXT:    v_bfe_i32 v4, v1, 0, 16
6354; GCN-HSA-NEXT:    v_mov_b32_e32 v11, v3
6355; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v5, 31, v4
6356; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v10, 16, v2
6357; GCN-HSA-NEXT:    flat_store_dwordx4 v[8:9], v[4:7]
6358; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v0
6359; GCN-HSA-NEXT:    v_bfe_i32 v4, v0, 0, 16
6360; GCN-HSA-NEXT:    v_bfe_i32 v8, v2, 0, 16
6361; GCN-HSA-NEXT:    v_ashr_i64 v[2:3], v[2:3], 48
6362; GCN-HSA-NEXT:    v_bfe_i32 v0, v11, 0, 16
6363; GCN-HSA-NEXT:    v_bfe_i32 v6, v1, 0, 16
6364; GCN-HSA-NEXT:    v_bfe_i32 v10, v10, 0, 16
6365; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
6366; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v5, 31, v4
6367; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
6368; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
6369; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
6370; GCN-HSA-NEXT:    flat_store_dwordx4 v[14:15], v[0:3]
6371; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[8:11]
6372; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[4:7]
6373; GCN-HSA-NEXT:    s_endpgm
6374;
6375; GCN-NOHSA-VI-LABEL: global_sextload_v8i16_to_v8i64:
6376; GCN-NOHSA-VI:       ; %bb.0:
6377; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
6378; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
6379; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
6380; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s2
6381; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s3
6382; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6383; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s6
6384; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s7
6385; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
6386; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
6387; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
6388; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
6389; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v11, v3
6390; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v3
6391; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v0
6392; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v7, 16, v1
6393; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v10, 16, v2
6394; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v12, v11, 0, 16
6395; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v14, v3, 0, 16
6396; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v4, v0, 0, 16
6397; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v1, 0, 16
6398; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v6, v5, 0, 16
6399; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v8, v2, 0, 16
6400; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v7, 0, 16
6401; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v10, v10, 0, 16
6402; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v13, 31, v12
6403; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
6404; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v5, 31, v4
6405; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
6406; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
6407; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
6408; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
6409; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
6410; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:48
6411; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:32
6412; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
6413; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0
6414; GCN-NOHSA-VI-NEXT:    s_endpgm
6415;
6416; EG-LABEL: global_sextload_v8i16_to_v8i64:
6417; EG:       ; %bb.0:
6418; EG-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
6419; EG-NEXT:    TEX 0 @8
6420; EG-NEXT:    ALU 33, @11, KC0[CB0:0-32], KC1[]
6421; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T7.X, 0
6422; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T11.X, 0
6423; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T9.X, 0
6424; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T10.XYZW, T8.X, 1
6425; EG-NEXT:    CF_END
6426; EG-NEXT:    Fetch clause starting at 8:
6427; EG-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
6428; EG-NEXT:    ALU clause starting at 10:
6429; EG-NEXT:     MOV * T7.X, KC0[2].Z,
6430; EG-NEXT:    ALU clause starting at 11:
6431; EG-NEXT:     LSHR T8.X, KC0[2].Y, literal.x,
6432; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6433; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6434; EG-NEXT:     LSHR T9.X, PV.W, literal.x,
6435; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.y,
6436; EG-NEXT:     ASHR * T10.W, T7.X, literal.z,
6437; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6438; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6439; EG-NEXT:     LSHR T11.X, PV.W, literal.x,
6440; EG-NEXT:     ASHR T10.Z, T7.X, literal.y,
6441; EG-NEXT:     ASHR * T12.W, T7.Y, literal.z,
6442; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6443; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6444; EG-NEXT:     BFE_INT T10.X, T7.X, 0.0, literal.x,
6445; EG-NEXT:     ASHR T12.Z, T7.Y, literal.x,
6446; EG-NEXT:     ASHR * T13.W, T7.Z, literal.y,
6447; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6448; EG-NEXT:     BFE_INT T12.X, T7.Y, 0.0, literal.x,
6449; EG-NEXT:     ASHR T10.Y, PV.X, literal.y,
6450; EG-NEXT:     ASHR T13.Z, T7.Z, literal.x,
6451; EG-NEXT:     ASHR * T14.W, T7.W, literal.y,
6452; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6453; EG-NEXT:     BFE_INT T13.X, T7.Z, 0.0, literal.x,
6454; EG-NEXT:     ASHR T12.Y, PV.X, literal.y,
6455; EG-NEXT:     ASHR * T14.Z, T7.W, literal.x,
6456; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6457; EG-NEXT:     BFE_INT T14.X, T7.W, 0.0, literal.x,
6458; EG-NEXT:     ASHR T13.Y, PV.X, literal.y,
6459; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
6460; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6461; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
6462; EG-NEXT:     LSHR T7.X, PV.W, literal.x,
6463; EG-NEXT:     ASHR * T14.Y, PV.X, literal.y,
6464; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6465;
6466; CM-LABEL: global_sextload_v8i16_to_v8i64:
6467; CM:       ; %bb.0:
6468; CM-NEXT:    ALU 0, @10, KC0[CB0:0-32], KC1[]
6469; CM-NEXT:    TEX 0 @8
6470; CM-NEXT:    ALU 33, @11, KC0[CB0:0-32], KC1[]
6471; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T7, T14.X
6472; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T13, T11.X
6473; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T12, T9.X
6474; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T10, T8.X
6475; CM-NEXT:    CF_END
6476; CM-NEXT:    Fetch clause starting at 8:
6477; CM-NEXT:     VTX_READ_128 T7.XYZW, T7.X, 0, #1
6478; CM-NEXT:    ALU clause starting at 10:
6479; CM-NEXT:     MOV * T7.X, KC0[2].Z,
6480; CM-NEXT:    ALU clause starting at 11:
6481; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
6482; CM-NEXT:    48(6.726233e-44), 0(0.000000e+00)
6483; CM-NEXT:     LSHR T8.X, PV.W, literal.x,
6484; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6485; CM-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6486; CM-NEXT:     LSHR T9.X, PV.W, literal.x,
6487; CM-NEXT:     ADD_INT T0.Z, KC0[2].Y, literal.y,
6488; CM-NEXT:     ASHR * T10.W, T7.W, literal.z,
6489; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6490; CM-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6491; CM-NEXT:     LSHR T11.X, PV.Z, literal.x,
6492; CM-NEXT:     ASHR T10.Z, T7.W, literal.y,
6493; CM-NEXT:     ASHR * T12.W, T7.Z, literal.z,
6494; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6495; CM-NEXT:    31(4.344025e-44), 0(0.000000e+00)
6496; CM-NEXT:     BFE_INT T10.X, T7.W, 0.0, literal.x,
6497; CM-NEXT:     ASHR T12.Z, T7.Z, literal.x,
6498; CM-NEXT:     ASHR * T13.W, T7.Y, literal.y,
6499; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6500; CM-NEXT:     BFE_INT T12.X, T7.Z, 0.0, literal.x,
6501; CM-NEXT:     ASHR T10.Y, PV.X, literal.y,
6502; CM-NEXT:     ASHR T13.Z, T7.Y, literal.x,
6503; CM-NEXT:     ASHR * T7.W, T7.X, literal.y,
6504; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6505; CM-NEXT:     BFE_INT T13.X, T7.Y, 0.0, literal.x,
6506; CM-NEXT:     ASHR T12.Y, PV.X, literal.y,
6507; CM-NEXT:     ASHR * T7.Z, T7.X, literal.x,
6508; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6509; CM-NEXT:     BFE_INT T7.X, T7.X, 0.0, literal.x,
6510; CM-NEXT:     ASHR * T13.Y, PV.X, literal.y,
6511; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
6512; CM-NEXT:     LSHR T14.X, KC0[2].Y, literal.x,
6513; CM-NEXT:     ASHR * T7.Y, PV.X, literal.y,
6514; CM-NEXT:    2(2.802597e-45), 31(4.344025e-44)
6515  %load = load <8 x i16>, <8 x i16> addrspace(1)* %in
6516  %ext = sext <8 x i16> %load to <8 x i64>
6517  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
6518  ret void
6519}
6520
6521define amdgpu_kernel void @global_zextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 {
6522; GCN-NOHSA-SI-LABEL: global_zextload_v16i16_to_v16i64:
6523; GCN-NOHSA-SI:       ; %bb.0:
6524; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
6525; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
6526; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
6527; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
6528; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
6529; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6530; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
6531; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
6532; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
6533; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, 0xffff
6534; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
6535; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(1)
6536; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v1
6537; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v2
6538; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v18, 16, v0
6539; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v16, s0, v0
6540; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v12, s0, v2
6541; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v8, s0, v1
6542; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v3
6543; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, s0, v3
6544; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v20, 0
6545; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
6546; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v5
6547; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v25, 16, v6
6548; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v23, s0, v6
6549; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v6, 16, v4
6550; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v4, s0, v4
6551; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v7
6552; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v26, s0, v7
6553; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v19, s0, v5
6554; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v22, v20
6555; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v27, v20
6556; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v29, v20
6557; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, v20
6558; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v20
6559; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, v20
6560; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, v20
6561; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, v20
6562; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v24, v20
6563; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, v20
6564; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v17, v20
6565; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
6566; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
6567; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[19:22], off, s[0:3], 0 offset:80
6568; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[26:29], off, s[0:3], 0 offset:112
6569; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(1)
6570; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v19, 0
6571; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v15, 0
6572; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6573; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v26, 0
6574; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, 0
6575; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
6576; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16
6577; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:64
6578; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[23:26], off, s[0:3], 0 offset:96
6579; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:32
6580; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0
6581; GCN-NOHSA-SI-NEXT:    s_endpgm
6582;
6583; GCN-HSA-LABEL: global_zextload_v16i16_to_v16i64:
6584; GCN-HSA:       ; %bb.0:
6585; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
6586; GCN-HSA-NEXT:    s_mov_b32 s6, 0xffff
6587; GCN-HSA-NEXT:    v_mov_b32_e32 v8, 0
6588; GCN-HSA-NEXT:    v_mov_b32_e32 v10, v8
6589; GCN-HSA-NEXT:    v_mov_b32_e32 v12, v8
6590; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6591; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
6592; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
6593; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
6594; GCN-HSA-NEXT:    s_add_u32 s2, s2, 16
6595; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
6596; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6597; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6598; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
6599; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
6600; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6601; GCN-HSA-NEXT:    s_add_u32 s4, s0, 16
6602; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6603; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s5
6604; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s4
6605; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0x50
6606; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6607; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s3
6608; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s2
6609; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
6610; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v11, 16, v1
6611; GCN-HSA-NEXT:    v_and_b32_e32 v9, s6, v1
6612; GCN-HSA-NEXT:    flat_store_dwordx4 v[13:14], v[9:12]
6613; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s5
6614; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s4
6615; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0x70
6616; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
6617; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
6618; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v11, 16, v5
6619; GCN-HSA-NEXT:    v_and_b32_e32 v9, s6, v5
6620; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
6621; GCN-HSA-NEXT:    flat_store_dwordx4 v[13:14], v[9:12]
6622; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s5
6623; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6624; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s4
6625; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v11, 16, v7
6626; GCN-HSA-NEXT:    v_and_b32_e32 v9, s6, v7
6627; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s3
6628; GCN-HSA-NEXT:    flat_store_dwordx4 v[13:14], v[9:12]
6629; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s2
6630; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v9, 16, v3
6631; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v13, 16, v2
6632; GCN-HSA-NEXT:    v_and_b32_e32 v11, s6, v2
6633; GCN-HSA-NEXT:    v_and_b32_e32 v7, s6, v3
6634; GCN-HSA-NEXT:    s_add_u32 s2, s0, 64
6635; GCN-HSA-NEXT:    v_mov_b32_e32 v14, 0
6636; GCN-HSA-NEXT:    flat_store_dwordx4 v[15:16], v[7:10]
6637; GCN-HSA-NEXT:    flat_store_dwordx4 v[17:18], v[11:14]
6638; GCN-HSA-NEXT:    v_mov_b32_e32 v1, v8
6639; GCN-HSA-NEXT:    v_mov_b32_e32 v7, v8
6640; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v8, 16, v4
6641; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v13, 16, v6
6642; GCN-HSA-NEXT:    v_and_b32_e32 v11, s6, v6
6643; GCN-HSA-NEXT:    v_and_b32_e32 v6, s6, v4
6644; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
6645; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6646; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
6647; GCN-HSA-NEXT:    s_add_u32 s0, s0, 0x60
6648; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
6649; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v14
6650; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s3
6651; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
6652; GCN-HSA-NEXT:    v_and_b32_e32 v0, s6, v0
6653; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s1
6654; GCN-HSA-NEXT:    v_mov_b32_e32 v9, v14
6655; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s2
6656; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s0
6657; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
6658; GCN-HSA-NEXT:    flat_store_dwordx4 v[15:16], v[6:9]
6659; GCN-HSA-NEXT:    flat_store_dwordx4 v[17:18], v[11:14]
6660; GCN-HSA-NEXT:    s_endpgm
6661;
6662; GCN-NOHSA-VI-LABEL: global_zextload_v16i16_to_v16i64:
6663; GCN-NOHSA-VI:       ; %bb.0:
6664; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
6665; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
6666; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
6667; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s2
6668; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s3
6669; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
6670; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s6
6671; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s7
6672; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
6673; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
6674; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, 0xffff
6675; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v30, 0
6676; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v28, 0
6677; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
6678; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v25, v28
6679; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v21, v28
6680; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v17, v28
6681; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v13, v28
6682; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v9, v28
6683; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v11, 0
6684; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v15, 0
6685; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v19, 0
6686; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v23, 0
6687; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
6688; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v8, s0, v0
6689; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v10, 16, v0
6690; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v12, s0, v1
6691; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, s0, v2
6692; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v16, s0, v3
6693; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v18, 16, v3
6694; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
6695; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v20, s0, v4
6696; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v24, s0, v5
6697; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v3, s0, v6
6698; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v27, s0, v7
6699; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v29, 16, v7
6700; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
6701; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v22, 16, v4
6702; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v26, 16, v5
6703; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v6
6704; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v4, v28
6705; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[27:30], off, s[0:3], 0 offset:112
6706; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v6, 0
6707; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v27, 0
6708; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v14, 16, v1
6709; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v2
6710; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, v28
6711; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[3:6], off, s[0:3], 0 offset:96
6712; GCN-NOHSA-VI-NEXT:    s_nop 0
6713; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, 0
6714; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[24:27], off, s[0:3], 0 offset:80
6715; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[20:23], off, s[0:3], 0 offset:64
6716; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48
6717; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
6718; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16
6719; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0
6720; GCN-NOHSA-VI-NEXT:    s_endpgm
6721;
6722; EG-LABEL: global_zextload_v16i16_to_v16i64:
6723; EG:       ; %bb.0:
6724; EG-NEXT:    ALU 0, @16, KC0[CB0:0-32], KC1[]
6725; EG-NEXT:    TEX 1 @12
6726; EG-NEXT:    ALU 62, @17, KC0[CB0:0-32], KC1[]
6727; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T13.XYZW, T26.X, 0
6728; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T14.XYZW, T25.X, 0
6729; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T15.XYZW, T24.X, 0
6730; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T12.XYZW, T23.X, 0
6731; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T16.XYZW, T22.X, 0
6732; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T17.XYZW, T21.X, 0
6733; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T18.XYZW, T20.X, 0
6734; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T19.X, 1
6735; EG-NEXT:    CF_END
6736; EG-NEXT:    Fetch clause starting at 12:
6737; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
6738; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
6739; EG-NEXT:    ALU clause starting at 16:
6740; EG-NEXT:     MOV * T11.X, KC0[2].Z,
6741; EG-NEXT:    ALU clause starting at 17:
6742; EG-NEXT:     LSHR * T13.Z, T12.W, literal.x,
6743; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6744; EG-NEXT:     AND_INT T13.X, T12.W, literal.x,
6745; EG-NEXT:     MOV T13.Y, 0.0,
6746; EG-NEXT:     LSHR T14.Z, T12.Z, literal.y,
6747; EG-NEXT:     AND_INT * T14.X, T12.Z, literal.x,
6748; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6749; EG-NEXT:     MOV T14.Y, 0.0,
6750; EG-NEXT:     LSHR * T15.Z, T12.Y, literal.x,
6751; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6752; EG-NEXT:     AND_INT T15.X, T12.Y, literal.x,
6753; EG-NEXT:     MOV T15.Y, 0.0,
6754; EG-NEXT:     LSHR T12.Z, T12.X, literal.y,
6755; EG-NEXT:     AND_INT * T12.X, T12.X, literal.x,
6756; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6757; EG-NEXT:     MOV T12.Y, 0.0,
6758; EG-NEXT:     LSHR * T16.Z, T11.W, literal.x,
6759; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6760; EG-NEXT:     AND_INT T16.X, T11.W, literal.x,
6761; EG-NEXT:     MOV T16.Y, 0.0,
6762; EG-NEXT:     LSHR T17.Z, T11.Z, literal.y,
6763; EG-NEXT:     AND_INT * T17.X, T11.Z, literal.x,
6764; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6765; EG-NEXT:     MOV T17.Y, 0.0,
6766; EG-NEXT:     LSHR * T18.Z, T11.Y, literal.x,
6767; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6768; EG-NEXT:     AND_INT T18.X, T11.Y, literal.x,
6769; EG-NEXT:     MOV T18.Y, 0.0,
6770; EG-NEXT:     LSHR T11.Z, T11.X, literal.y,
6771; EG-NEXT:     AND_INT * T11.X, T11.X, literal.x,
6772; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6773; EG-NEXT:     MOV T11.Y, 0.0,
6774; EG-NEXT:     MOV T13.W, 0.0,
6775; EG-NEXT:     MOV * T14.W, 0.0,
6776; EG-NEXT:     MOV T15.W, 0.0,
6777; EG-NEXT:     MOV * T12.W, 0.0,
6778; EG-NEXT:     MOV T16.W, 0.0,
6779; EG-NEXT:     MOV * T17.W, 0.0,
6780; EG-NEXT:     MOV T18.W, 0.0,
6781; EG-NEXT:     MOV * T11.W, 0.0,
6782; EG-NEXT:     LSHR T19.X, KC0[2].Y, literal.x,
6783; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6784; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6785; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
6786; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6787; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6788; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
6789; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6790; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
6791; EG-NEXT:     LSHR T22.X, PV.W, literal.x,
6792; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6793; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
6794; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
6795; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6796; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
6797; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
6798; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6799; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
6800; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
6801; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6802; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
6803; EG-NEXT:     LSHR * T26.X, PV.W, literal.x,
6804; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6805;
6806; CM-LABEL: global_zextload_v16i16_to_v16i64:
6807; CM:       ; %bb.0:
6808; CM-NEXT:    ALU 0, @16, KC0[CB0:0-32], KC1[]
6809; CM-NEXT:    TEX 1 @12
6810; CM-NEXT:    ALU 64, @17, KC0[CB0:0-32], KC1[]
6811; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T13, T26.X
6812; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T14, T25.X
6813; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T15, T24.X
6814; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T12, T23.X
6815; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T16, T22.X
6816; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T17, T21.X
6817; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T18, T20.X
6818; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T11, T19.X
6819; CM-NEXT:    CF_END
6820; CM-NEXT:    Fetch clause starting at 12:
6821; CM-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 0, #1
6822; CM-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 16, #1
6823; CM-NEXT:    ALU clause starting at 16:
6824; CM-NEXT:     MOV * T11.X, KC0[2].Z,
6825; CM-NEXT:    ALU clause starting at 17:
6826; CM-NEXT:     LSHR * T13.Z, T12.X, literal.x,
6827; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
6828; CM-NEXT:     AND_INT T13.X, T12.X, literal.x,
6829; CM-NEXT:     MOV T13.Y, 0.0,
6830; CM-NEXT:     LSHR * T14.Z, T12.Y, literal.y,
6831; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6832; CM-NEXT:     AND_INT T14.X, T12.Y, literal.x,
6833; CM-NEXT:     MOV T14.Y, 0.0,
6834; CM-NEXT:     LSHR * T15.Z, T12.Z, literal.y,
6835; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6836; CM-NEXT:     AND_INT T15.X, T12.Z, literal.x,
6837; CM-NEXT:     MOV T15.Y, 0.0,
6838; CM-NEXT:     LSHR * T12.Z, T12.W, literal.y,
6839; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6840; CM-NEXT:     AND_INT T12.X, T12.W, literal.x,
6841; CM-NEXT:     MOV T12.Y, 0.0,
6842; CM-NEXT:     LSHR * T16.Z, T11.X, literal.y,
6843; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6844; CM-NEXT:     AND_INT T16.X, T11.X, literal.x,
6845; CM-NEXT:     MOV T16.Y, 0.0,
6846; CM-NEXT:     LSHR * T17.Z, T11.Y, literal.y,
6847; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6848; CM-NEXT:     AND_INT T17.X, T11.Y, literal.x,
6849; CM-NEXT:     MOV T17.Y, 0.0,
6850; CM-NEXT:     LSHR * T18.Z, T11.Z, literal.y,
6851; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6852; CM-NEXT:     AND_INT T18.X, T11.Z, literal.x,
6853; CM-NEXT:     MOV T18.Y, 0.0,
6854; CM-NEXT:     LSHR * T11.Z, T11.W, literal.y,
6855; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
6856; CM-NEXT:     AND_INT T11.X, T11.W, literal.x,
6857; CM-NEXT:     MOV T11.Y, 0.0,
6858; CM-NEXT:     MOV * T13.W, 0.0,
6859; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
6860; CM-NEXT:     MOV * T14.W, 0.0,
6861; CM-NEXT:     MOV * T15.W, 0.0,
6862; CM-NEXT:     MOV * T12.W, 0.0,
6863; CM-NEXT:     MOV * T16.W, 0.0,
6864; CM-NEXT:     MOV * T17.W, 0.0,
6865; CM-NEXT:     MOV * T18.W, 0.0,
6866; CM-NEXT:     MOV * T11.W, 0.0,
6867; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
6868; CM-NEXT:    112(1.569454e-43), 0(0.000000e+00)
6869; CM-NEXT:     LSHR T19.X, PV.W, literal.x,
6870; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6871; CM-NEXT:    2(2.802597e-45), 96(1.345247e-43)
6872; CM-NEXT:     LSHR T20.X, PV.W, literal.x,
6873; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6874; CM-NEXT:    2(2.802597e-45), 80(1.121039e-43)
6875; CM-NEXT:     LSHR T21.X, PV.W, literal.x,
6876; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6877; CM-NEXT:    2(2.802597e-45), 64(8.968310e-44)
6878; CM-NEXT:     LSHR T22.X, PV.W, literal.x,
6879; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6880; CM-NEXT:    2(2.802597e-45), 48(6.726233e-44)
6881; CM-NEXT:     LSHR T23.X, PV.W, literal.x,
6882; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6883; CM-NEXT:    2(2.802597e-45), 32(4.484155e-44)
6884; CM-NEXT:     LSHR T24.X, PV.W, literal.x,
6885; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
6886; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
6887; CM-NEXT:     LSHR * T25.X, PV.W, literal.x,
6888; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6889; CM-NEXT:     LSHR * T26.X, KC0[2].Y, literal.x,
6890; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
6891  %load = load <16 x i16>, <16 x i16> addrspace(1)* %in
6892  %ext = zext <16 x i16> %load to <16 x i64>
6893  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
6894  ret void
6895}
6896
6897define amdgpu_kernel void @global_sextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(1)* %in) #0 {
6898; GCN-NOHSA-SI-LABEL: global_sextload_v16i16_to_v16i64:
6899; GCN-NOHSA-SI:       ; %bb.0:
6900; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
6901; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
6902; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
6903; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
6904; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
6905; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
6906; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
6907; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
6908; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
6909; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
6910; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
6911; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
6912; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
6913; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v8, v7
6914; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v12, v3
6915; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v13, 16, v4
6916; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v14, 16, v2
6917; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v15, 16, v0
6918; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v8, v8, 0, 16
6919; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[10:11], v[6:7], 48
6920; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
6921; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:112
6922; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6923; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[9:10], v[4:5], 48
6924; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v7, v5, 0, 16
6925; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v8, 31, v7
6926; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[7:10], off, s[0:3], 0 offset:80
6927; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v5, v0, 0, 16
6928; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6929; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v7, v15, 0, 16
6930; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v8, v12, 0, 16
6931; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[10:11], v[2:3], 48
6932; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
6933; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:48
6934; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
6935; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[11:12], v[0:1], 48
6936; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v9, v1, 0, 16
6937; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v0, v2, 0, 16
6938; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v2, v14, 0, 16
6939; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v13, 0, 16
6940; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v13, v4, 0, 16
6941; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v6
6942; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v17, v6, 0, 16
6943; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v19, v1, 0, 16
6944; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v6, 31, v5
6945; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
6946; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
6947; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v18, 31, v17
6948; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v10, 31, v9
6949; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v8, 31, v7
6950; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
6951; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
6952; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v20, 31, v19
6953; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:16
6954; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[17:20], off, s[0:3], 0 offset:96
6955; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:64
6956; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
6957; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[5:8], off, s[0:3], 0
6958; GCN-NOHSA-SI-NEXT:    s_endpgm
6959;
6960; GCN-HSA-LABEL: global_sextload_v16i16_to_v16i64:
6961; GCN-HSA:       ; %bb.0:
6962; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
6963; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
6964; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
6965; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
6966; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
6967; GCN-HSA-NEXT:    s_add_u32 s2, s2, 16
6968; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
6969; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
6970; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
6971; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
6972; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
6973; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6974; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s3
6975; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s2
6976; GCN-HSA-NEXT:    s_add_u32 s2, s0, 16
6977; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6978; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s3
6979; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s2
6980; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x70
6981; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6982; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s3
6983; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s2
6984; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x50
6985; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
6986; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s1
6987; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s0
6988; GCN-HSA-NEXT:    s_waitcnt vmcnt(1)
6989; GCN-HSA-NEXT:    v_ashr_i64 v[10:11], v[0:1], 48
6990; GCN-HSA-NEXT:    v_bfe_i32 v8, v1, 0, 16
6991; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
6992; GCN-HSA-NEXT:    v_mov_b32_e32 v1, v3
6993; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[8:11]
6994; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s3
6995; GCN-HSA-NEXT:    v_bfe_i32 v8, v1, 0, 16
6996; GCN-HSA-NEXT:    v_ashr_i64 v[10:11], v[2:3], 48
6997; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s2
6998; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
6999; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
7000; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
7001; GCN-HSA-NEXT:    flat_store_dwordx4 v[14:15], v[8:11]
7002; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
7003; GCN-HSA-NEXT:    v_bfe_i32 v8, v2, 0, 16
7004; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
7005; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s3
7006; GCN-HSA-NEXT:    v_bfe_i32 v0, v0, 0, 16
7007; GCN-HSA-NEXT:    v_bfe_i32 v2, v2, 0, 16
7008; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s2
7009; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x60
7010; GCN-HSA-NEXT:    v_bfe_i32 v10, v1, 0, 16
7011; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
7012; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
7013; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
7014; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
7015; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
7016; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[0:3]
7017; GCN-HSA-NEXT:    flat_store_dwordx4 v[14:15], v[8:11]
7018; GCN-HSA-NEXT:    s_waitcnt vmcnt(4)
7019; GCN-HSA-NEXT:    v_ashr_i64 v[2:3], v[4:5], 48
7020; GCN-HSA-NEXT:    v_bfe_i32 v0, v5, 0, 16
7021; GCN-HSA-NEXT:    s_add_u32 s0, s0, 64
7022; GCN-HSA-NEXT:    v_mov_b32_e32 v11, v7
7023; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v8, 16, v6
7024; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
7025; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
7026; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[0:3]
7027; GCN-HSA-NEXT:    v_bfe_i32 v10, v8, 0, 16
7028; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v4
7029; GCN-HSA-NEXT:    v_bfe_i32 v0, v4, 0, 16
7030; GCN-HSA-NEXT:    v_bfe_i32 v8, v6, 0, 16
7031; GCN-HSA-NEXT:    v_ashr_i64 v[6:7], v[6:7], 48
7032; GCN-HSA-NEXT:    v_bfe_i32 v4, v11, 0, 16
7033; GCN-HSA-NEXT:    v_mov_b32_e32 v15, s3
7034; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s1
7035; GCN-HSA-NEXT:    v_bfe_i32 v2, v1, 0, 16
7036; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v5, 31, v4
7037; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s2
7038; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s0
7039; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
7040; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
7041; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
7042; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
7043; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[4:7]
7044; GCN-HSA-NEXT:    flat_store_dwordx4 v[14:15], v[8:11]
7045; GCN-HSA-NEXT:    flat_store_dwordx4 v[20:21], v[0:3]
7046; GCN-HSA-NEXT:    s_endpgm
7047;
7048; GCN-NOHSA-VI-LABEL: global_sextload_v16i16_to_v16i64:
7049; GCN-NOHSA-VI:       ; %bb.0:
7050; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
7051; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
7052; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
7053; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s2
7054; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s3
7055; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
7056; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s6
7057; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s7
7058; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0
7059; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
7060; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
7061; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
7062; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(1)
7063; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v8, v0, 0, 16
7064; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
7065; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v9, v7
7066; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v7, 16, v7
7067; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v9, v9, 0, 16
7068; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v11, v7, 0, 16
7069; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v10, 31, v9
7070; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
7071; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:112
7072; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
7073; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v9, v6, 0, 16
7074; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v6, 16, v6
7075; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v11, v6, 0, 16
7076; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v10, 31, v9
7077; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
7078; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:96
7079; GCN-NOHSA-VI-NEXT:    s_nop 0
7080; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v9, v5, 0, 16
7081; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v5
7082; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v11, v5, 0, 16
7083; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v10, 31, v9
7084; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
7085; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:80
7086; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v2
7087; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v12, v1, 0, 16
7088; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
7089; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v14, v1, 0, 16
7090; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, v3
7091; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v16, v1, 0, 16
7092; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v1, 16, v4
7093; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v3
7094; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v4, v4, 0, 16
7095; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v6, v1, 0, 16
7096; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v10, v0, 0, 16
7097; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v2, 0, 16
7098; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v5, 0, 16
7099; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v18, v3, 0, 16
7100; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v5, 31, v4
7101; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v7, 31, v6
7102; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
7103; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v13, 31, v12
7104; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
7105; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
7106; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
7107; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
7108; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v17, 31, v16
7109; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v19, 31, v18
7110; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:64
7111; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:48
7112; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:32
7113; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:16
7114; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0
7115; GCN-NOHSA-VI-NEXT:    s_endpgm
7116;
7117; EG-LABEL: global_sextload_v16i16_to_v16i64:
7118; EG:       ; %bb.0:
7119; EG-NEXT:    ALU 0, @16, KC0[CB0:0-32], KC1[]
7120; EG-NEXT:    TEX 1 @12
7121; EG-NEXT:    ALU 65, @17, KC0[CB0:0-32], KC1[]
7122; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T12.X, 0
7123; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T20.X, 0
7124; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T11.XYZW, T18.X, 0
7125; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T17.X, 0
7126; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T16.X, 0
7127; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T15.X, 0
7128; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T14.X, 0
7129; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T13.X, 1
7130; EG-NEXT:    CF_END
7131; EG-NEXT:    Fetch clause starting at 12:
7132; EG-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 16, #1
7133; EG-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 0, #1
7134; EG-NEXT:    ALU clause starting at 16:
7135; EG-NEXT:     MOV * T11.X, KC0[2].Z,
7136; EG-NEXT:    ALU clause starting at 17:
7137; EG-NEXT:     LSHR T13.X, KC0[2].Y, literal.x,
7138; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7139; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7140; EG-NEXT:     LSHR T14.X, PV.W, literal.x,
7141; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7142; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
7143; EG-NEXT:     LSHR T15.X, PV.W, literal.x,
7144; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7145; EG-NEXT:    2(2.802597e-45), 48(6.726233e-44)
7146; EG-NEXT:     LSHR T16.X, PV.W, literal.x,
7147; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7148; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
7149; EG-NEXT:     LSHR T17.X, PV.W, literal.x,
7150; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7151; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
7152; EG-NEXT:     LSHR T18.X, PV.W, literal.x,
7153; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.y,
7154; EG-NEXT:     ASHR * T19.W, T11.X, literal.z,
7155; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
7156; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
7157; EG-NEXT:     LSHR T20.X, PV.W, literal.x,
7158; EG-NEXT:     ASHR T19.Z, T11.X, literal.y,
7159; EG-NEXT:     ASHR * T21.W, T11.Y, literal.z,
7160; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7161; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
7162; EG-NEXT:     BFE_INT T19.X, T11.X, 0.0, literal.x,
7163; EG-NEXT:     ASHR T21.Z, T11.Y, literal.x,
7164; EG-NEXT:     ASHR * T22.W, T11.Z, literal.y,
7165; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7166; EG-NEXT:     BFE_INT T21.X, T11.Y, 0.0, literal.x,
7167; EG-NEXT:     ASHR T19.Y, PV.X, literal.y,
7168; EG-NEXT:     ASHR T22.Z, T11.Z, literal.x,
7169; EG-NEXT:     ASHR * T23.W, T11.W, literal.y,
7170; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7171; EG-NEXT:     BFE_INT T22.X, T11.Z, 0.0, literal.x,
7172; EG-NEXT:     ASHR T21.Y, PV.X, literal.y,
7173; EG-NEXT:     ASHR T23.Z, T11.W, literal.x,
7174; EG-NEXT:     ASHR * T24.W, T12.X, literal.y,
7175; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7176; EG-NEXT:     BFE_INT T23.X, T11.W, 0.0, literal.x,
7177; EG-NEXT:     ASHR T22.Y, PV.X, literal.y,
7178; EG-NEXT:     ASHR T24.Z, T12.X, literal.x,
7179; EG-NEXT:     ASHR * T11.W, T12.Y, literal.y,
7180; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7181; EG-NEXT:     BFE_INT T24.X, T12.X, 0.0, literal.x,
7182; EG-NEXT:     ASHR T23.Y, PV.X, literal.y,
7183; EG-NEXT:     ASHR T11.Z, T12.Y, literal.x,
7184; EG-NEXT:     ASHR * T25.W, T12.Z, literal.y,
7185; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7186; EG-NEXT:     BFE_INT T11.X, T12.Y, 0.0, literal.x,
7187; EG-NEXT:     ASHR T24.Y, PV.X, literal.y,
7188; EG-NEXT:     ASHR T25.Z, T12.Z, literal.x,
7189; EG-NEXT:     ASHR * T26.W, T12.W, literal.y,
7190; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7191; EG-NEXT:     BFE_INT T25.X, T12.Z, 0.0, literal.x,
7192; EG-NEXT:     ASHR T11.Y, PV.X, literal.y,
7193; EG-NEXT:     ASHR * T26.Z, T12.W, literal.x,
7194; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7195; EG-NEXT:     BFE_INT T26.X, T12.W, 0.0, literal.x,
7196; EG-NEXT:     ASHR T25.Y, PV.X, literal.y,
7197; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
7198; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7199; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
7200; EG-NEXT:     LSHR T12.X, PV.W, literal.x,
7201; EG-NEXT:     ASHR * T26.Y, PV.X, literal.y,
7202; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
7203;
7204; CM-LABEL: global_sextload_v16i16_to_v16i64:
7205; CM:       ; %bb.0:
7206; CM-NEXT:    ALU 0, @16, KC0[CB0:0-32], KC1[]
7207; CM-NEXT:    TEX 1 @12
7208; CM-NEXT:    ALU 65, @17, KC0[CB0:0-32], KC1[]
7209; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T12, T26.X
7210; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T25, T20.X
7211; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T24, T18.X
7212; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T23, T17.X
7213; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T11, T16.X
7214; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T22, T15.X
7215; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T21, T14.X
7216; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T19, T13.X
7217; CM-NEXT:    CF_END
7218; CM-NEXT:    Fetch clause starting at 12:
7219; CM-NEXT:     VTX_READ_128 T12.XYZW, T11.X, 0, #1
7220; CM-NEXT:     VTX_READ_128 T11.XYZW, T11.X, 16, #1
7221; CM-NEXT:    ALU clause starting at 16:
7222; CM-NEXT:     MOV * T11.X, KC0[2].Z,
7223; CM-NEXT:    ALU clause starting at 17:
7224; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
7225; CM-NEXT:    112(1.569454e-43), 0(0.000000e+00)
7226; CM-NEXT:     LSHR T13.X, PV.W, literal.x,
7227; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7228; CM-NEXT:    2(2.802597e-45), 96(1.345247e-43)
7229; CM-NEXT:     LSHR T14.X, PV.W, literal.x,
7230; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7231; CM-NEXT:    2(2.802597e-45), 80(1.121039e-43)
7232; CM-NEXT:     LSHR T15.X, PV.W, literal.x,
7233; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7234; CM-NEXT:    2(2.802597e-45), 64(8.968310e-44)
7235; CM-NEXT:     LSHR T16.X, PV.W, literal.x,
7236; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7237; CM-NEXT:    2(2.802597e-45), 48(6.726233e-44)
7238; CM-NEXT:     LSHR T17.X, PV.W, literal.x,
7239; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7240; CM-NEXT:    2(2.802597e-45), 32(4.484155e-44)
7241; CM-NEXT:     LSHR T18.X, PV.W, literal.x,
7242; CM-NEXT:     ADD_INT T0.Z, KC0[2].Y, literal.y,
7243; CM-NEXT:     ASHR * T19.W, T11.W, literal.z,
7244; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7245; CM-NEXT:    31(4.344025e-44), 0(0.000000e+00)
7246; CM-NEXT:     LSHR T20.X, PV.Z, literal.x,
7247; CM-NEXT:     ASHR T19.Z, T11.W, literal.y,
7248; CM-NEXT:     ASHR * T21.W, T11.Z, literal.z,
7249; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
7250; CM-NEXT:    31(4.344025e-44), 0(0.000000e+00)
7251; CM-NEXT:     BFE_INT T19.X, T11.W, 0.0, literal.x,
7252; CM-NEXT:     ASHR T21.Z, T11.Z, literal.x,
7253; CM-NEXT:     ASHR * T22.W, T11.Y, literal.y,
7254; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7255; CM-NEXT:     BFE_INT T21.X, T11.Z, 0.0, literal.x,
7256; CM-NEXT:     ASHR T19.Y, PV.X, literal.y,
7257; CM-NEXT:     ASHR T22.Z, T11.Y, literal.x,
7258; CM-NEXT:     ASHR * T11.W, T11.X, literal.y,
7259; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7260; CM-NEXT:     BFE_INT T22.X, T11.Y, 0.0, literal.x,
7261; CM-NEXT:     ASHR T21.Y, PV.X, literal.y,
7262; CM-NEXT:     ASHR T11.Z, T11.X, literal.x,
7263; CM-NEXT:     ASHR * T23.W, T12.W, literal.y,
7264; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7265; CM-NEXT:     BFE_INT T11.X, T11.X, 0.0, literal.x,
7266; CM-NEXT:     ASHR T22.Y, PV.X, literal.y,
7267; CM-NEXT:     ASHR T23.Z, T12.W, literal.x,
7268; CM-NEXT:     ASHR * T24.W, T12.Z, literal.y,
7269; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7270; CM-NEXT:     BFE_INT T23.X, T12.W, 0.0, literal.x,
7271; CM-NEXT:     ASHR T11.Y, PV.X, literal.y,
7272; CM-NEXT:     ASHR T24.Z, T12.Z, literal.x,
7273; CM-NEXT:     ASHR * T25.W, T12.Y, literal.y,
7274; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7275; CM-NEXT:     BFE_INT T24.X, T12.Z, 0.0, literal.x,
7276; CM-NEXT:     ASHR T23.Y, PV.X, literal.y,
7277; CM-NEXT:     ASHR T25.Z, T12.Y, literal.x,
7278; CM-NEXT:     ASHR * T12.W, T12.X, literal.y,
7279; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7280; CM-NEXT:     BFE_INT T25.X, T12.Y, 0.0, literal.x,
7281; CM-NEXT:     ASHR T24.Y, PV.X, literal.y,
7282; CM-NEXT:     ASHR * T12.Z, T12.X, literal.x,
7283; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7284; CM-NEXT:     BFE_INT T12.X, T12.X, 0.0, literal.x,
7285; CM-NEXT:     ASHR * T25.Y, PV.X, literal.y,
7286; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
7287; CM-NEXT:     LSHR T26.X, KC0[2].Y, literal.x,
7288; CM-NEXT:     ASHR * T12.Y, PV.X, literal.y,
7289; CM-NEXT:    2(2.802597e-45), 31(4.344025e-44)
7290  %load = load <16 x i16>, <16 x i16> addrspace(1)* %in
7291  %ext = sext <16 x i16> %load to <16 x i64>
7292  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
7293  ret void
7294}
7295
7296define amdgpu_kernel void @global_zextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 {
7297; GCN-NOHSA-SI-LABEL: global_zextload_v32i16_to_v32i64:
7298; GCN-NOHSA-SI:       ; %bb.0:
7299; GCN-NOHSA-SI-NEXT:    s_mov_b32 s12, SCRATCH_RSRC_DWORD0
7300; GCN-NOHSA-SI-NEXT:    s_mov_b32 s13, SCRATCH_RSRC_DWORD1
7301; GCN-NOHSA-SI-NEXT:    s_mov_b32 s14, -1
7302; GCN-NOHSA-SI-NEXT:    s_mov_b32 s15, 0xe8f000
7303; GCN-NOHSA-SI-NEXT:    s_add_u32 s12, s12, s3
7304; GCN-NOHSA-SI-NEXT:    s_addc_u32 s13, s13, 0
7305; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
7306; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
7307; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
7308; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, 0xffff
7309; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, 0
7310; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
7311; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
7312; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
7313; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
7314; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
7315; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[2:5], off, s[8:11], 0
7316; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[6:9], off, s[8:11], 0 offset:16
7317; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[10:13], off, s[8:11], 0 offset:32
7318; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[14:17], off, s[8:11], 0 offset:48
7319; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(3)
7320; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v23, 16, v3
7321; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v21, 16, v4
7322; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v2
7323; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v18, s0, v2
7324; GCN-NOHSA-SI-NEXT:    buffer_store_dword v18, off, s[12:15], 0 offset:4 ; 4-byte Folded Spill
7325; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
7326; GCN-NOHSA-SI-NEXT:    buffer_store_dword v19, off, s[12:15], 0 offset:8 ; 4-byte Folded Spill
7327; GCN-NOHSA-SI-NEXT:    buffer_store_dword v20, off, s[12:15], 0 offset:12 ; 4-byte Folded Spill
7328; GCN-NOHSA-SI-NEXT:    buffer_store_dword v21, off, s[12:15], 0 offset:16 ; 4-byte Folded Spill
7329; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(2)
7330; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v19, s0, v4
7331; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
7332; GCN-NOHSA-SI-NEXT:    buffer_store_dword v19, off, s[12:15], 0 offset:20 ; 4-byte Folded Spill
7333; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
7334; GCN-NOHSA-SI-NEXT:    buffer_store_dword v20, off, s[12:15], 0 offset:24 ; 4-byte Folded Spill
7335; GCN-NOHSA-SI-NEXT:    buffer_store_dword v21, off, s[12:15], 0 offset:28 ; 4-byte Folded Spill
7336; GCN-NOHSA-SI-NEXT:    buffer_store_dword v22, off, s[12:15], 0 offset:32 ; 4-byte Folded Spill
7337; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v4, s0, v3
7338; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v32, 16, v5
7339; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v30, s0, v5
7340; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v36, 16, v6
7341; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v34, s0, v6
7342; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v28, 16, v8
7343; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v26, s0, v8
7344; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v40, 16, v7
7345; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v38, s0, v7
7346; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v44, 16, v9
7347; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v42, s0, v9
7348; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v48, 16, v10
7349; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v46, s0, v10
7350; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v24, 16, v12
7351; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
7352; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v22, s0, v12
7353; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v52, 16, v11
7354; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v50, s0, v11
7355; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v56, 16, v13
7356; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v54, s0, v13
7357; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v17
7358; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v60, 16, v14
7359; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v58, s0, v14
7360; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v20, 16, v16
7361; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v18, s0, v16
7362; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v10, 16, v15
7363; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v8, s0, v15
7364; GCN-NOHSA-SI-NEXT:    v_and_b32_e32 v0, s0, v17
7365; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, v1
7366; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v9, v1
7367; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v11, v1
7368; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v55, v1
7369; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v57, v1
7370; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v51, v1
7371; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v53, v1
7372; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v43, v1
7373; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v45, v1
7374; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v39, v1
7375; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v41, v1
7376; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v31, v1
7377; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v33, v1
7378; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v6, v23
7379; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, v1
7380; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, v1
7381; GCN-NOHSA-SI-NEXT:    buffer_store_dword v4, off, s[12:15], 0 offset:36 ; 4-byte Folded Spill
7382; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
7383; GCN-NOHSA-SI-NEXT:    buffer_store_dword v5, off, s[12:15], 0 offset:40 ; 4-byte Folded Spill
7384; GCN-NOHSA-SI-NEXT:    buffer_store_dword v6, off, s[12:15], 0 offset:44 ; 4-byte Folded Spill
7385; GCN-NOHSA-SI-NEXT:    buffer_store_dword v7, off, s[12:15], 0 offset:48 ; 4-byte Folded Spill
7386; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v19, v1
7387; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v59, v1
7388; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v23, v1
7389; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v47, v1
7390; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v27, v1
7391; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v35, v1
7392; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
7393; GCN-NOHSA-SI-NEXT:    buffer_load_dword v4, off, s[12:15], 0 offset:20 ; 4-byte Folded Reload
7394; GCN-NOHSA-SI-NEXT:    buffer_load_dword v5, off, s[12:15], 0 offset:24 ; 4-byte Folded Reload
7395; GCN-NOHSA-SI-NEXT:    buffer_load_dword v6, off, s[12:15], 0 offset:28 ; 4-byte Folded Reload
7396; GCN-NOHSA-SI-NEXT:    buffer_load_dword v7, off, s[12:15], 0 offset:32 ; 4-byte Folded Reload
7397; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
7398; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v5, v1
7399; GCN-NOHSA-SI-NEXT:    buffer_load_dword v12, off, s[12:15], 0 offset:4 ; 4-byte Folded Reload
7400; GCN-NOHSA-SI-NEXT:    buffer_load_dword v13, off, s[12:15], 0 offset:8 ; 4-byte Folded Reload
7401; GCN-NOHSA-SI-NEXT:    buffer_load_dword v14, off, s[12:15], 0 offset:12 ; 4-byte Folded Reload
7402; GCN-NOHSA-SI-NEXT:    buffer_load_dword v15, off, s[12:15], 0 offset:16 ; 4-byte Folded Reload
7403; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
7404; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, v1
7405; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
7406; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
7407; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:240
7408; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v21, 0
7409; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v61, 0
7410; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v25, 0
7411; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
7412; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v0, v12
7413; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, v13
7414; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v2, v14
7415; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v3, 0
7416; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v7, 0
7417; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v37, 0
7418; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v29, 0
7419; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v49, 0
7420; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:208
7421; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[54:57], off, s[0:3], 0 offset:176
7422; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[50:53], off, s[0:3], 0 offset:144
7423; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[42:45], off, s[0:3], 0 offset:112
7424; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[38:41], off, s[0:3], 0 offset:80
7425; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[30:33], off, s[0:3], 0 offset:48
7426; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(5)
7427; GCN-NOHSA-SI-NEXT:    buffer_load_dword v8, off, s[12:15], 0 offset:36 ; 4-byte Folded Reload
7428; GCN-NOHSA-SI-NEXT:    buffer_load_dword v9, off, s[12:15], 0 offset:40 ; 4-byte Folded Reload
7429; GCN-NOHSA-SI-NEXT:    buffer_load_dword v10, off, s[12:15], 0 offset:44 ; 4-byte Folded Reload
7430; GCN-NOHSA-SI-NEXT:    buffer_load_dword v11, off, s[12:15], 0 offset:48 ; 4-byte Folded Reload
7431; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(0)
7432; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[8:11], off, s[0:3], 0 offset:16
7433; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[18:21], off, s[0:3], 0 offset:224
7434; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[58:61], off, s[0:3], 0 offset:192
7435; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[22:25], off, s[0:3], 0 offset:160
7436; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[46:49], off, s[0:3], 0 offset:128
7437; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[26:29], off, s[0:3], 0 offset:96
7438; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[34:37], off, s[0:3], 0 offset:64
7439; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:32
7440; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
7441; GCN-NOHSA-SI-NEXT:    s_endpgm
7442;
7443; GCN-HSA-LABEL: global_zextload_v32i16_to_v32i64:
7444; GCN-HSA:       ; %bb.0:
7445; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
7446; GCN-HSA-NEXT:    s_mov_b32 s18, 0xffff
7447; GCN-HSA-NEXT:    v_mov_b32_e32 v4, 0
7448; GCN-HSA-NEXT:    v_mov_b32_e32 v6, v4
7449; GCN-HSA-NEXT:    v_mov_b32_e32 v8, v4
7450; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
7451; GCN-HSA-NEXT:    s_add_u32 s4, s2, 16
7452; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
7453; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
7454; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
7455; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
7456; GCN-HSA-NEXT:    s_add_u32 s4, s2, 32
7457; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
7458; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s5
7459; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s4
7460; GCN-HSA-NEXT:    flat_load_dwordx4 v[9:12], v[9:10]
7461; GCN-HSA-NEXT:    v_mov_b32_e32 v14, s3
7462; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s2
7463; GCN-HSA-NEXT:    s_add_u32 s2, s2, 48
7464; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
7465; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s3
7466; GCN-HSA-NEXT:    flat_load_dwordx4 v[13:16], v[13:14]
7467; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s2
7468; GCN-HSA-NEXT:    flat_load_dwordx4 v[17:20], v[17:18]
7469; GCN-HSA-NEXT:    s_add_u32 s4, s0, 48
7470; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
7471; GCN-HSA-NEXT:    s_add_u32 s6, s0, 16
7472; GCN-HSA-NEXT:    s_addc_u32 s7, s1, 0
7473; GCN-HSA-NEXT:    s_add_u32 s8, s0, 0xf0
7474; GCN-HSA-NEXT:    s_addc_u32 s9, s1, 0
7475; GCN-HSA-NEXT:    s_add_u32 s10, s0, 0xd0
7476; GCN-HSA-NEXT:    s_addc_u32 s11, s1, 0
7477; GCN-HSA-NEXT:    s_add_u32 s12, s0, 0xb0
7478; GCN-HSA-NEXT:    s_addc_u32 s13, s1, 0
7479; GCN-HSA-NEXT:    s_add_u32 s14, s0, 0x90
7480; GCN-HSA-NEXT:    s_addc_u32 s15, s1, 0
7481; GCN-HSA-NEXT:    s_add_u32 s16, s0, 0x70
7482; GCN-HSA-NEXT:    s_addc_u32 s17, s1, 0
7483; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s17
7484; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x50
7485; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s16
7486; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
7487; GCN-HSA-NEXT:    s_waitcnt vmcnt(3)
7488; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v3
7489; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v3
7490; GCN-HSA-NEXT:    flat_store_dwordx4 v[21:22], v[5:8]
7491; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s3
7492; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v1
7493; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v1
7494; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s2
7495; GCN-HSA-NEXT:    flat_store_dwordx4 v[21:22], v[5:8]
7496; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s13
7497; GCN-HSA-NEXT:    s_waitcnt vmcnt(4)
7498; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v12
7499; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v12
7500; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s12
7501; GCN-HSA-NEXT:    flat_store_dwordx4 v[21:22], v[5:8]
7502; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s15
7503; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v10
7504; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v10
7505; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s14
7506; GCN-HSA-NEXT:    flat_store_dwordx4 v[21:22], v[5:8]
7507; GCN-HSA-NEXT:    v_mov_b32_e32 v22, s7
7508; GCN-HSA-NEXT:    s_waitcnt vmcnt(5)
7509; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v14
7510; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v14
7511; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s6
7512; GCN-HSA-NEXT:    flat_store_dwordx4 v[21:22], v[5:8]
7513; GCN-HSA-NEXT:    s_add_u32 s2, s0, 32
7514; GCN-HSA-NEXT:    s_waitcnt vmcnt(5)
7515; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v20
7516; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v20
7517; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s9
7518; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s8
7519; GCN-HSA-NEXT:    flat_store_dwordx4 v[20:21], v[5:8]
7520; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s11
7521; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v18
7522; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v18
7523; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s10
7524; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
7525; GCN-HSA-NEXT:    flat_store_dwordx4 v[20:21], v[5:8]
7526; GCN-HSA-NEXT:    v_mov_b32_e32 v10, 0
7527; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v13
7528; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v13
7529; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s1
7530; GCN-HSA-NEXT:    s_add_u32 s6, s0, 0xe0
7531; GCN-HSA-NEXT:    v_mov_b32_e32 v8, v10
7532; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s0
7533; GCN-HSA-NEXT:    s_addc_u32 s7, s1, 0
7534; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[5:8]
7535; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s7
7536; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s6
7537; GCN-HSA-NEXT:    s_add_u32 s6, s0, 0xc0
7538; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v19
7539; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v19
7540; GCN-HSA-NEXT:    s_addc_u32 s7, s1, 0
7541; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[5:8]
7542; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s7
7543; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s6
7544; GCN-HSA-NEXT:    s_add_u32 s6, s0, 0xa0
7545; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v17
7546; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v17
7547; GCN-HSA-NEXT:    s_addc_u32 s7, s1, 0
7548; GCN-HSA-NEXT:    flat_store_dwordx4 v[12:13], v[5:8]
7549; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v13, 16, v0
7550; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v11
7551; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v11
7552; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s7
7553; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s6
7554; GCN-HSA-NEXT:    s_add_u32 s6, s0, 0x80
7555; GCN-HSA-NEXT:    s_addc_u32 s7, s1, 0
7556; GCN-HSA-NEXT:    flat_store_dwordx4 v[11:12], v[5:8]
7557; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s7
7558; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v7, 16, v9
7559; GCN-HSA-NEXT:    v_and_b32_e32 v5, s18, v9
7560; GCN-HSA-NEXT:    v_mov_b32_e32 v11, s6
7561; GCN-HSA-NEXT:    flat_store_dwordx4 v[11:12], v[5:8]
7562; GCN-HSA-NEXT:    v_and_b32_e32 v11, s18, v0
7563; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
7564; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v5, 16, v16
7565; GCN-HSA-NEXT:    v_and_b32_e32 v3, s18, v16
7566; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
7567; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]
7568; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
7569; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v9, 16, v15
7570; GCN-HSA-NEXT:    v_and_b32_e32 v7, s18, v15
7571; GCN-HSA-NEXT:    v_mov_b32_e32 v8, v4
7572; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
7573; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x60
7574; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[7:10]
7575; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
7576; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
7577; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v19, 16, v2
7578; GCN-HSA-NEXT:    v_and_b32_e32 v17, s18, v2
7579; GCN-HSA-NEXT:    v_mov_b32_e32 v18, v4
7580; GCN-HSA-NEXT:    v_mov_b32_e32 v20, v10
7581; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
7582; GCN-HSA-NEXT:    s_add_u32 s0, s0, 64
7583; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[17:20]
7584; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
7585; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s0
7586; GCN-HSA-NEXT:    v_mov_b32_e32 v12, v4
7587; GCN-HSA-NEXT:    v_mov_b32_e32 v14, v10
7588; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s1
7589; GCN-HSA-NEXT:    flat_store_dwordx4 v[0:1], v[11:14]
7590; GCN-HSA-NEXT:    s_endpgm
7591;
7592; GCN-NOHSA-VI-LABEL: global_zextload_v32i16_to_v32i64:
7593; GCN-NOHSA-VI:       ; %bb.0:
7594; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
7595; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
7596; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
7597; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s2
7598; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s3
7599; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
7600; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s6
7601; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s7
7602; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[1:4], off, s[8:11], 0
7603; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[5:8], off, s[8:11], 0 offset:16
7604; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[31:34], off, s[8:11], 0 offset:32
7605; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[35:38], off, s[8:11], 0 offset:48
7606; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, 0xffff
7607; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v57, 0
7608; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
7609; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v12, 0
7610; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v16, 0
7611; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v24, 0
7612; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v20, 0
7613; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(3)
7614; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v0, s0, v2
7615; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v9, s0, v1
7616; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(0)
7617; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v48, s0, v36
7618; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v50, 16, v36
7619; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v54, s0, v38
7620; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v56, 16, v38
7621; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v36, s0, v37
7622; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v38, 16, v37
7623; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v37, 0
7624; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v13, s0, v4
7625; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v15, 16, v4
7626; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v17, s0, v3
7627; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v4, s0, v6
7628; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v21, s0, v5
7629; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v25, s0, v8
7630; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v28, s0, v7
7631; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v39, s0, v32
7632; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v41, 16, v32
7633; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v42, s0, v31
7634; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v32, s0, v34
7635; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v45, s0, v33
7636; GCN-NOHSA-VI-NEXT:    v_and_b32_e32 v51, s0, v35
7637; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v55, v37
7638; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
7639; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v53, 16, v35
7640; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[54:57], off, s[0:3], 0 offset:240
7641; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v52, v37
7642; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v54, 0
7643; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[51:54], off, s[0:3], 0 offset:192
7644; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v49, v37
7645; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v51, 0
7646; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v47, 16, v33
7647; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[48:51], off, s[0:3], 0 offset:208
7648; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v46, v37
7649; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v48, 0
7650; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v30, 16, v7
7651; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v44, 16, v31
7652; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[45:48], off, s[0:3], 0 offset:160
7653; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v43, v37
7654; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v45, 0
7655; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v31, 0
7656; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v29, v37
7657; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v2
7658; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v11, 16, v1
7659; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v19, 16, v3
7660; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v27, 16, v8
7661; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v34, 16, v34
7662; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v35, 0
7663; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v33, v37
7664; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[42:45], off, s[0:3], 0 offset:128
7665; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v40, v37
7666; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v42, 0
7667; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[28:31], off, s[0:3], 0 offset:96
7668; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v3, 0
7669; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v28, 0
7670; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v26, v37
7671; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v14, v37
7672; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v10, v37
7673; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v1, v37
7674; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v6, 16, v6
7675; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v23, 16, v5
7676; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[32:35], off, s[0:3], 0 offset:176
7677; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[39:42], off, s[0:3], 0 offset:144
7678; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v7, 0
7679; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v39, 0
7680; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v22, v37
7681; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v5, v37
7682; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v18, v37
7683; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[25:28], off, s[0:3], 0 offset:112
7684; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[21:24], off, s[0:3], 0 offset:64
7685; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:80
7686; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[36:39], off, s[0:3], 0 offset:224
7687; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[17:20], off, s[0:3], 0 offset:32
7688; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:48
7689; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[9:12], off, s[0:3], 0
7690; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:16
7691; GCN-NOHSA-VI-NEXT:    s_endpgm
7692;
7693; EG-LABEL: global_zextload_v32i16_to_v32i64:
7694; EG:       ; %bb.0:
7695; EG-NEXT:    ALU 0, @30, KC0[CB0:0-32], KC1[]
7696; EG-NEXT:    TEX 2 @22
7697; EG-NEXT:    ALU 33, @31, KC0[], KC1[]
7698; EG-NEXT:    TEX 0 @28
7699; EG-NEXT:    ALU 93, @65, KC0[CB0:0-32], KC1[]
7700; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T23.XYZW, T50.X, 0
7701; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T24.XYZW, T49.X, 0
7702; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T25.XYZW, T48.X, 0
7703; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T47.X, 0
7704; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T26.XYZW, T46.X, 0
7705; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T27.XYZW, T45.X, 0
7706; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T28.XYZW, T44.X, 0
7707; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T22.XYZW, T43.X, 0
7708; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T42.X, 0
7709; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T30.XYZW, T41.X, 0
7710; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T31.XYZW, T40.X, 0
7711; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T21.XYZW, T39.X, 0
7712; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T32.XYZW, T38.X, 0
7713; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T33.XYZW, T37.X, 0
7714; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T34.XYZW, T36.X, 0
7715; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T29.XYZW, T35.X, 1
7716; EG-NEXT:    CF_END
7717; EG-NEXT:    Fetch clause starting at 22:
7718; EG-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 48, #1
7719; EG-NEXT:     VTX_READ_128 T21.XYZW, T19.X, 16, #1
7720; EG-NEXT:     VTX_READ_128 T22.XYZW, T19.X, 32, #1
7721; EG-NEXT:    Fetch clause starting at 28:
7722; EG-NEXT:     VTX_READ_128 T29.XYZW, T19.X, 0, #1
7723; EG-NEXT:    ALU clause starting at 30:
7724; EG-NEXT:     MOV * T19.X, KC0[2].Z,
7725; EG-NEXT:    ALU clause starting at 31:
7726; EG-NEXT:     LSHR * T23.Z, T20.Z, literal.x,
7727; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7728; EG-NEXT:     AND_INT T23.X, T20.Z, literal.x,
7729; EG-NEXT:     MOV T23.Y, 0.0,
7730; EG-NEXT:     LSHR T24.Z, T20.W, literal.y,
7731; EG-NEXT:     AND_INT * T24.X, T20.W, literal.x,
7732; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7733; EG-NEXT:     MOV T24.Y, 0.0,
7734; EG-NEXT:     LSHR * T25.Z, T20.X, literal.x,
7735; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7736; EG-NEXT:     AND_INT T25.X, T20.X, literal.x,
7737; EG-NEXT:     MOV T25.Y, 0.0,
7738; EG-NEXT:     LSHR T20.Z, T20.Y, literal.y,
7739; EG-NEXT:     AND_INT * T20.X, T20.Y, literal.x,
7740; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7741; EG-NEXT:     MOV T20.Y, 0.0,
7742; EG-NEXT:     LSHR * T26.Z, T22.Z, literal.x,
7743; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7744; EG-NEXT:     AND_INT T26.X, T22.Z, literal.x,
7745; EG-NEXT:     MOV T26.Y, 0.0,
7746; EG-NEXT:     LSHR T27.Z, T22.W, literal.y,
7747; EG-NEXT:     AND_INT * T27.X, T22.W, literal.x,
7748; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7749; EG-NEXT:     MOV T27.Y, 0.0,
7750; EG-NEXT:     LSHR * T28.Z, T22.X, literal.x,
7751; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7752; EG-NEXT:     AND_INT T28.X, T22.X, literal.x,
7753; EG-NEXT:     MOV T28.Y, 0.0,
7754; EG-NEXT:     LSHR T22.Z, T22.Y, literal.y,
7755; EG-NEXT:     AND_INT * T22.X, T22.Y, literal.x,
7756; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7757; EG-NEXT:     MOV T22.Y, 0.0,
7758; EG-NEXT:     LSHR * T19.Z, T21.Z, literal.x,
7759; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7760; EG-NEXT:    ALU clause starting at 65:
7761; EG-NEXT:     AND_INT T19.X, T21.Z, literal.x,
7762; EG-NEXT:     MOV T19.Y, 0.0,
7763; EG-NEXT:     LSHR T30.Z, T21.W, literal.y,
7764; EG-NEXT:     AND_INT * T30.X, T21.W, literal.x,
7765; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7766; EG-NEXT:     MOV T30.Y, 0.0,
7767; EG-NEXT:     LSHR * T31.Z, T21.X, literal.x,
7768; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7769; EG-NEXT:     AND_INT T31.X, T21.X, literal.x,
7770; EG-NEXT:     MOV T31.Y, 0.0,
7771; EG-NEXT:     LSHR T21.Z, T21.Y, literal.y,
7772; EG-NEXT:     AND_INT * T21.X, T21.Y, literal.x,
7773; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7774; EG-NEXT:     MOV T21.Y, 0.0,
7775; EG-NEXT:     LSHR * T32.Z, T29.Z, literal.x,
7776; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7777; EG-NEXT:     AND_INT T32.X, T29.Z, literal.x,
7778; EG-NEXT:     MOV T32.Y, 0.0,
7779; EG-NEXT:     LSHR T33.Z, T29.W, literal.y,
7780; EG-NEXT:     AND_INT * T33.X, T29.W, literal.x,
7781; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7782; EG-NEXT:     MOV T33.Y, 0.0,
7783; EG-NEXT:     LSHR * T34.Z, T29.X, literal.x,
7784; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7785; EG-NEXT:     AND_INT T34.X, T29.X, literal.x,
7786; EG-NEXT:     MOV T34.Y, 0.0,
7787; EG-NEXT:     LSHR T29.Z, T29.Y, literal.y,
7788; EG-NEXT:     AND_INT * T29.X, T29.Y, literal.x,
7789; EG-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7790; EG-NEXT:     MOV T29.Y, 0.0,
7791; EG-NEXT:     MOV T23.W, 0.0,
7792; EG-NEXT:     MOV * T24.W, 0.0,
7793; EG-NEXT:     MOV T25.W, 0.0,
7794; EG-NEXT:     MOV * T20.W, 0.0,
7795; EG-NEXT:     MOV T26.W, 0.0,
7796; EG-NEXT:     MOV * T27.W, 0.0,
7797; EG-NEXT:     MOV T28.W, 0.0,
7798; EG-NEXT:     MOV * T22.W, 0.0,
7799; EG-NEXT:     MOV T19.W, 0.0,
7800; EG-NEXT:     MOV * T30.W, 0.0,
7801; EG-NEXT:     MOV T31.W, 0.0,
7802; EG-NEXT:     MOV * T21.W, 0.0,
7803; EG-NEXT:     MOV T32.W, 0.0,
7804; EG-NEXT:     MOV * T33.W, 0.0,
7805; EG-NEXT:     MOV T34.W, 0.0,
7806; EG-NEXT:     MOV * T29.W, 0.0,
7807; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
7808; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7809; EG-NEXT:     LSHR T35.X, PV.W, literal.x,
7810; EG-NEXT:     LSHR * T36.X, KC0[2].Y, literal.x,
7811; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7812; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
7813; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
7814; EG-NEXT:     LSHR T37.X, PV.W, literal.x,
7815; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7816; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
7817; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
7818; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7819; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
7820; EG-NEXT:     LSHR T39.X, PV.W, literal.x,
7821; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7822; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
7823; EG-NEXT:     LSHR T40.X, PV.W, literal.x,
7824; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7825; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
7826; EG-NEXT:     LSHR T41.X, PV.W, literal.x,
7827; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7828; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
7829; EG-NEXT:     LSHR T42.X, PV.W, literal.x,
7830; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7831; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
7832; EG-NEXT:     LSHR T43.X, PV.W, literal.x,
7833; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7834; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
7835; EG-NEXT:     LSHR T44.X, PV.W, literal.x,
7836; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7837; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
7838; EG-NEXT:     LSHR T45.X, PV.W, literal.x,
7839; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7840; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
7841; EG-NEXT:     LSHR T46.X, PV.W, literal.x,
7842; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7843; EG-NEXT:    2(2.802597e-45), 208(2.914701e-43)
7844; EG-NEXT:     LSHR T47.X, PV.W, literal.x,
7845; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7846; EG-NEXT:    2(2.802597e-45), 192(2.690493e-43)
7847; EG-NEXT:     LSHR T48.X, PV.W, literal.x,
7848; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7849; EG-NEXT:    2(2.802597e-45), 240(3.363116e-43)
7850; EG-NEXT:     LSHR T49.X, PV.W, literal.x,
7851; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7852; EG-NEXT:    2(2.802597e-45), 224(3.138909e-43)
7853; EG-NEXT:     LSHR * T50.X, PV.W, literal.x,
7854; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
7855;
7856; CM-LABEL: global_zextload_v32i16_to_v32i64:
7857; CM:       ; %bb.0:
7858; CM-NEXT:    ALU 0, @30, KC0[CB0:0-32], KC1[]
7859; CM-NEXT:    TEX 2 @22
7860; CM-NEXT:    ALU 33, @31, KC0[], KC1[]
7861; CM-NEXT:    TEX 0 @28
7862; CM-NEXT:    ALU 94, @65, KC0[CB0:0-32], KC1[]
7863; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T23, T50.X
7864; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T24, T49.X
7865; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T25, T48.X
7866; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T26, T47.X
7867; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T20, T46.X
7868; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T27, T45.X
7869; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T28, T44.X
7870; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T29, T43.X
7871; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T19, T42.X
7872; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T30, T41.X
7873; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T31, T40.X
7874; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T32, T39.X
7875; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T21, T38.X
7876; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T33, T37.X
7877; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T34, T36.X
7878; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T35, T22.X
7879; CM-NEXT:    CF_END
7880; CM-NEXT:    Fetch clause starting at 22:
7881; CM-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 0, #1
7882; CM-NEXT:     VTX_READ_128 T21.XYZW, T19.X, 32, #1
7883; CM-NEXT:     VTX_READ_128 T22.XYZW, T19.X, 16, #1
7884; CM-NEXT:    Fetch clause starting at 28:
7885; CM-NEXT:     VTX_READ_128 T22.XYZW, T19.X, 48, #1
7886; CM-NEXT:    ALU clause starting at 30:
7887; CM-NEXT:     MOV * T19.X, KC0[2].Z,
7888; CM-NEXT:    ALU clause starting at 31:
7889; CM-NEXT:     LSHR * T23.Z, T20.Y, literal.x,
7890; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
7891; CM-NEXT:     AND_INT T23.X, T20.Y, literal.x,
7892; CM-NEXT:     MOV T23.Y, 0.0,
7893; CM-NEXT:     LSHR * T24.Z, T20.X, literal.y,
7894; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7895; CM-NEXT:     AND_INT T24.X, T20.X, literal.x,
7896; CM-NEXT:     MOV T24.Y, 0.0,
7897; CM-NEXT:     LSHR * T25.Z, T20.W, literal.y,
7898; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7899; CM-NEXT:     AND_INT T25.X, T20.W, literal.x,
7900; CM-NEXT:     MOV T25.Y, 0.0,
7901; CM-NEXT:     LSHR * T26.Z, T20.Z, literal.y,
7902; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7903; CM-NEXT:     AND_INT T26.X, T20.Z, literal.x,
7904; CM-NEXT:     MOV T26.Y, 0.0,
7905; CM-NEXT:     LSHR * T20.Z, T22.Y, literal.y,
7906; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7907; CM-NEXT:     AND_INT T20.X, T22.Y, literal.x,
7908; CM-NEXT:     MOV T20.Y, 0.0,
7909; CM-NEXT:     LSHR * T27.Z, T22.X, literal.y,
7910; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7911; CM-NEXT:     AND_INT T27.X, T22.X, literal.x,
7912; CM-NEXT:     MOV T27.Y, 0.0,
7913; CM-NEXT:     LSHR * T28.Z, T22.W, literal.y,
7914; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7915; CM-NEXT:     AND_INT T28.X, T22.W, literal.x,
7916; CM-NEXT:     MOV T28.Y, 0.0,
7917; CM-NEXT:     LSHR * T29.Z, T22.Z, literal.y,
7918; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7919; CM-NEXT:     AND_INT T29.X, T22.Z, literal.x,
7920; CM-NEXT:     MOV T29.Y, 0.0,
7921; CM-NEXT:     LSHR * T19.Z, T21.Y, literal.y,
7922; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7923; CM-NEXT:    ALU clause starting at 65:
7924; CM-NEXT:     AND_INT T19.X, T21.Y, literal.x,
7925; CM-NEXT:     MOV T19.Y, 0.0,
7926; CM-NEXT:     LSHR * T30.Z, T21.X, literal.y,
7927; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7928; CM-NEXT:     AND_INT T30.X, T21.X, literal.x,
7929; CM-NEXT:     MOV T30.Y, 0.0,
7930; CM-NEXT:     LSHR * T31.Z, T21.W, literal.y,
7931; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7932; CM-NEXT:     AND_INT T31.X, T21.W, literal.x,
7933; CM-NEXT:     MOV T31.Y, 0.0,
7934; CM-NEXT:     LSHR * T32.Z, T21.Z, literal.y,
7935; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7936; CM-NEXT:     AND_INT T32.X, T21.Z, literal.x,
7937; CM-NEXT:     MOV T32.Y, 0.0,
7938; CM-NEXT:     LSHR * T21.Z, T22.Y, literal.y,
7939; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7940; CM-NEXT:     AND_INT T21.X, T22.Y, literal.x,
7941; CM-NEXT:     MOV T21.Y, 0.0,
7942; CM-NEXT:     LSHR * T33.Z, T22.X, literal.y,
7943; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7944; CM-NEXT:     AND_INT T33.X, T22.X, literal.x,
7945; CM-NEXT:     MOV T33.Y, 0.0,
7946; CM-NEXT:     LSHR * T34.Z, T22.W, literal.y,
7947; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7948; CM-NEXT:     AND_INT T34.X, T22.W, literal.x,
7949; CM-NEXT:     MOV T34.Y, 0.0,
7950; CM-NEXT:     LSHR * T35.Z, T22.Z, literal.y,
7951; CM-NEXT:    65535(9.183409e-41), 16(2.242078e-44)
7952; CM-NEXT:     AND_INT T35.X, T22.Z, literal.x,
7953; CM-NEXT:     MOV T35.Y, 0.0,
7954; CM-NEXT:     MOV * T23.W, 0.0,
7955; CM-NEXT:    65535(9.183409e-41), 0(0.000000e+00)
7956; CM-NEXT:     MOV * T24.W, 0.0,
7957; CM-NEXT:     MOV * T25.W, 0.0,
7958; CM-NEXT:     MOV * T26.W, 0.0,
7959; CM-NEXT:     MOV * T20.W, 0.0,
7960; CM-NEXT:     MOV * T27.W, 0.0,
7961; CM-NEXT:     MOV * T28.W, 0.0,
7962; CM-NEXT:     MOV * T29.W, 0.0,
7963; CM-NEXT:     MOV * T19.W, 0.0,
7964; CM-NEXT:     MOV * T30.W, 0.0,
7965; CM-NEXT:     MOV * T31.W, 0.0,
7966; CM-NEXT:     MOV * T32.W, 0.0,
7967; CM-NEXT:     MOV * T21.W, 0.0,
7968; CM-NEXT:     MOV * T33.W, 0.0,
7969; CM-NEXT:     MOV * T34.W, 0.0,
7970; CM-NEXT:     MOV * T35.W, 0.0,
7971; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
7972; CM-NEXT:    224(3.138909e-43), 0(0.000000e+00)
7973; CM-NEXT:     LSHR T22.X, PV.W, literal.x,
7974; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7975; CM-NEXT:    2(2.802597e-45), 240(3.363116e-43)
7976; CM-NEXT:     LSHR T36.X, PV.W, literal.x,
7977; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7978; CM-NEXT:    2(2.802597e-45), 192(2.690493e-43)
7979; CM-NEXT:     LSHR T37.X, PV.W, literal.x,
7980; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7981; CM-NEXT:    2(2.802597e-45), 208(2.914701e-43)
7982; CM-NEXT:     LSHR T38.X, PV.W, literal.x,
7983; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7984; CM-NEXT:    2(2.802597e-45), 160(2.242078e-43)
7985; CM-NEXT:     LSHR T39.X, PV.W, literal.x,
7986; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7987; CM-NEXT:    2(2.802597e-45), 176(2.466285e-43)
7988; CM-NEXT:     LSHR T40.X, PV.W, literal.x,
7989; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7990; CM-NEXT:    2(2.802597e-45), 128(1.793662e-43)
7991; CM-NEXT:     LSHR T41.X, PV.W, literal.x,
7992; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7993; CM-NEXT:    2(2.802597e-45), 144(2.017870e-43)
7994; CM-NEXT:     LSHR T42.X, PV.W, literal.x,
7995; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7996; CM-NEXT:    2(2.802597e-45), 96(1.345247e-43)
7997; CM-NEXT:     LSHR T43.X, PV.W, literal.x,
7998; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
7999; CM-NEXT:    2(2.802597e-45), 112(1.569454e-43)
8000; CM-NEXT:     LSHR T44.X, PV.W, literal.x,
8001; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8002; CM-NEXT:    2(2.802597e-45), 64(8.968310e-44)
8003; CM-NEXT:     LSHR T45.X, PV.W, literal.x,
8004; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8005; CM-NEXT:    2(2.802597e-45), 80(1.121039e-43)
8006; CM-NEXT:     LSHR T46.X, PV.W, literal.x,
8007; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8008; CM-NEXT:    2(2.802597e-45), 32(4.484155e-44)
8009; CM-NEXT:     LSHR T47.X, PV.W, literal.x,
8010; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8011; CM-NEXT:    2(2.802597e-45), 48(6.726233e-44)
8012; CM-NEXT:     LSHR * T48.X, PV.W, literal.x,
8013; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
8014; CM-NEXT:     LSHR T49.X, KC0[2].Y, literal.x,
8015; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8016; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
8017; CM-NEXT:     LSHR * T50.X, PV.W, literal.x,
8018; CM-NEXT:    2(2.802597e-45), 0(0.000000e+00)
8019  %load = load <32 x i16>, <32 x i16> addrspace(1)* %in
8020  %ext = zext <32 x i16> %load to <32 x i64>
8021  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
8022  ret void
8023}
8024
8025define amdgpu_kernel void @global_sextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(1)* %in) #0 {
8026; GCN-NOHSA-SI-LABEL: global_sextload_v32i16_to_v32i64:
8027; GCN-NOHSA-SI:       ; %bb.0:
8028; GCN-NOHSA-SI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x9
8029; GCN-NOHSA-SI-NEXT:    s_mov_b32 s3, 0xf000
8030; GCN-NOHSA-SI-NEXT:    s_mov_b32 s2, -1
8031; GCN-NOHSA-SI-NEXT:    s_mov_b32 s10, s2
8032; GCN-NOHSA-SI-NEXT:    s_mov_b32 s11, s3
8033; GCN-NOHSA-SI-NEXT:    s_waitcnt lgkmcnt(0)
8034; GCN-NOHSA-SI-NEXT:    s_mov_b32 s8, s6
8035; GCN-NOHSA-SI-NEXT:    s_mov_b32 s9, s7
8036; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48
8037; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:32
8038; GCN-NOHSA-SI-NEXT:    s_mov_b32 s0, s4
8039; GCN-NOHSA-SI-NEXT:    s_mov_b32 s1, s5
8040; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[8:11], off, s[8:11], 0
8041; GCN-NOHSA-SI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16
8042; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(3)
8043; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v16, v15
8044; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v16, v16, 0, 16
8045; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[18:19], v[14:15], 48
8046; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v17, 31, v16
8047; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:240
8048; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8049; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[17:18], v[12:13], 48
8050; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v13, 0, 16
8051; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
8052; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:208
8053; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(4)
8054; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v13, v3
8055; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8056; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v13, 0, 16
8057; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[17:18], v[2:3], 48
8058; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
8059; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:176
8060; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8061; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[17:18], v[0:1], 48
8062; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v1, 0, 16
8063; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
8064; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:144
8065; GCN-NOHSA-SI-NEXT:    s_waitcnt vmcnt(4)
8066; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, v7
8067; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8068; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v1, 0, 16
8069; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[17:18], v[6:7], 48
8070; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
8071; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:112
8072; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8073; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[17:18], v[4:5], 48
8074; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v5, 0, 16
8075; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
8076; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:80
8077; GCN-NOHSA-SI-NEXT:    v_mov_b32_e32 v1, v11
8078; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8079; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v1, 0, 16
8080; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[17:18], v[10:11], 48
8081; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
8082; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:48
8083; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8084; GCN-NOHSA-SI-NEXT:    v_ashr_i64 v[17:18], v[8:9], 48
8085; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v9, 0, 16
8086; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
8087; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[15:18], off, s[0:3], 0 offset:16
8088; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v14
8089; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8090; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v1, 0, 16
8091; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v13, v14, 0, 16
8092; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8093; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
8094; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:224
8095; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v12
8096; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
8097; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v11, v12, 0, 16
8098; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8099; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v13, v1, 0, 16
8100; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v9, 16, v4
8101; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
8102; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8103; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:192
8104; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v7, 16, v10
8105; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8106; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v13, v3, 0, 16
8107; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v11, v2, 0, 16
8108; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
8109; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8110; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:160
8111; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v8
8112; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v3, v1, 0, 16
8113; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v1, v8, 0, 16
8114; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v5, v10, 0, 16
8115; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v7, v7, 0, 16
8116; GCN-NOHSA-SI-NEXT:    s_waitcnt expcnt(0)
8117; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v11, v9, 0, 16
8118; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v9, v4, 0, 16
8119; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v6
8120; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v13, v6, 0, 16
8121; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v15, v2, 0, 16
8122; GCN-NOHSA-SI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
8123; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v17, v0, 0, 16
8124; GCN-NOHSA-SI-NEXT:    v_bfe_i32 v19, v2, 0, 16
8125; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v2, 31, v1
8126; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v6, 31, v5
8127; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v10, 31, v9
8128; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8129; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v18, 31, v17
8130; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v4, 31, v3
8131; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v8, 31, v7
8132; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
8133; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
8134; GCN-NOHSA-SI-NEXT:    v_ashrrev_i32_e32 v20, 31, v19
8135; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[17:20], off, s[0:3], 0 offset:128
8136; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[13:16], off, s[0:3], 0 offset:96
8137; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[9:12], off, s[0:3], 0 offset:64
8138; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[5:8], off, s[0:3], 0 offset:32
8139; GCN-NOHSA-SI-NEXT:    buffer_store_dwordx4 v[1:4], off, s[0:3], 0
8140; GCN-NOHSA-SI-NEXT:    s_endpgm
8141;
8142; GCN-HSA-LABEL: global_sextload_v32i16_to_v32i64:
8143; GCN-HSA:       ; %bb.0:
8144; GCN-HSA-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
8145; GCN-HSA-NEXT:    s_waitcnt lgkmcnt(0)
8146; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s2
8147; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s3
8148; GCN-HSA-NEXT:    flat_load_dwordx4 v[8:11], v[0:1]
8149; GCN-HSA-NEXT:    s_add_u32 s4, s2, 48
8150; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
8151; GCN-HSA-NEXT:    v_mov_b32_e32 v0, s4
8152; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s5
8153; GCN-HSA-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]
8154; GCN-HSA-NEXT:    s_add_u32 s4, s2, 32
8155; GCN-HSA-NEXT:    s_addc_u32 s5, s3, 0
8156; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s4
8157; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s5
8158; GCN-HSA-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]
8159; GCN-HSA-NEXT:    s_add_u32 s2, s2, 16
8160; GCN-HSA-NEXT:    s_addc_u32 s3, s3, 0
8161; GCN-HSA-NEXT:    v_mov_b32_e32 v13, s3
8162; GCN-HSA-NEXT:    v_mov_b32_e32 v12, s2
8163; GCN-HSA-NEXT:    flat_load_dwordx4 v[12:15], v[12:13]
8164; GCN-HSA-NEXT:    s_add_u32 s2, s0, 48
8165; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
8166; GCN-HSA-NEXT:    s_add_u32 s4, s0, 16
8167; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
8168; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s5
8169; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s4
8170; GCN-HSA-NEXT:    s_waitcnt vmcnt(3)
8171; GCN-HSA-NEXT:    v_ashr_i64 v[18:19], v[8:9], 48
8172; GCN-HSA-NEXT:    v_bfe_i32 v16, v9, 0, 16
8173; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v17, 31, v16
8174; GCN-HSA-NEXT:    flat_store_dwordx4 v[20:21], v[16:19]
8175; GCN-HSA-NEXT:    v_mov_b32_e32 v21, s3
8176; GCN-HSA-NEXT:    v_mov_b32_e32 v20, s2
8177; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xf0
8178; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
8179; GCN-HSA-NEXT:    s_add_u32 s4, s0, 0xd0
8180; GCN-HSA-NEXT:    s_addc_u32 s5, s1, 0
8181; GCN-HSA-NEXT:    s_add_u32 s6, s0, 0xb0
8182; GCN-HSA-NEXT:    s_addc_u32 s7, s1, 0
8183; GCN-HSA-NEXT:    s_add_u32 s8, s0, 0x90
8184; GCN-HSA-NEXT:    s_addc_u32 s9, s1, 0
8185; GCN-HSA-NEXT:    s_add_u32 s10, s0, 0x70
8186; GCN-HSA-NEXT:    s_addc_u32 s11, s1, 0
8187; GCN-HSA-NEXT:    v_mov_b32_e32 v9, v11
8188; GCN-HSA-NEXT:    s_add_u32 s12, s0, 0x50
8189; GCN-HSA-NEXT:    v_bfe_i32 v16, v9, 0, 16
8190; GCN-HSA-NEXT:    v_ashr_i64 v[18:19], v[10:11], 48
8191; GCN-HSA-NEXT:    s_addc_u32 s13, s1, 0
8192; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v17, 31, v16
8193; GCN-HSA-NEXT:    s_add_u32 s14, s0, 32
8194; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v9, 16, v10
8195; GCN-HSA-NEXT:    flat_store_dwordx4 v[20:21], v[16:19]
8196; GCN-HSA-NEXT:    s_addc_u32 s15, s1, 0
8197; GCN-HSA-NEXT:    v_bfe_i32 v18, v9, 0, 16
8198; GCN-HSA-NEXT:    v_bfe_i32 v16, v10, 0, 16
8199; GCN-HSA-NEXT:    v_mov_b32_e32 v9, s14
8200; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v17, 31, v16
8201; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v19, 31, v18
8202; GCN-HSA-NEXT:    v_mov_b32_e32 v10, s15
8203; GCN-HSA-NEXT:    flat_store_dwordx4 v[9:10], v[16:19]
8204; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v9, 16, v8
8205; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s1
8206; GCN-HSA-NEXT:    v_bfe_i32 v8, v8, 0, 16
8207; GCN-HSA-NEXT:    v_bfe_i32 v10, v9, 0, 16
8208; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s0
8209; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
8210; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
8211; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[8:11]
8212; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s5
8213; GCN-HSA-NEXT:    s_waitcnt vmcnt(6)
8214; GCN-HSA-NEXT:    v_ashr_i64 v[10:11], v[0:1], 48
8215; GCN-HSA-NEXT:    v_bfe_i32 v8, v1, 0, 16
8216; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s4
8217; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
8218; GCN-HSA-NEXT:    v_mov_b32_e32 v1, v3
8219; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s3
8220; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[8:11]
8221; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s2
8222; GCN-HSA-NEXT:    v_bfe_i32 v8, v1, 0, 16
8223; GCN-HSA-NEXT:    v_ashr_i64 v[10:11], v[2:3], 48
8224; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
8225; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[8:11]
8226; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s9
8227; GCN-HSA-NEXT:    s_waitcnt vmcnt(7)
8228; GCN-HSA-NEXT:    v_ashr_i64 v[10:11], v[4:5], 48
8229; GCN-HSA-NEXT:    v_bfe_i32 v8, v5, 0, 16
8230; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s8
8231; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
8232; GCN-HSA-NEXT:    v_mov_b32_e32 v1, v7
8233; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s7
8234; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[8:11]
8235; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s6
8236; GCN-HSA-NEXT:    v_bfe_i32 v8, v1, 0, 16
8237; GCN-HSA-NEXT:    v_ashr_i64 v[10:11], v[6:7], 48
8238; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v9, 31, v8
8239; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[8:11]
8240; GCN-HSA-NEXT:    v_mov_b32_e32 v17, s13
8241; GCN-HSA-NEXT:    s_waitcnt vmcnt(8)
8242; GCN-HSA-NEXT:    v_ashr_i64 v[9:10], v[12:13], 48
8243; GCN-HSA-NEXT:    v_bfe_i32 v7, v13, 0, 16
8244; GCN-HSA-NEXT:    v_mov_b32_e32 v16, s12
8245; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v8, 31, v7
8246; GCN-HSA-NEXT:    v_mov_b32_e32 v3, v15
8247; GCN-HSA-NEXT:    v_mov_b32_e32 v19, s11
8248; GCN-HSA-NEXT:    flat_store_dwordx4 v[16:17], v[7:10]
8249; GCN-HSA-NEXT:    v_mov_b32_e32 v18, s10
8250; GCN-HSA-NEXT:    v_bfe_i32 v7, v3, 0, 16
8251; GCN-HSA-NEXT:    v_ashr_i64 v[9:10], v[14:15], 48
8252; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v1, 16, v2
8253; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v8, 31, v7
8254; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xe0
8255; GCN-HSA-NEXT:    flat_store_dwordx4 v[18:19], v[7:10]
8256; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
8257; GCN-HSA-NEXT:    v_bfe_i32 v7, v2, 0, 16
8258; GCN-HSA-NEXT:    v_bfe_i32 v9, v1, 0, 16
8259; GCN-HSA-NEXT:    v_mov_b32_e32 v1, s2
8260; GCN-HSA-NEXT:    v_mov_b32_e32 v2, s3
8261; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xc0
8262; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v8, 31, v7
8263; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v10, 31, v9
8264; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
8265; GCN-HSA-NEXT:    flat_store_dwordx4 v[1:2], v[7:10]
8266; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v5, 16, v6
8267; GCN-HSA-NEXT:    v_mov_b32_e32 v8, s3
8268; GCN-HSA-NEXT:    v_mov_b32_e32 v7, s2
8269; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0xa0
8270; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
8271; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v13, 16, v4
8272; GCN-HSA-NEXT:    v_bfe_i32 v11, v4, 0, 16
8273; GCN-HSA-NEXT:    v_bfe_i32 v17, v5, 0, 16
8274; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
8275; GCN-HSA-NEXT:    v_bfe_i32 v15, v6, 0, 16
8276; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
8277; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x80
8278; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
8279; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v16, 31, v15
8280; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v18, 31, v17
8281; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
8282; GCN-HSA-NEXT:    v_bfe_i32 v0, v0, 0, 16
8283; GCN-HSA-NEXT:    v_bfe_i32 v2, v3, 0, 16
8284; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[15:18]
8285; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
8286; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
8287; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
8288; GCN-HSA-NEXT:    v_bfe_i32 v13, v13, 0, 16
8289; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
8290; GCN-HSA-NEXT:    s_add_u32 s2, s0, 0x60
8291; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v9, 16, v14
8292; GCN-HSA-NEXT:    flat_store_dwordx4 v[7:8], v[0:3]
8293; GCN-HSA-NEXT:    v_bfe_i32 v7, v14, 0, 16
8294; GCN-HSA-NEXT:    v_lshrrev_b32_e32 v2, 16, v12
8295; GCN-HSA-NEXT:    v_bfe_i32 v0, v12, 0, 16
8296; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
8297; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8298; GCN-HSA-NEXT:    s_addc_u32 s3, s1, 0
8299; GCN-HSA-NEXT:    v_bfe_i32 v9, v9, 0, 16
8300; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[11:14]
8301; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s3
8302; GCN-HSA-NEXT:    s_add_u32 s0, s0, 64
8303; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v8, 31, v7
8304; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v10, 31, v9
8305; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s2
8306; GCN-HSA-NEXT:    s_addc_u32 s1, s1, 0
8307; GCN-HSA-NEXT:    v_bfe_i32 v2, v2, 0, 16
8308; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[7:10]
8309; GCN-HSA-NEXT:    v_mov_b32_e32 v5, s1
8310; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
8311; GCN-HSA-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
8312; GCN-HSA-NEXT:    v_mov_b32_e32 v4, s0
8313; GCN-HSA-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
8314; GCN-HSA-NEXT:    s_endpgm
8315;
8316; GCN-NOHSA-VI-LABEL: global_sextload_v32i16_to_v32i64:
8317; GCN-NOHSA-VI:       ; %bb.0:
8318; GCN-NOHSA-VI-NEXT:    s_load_dwordx4 s[4:7], s[0:1], 0x24
8319; GCN-NOHSA-VI-NEXT:    s_mov_b32 s3, 0xf000
8320; GCN-NOHSA-VI-NEXT:    s_mov_b32 s2, -1
8321; GCN-NOHSA-VI-NEXT:    s_mov_b32 s10, s2
8322; GCN-NOHSA-VI-NEXT:    s_mov_b32 s11, s3
8323; GCN-NOHSA-VI-NEXT:    s_waitcnt lgkmcnt(0)
8324; GCN-NOHSA-VI-NEXT:    s_mov_b32 s8, s6
8325; GCN-NOHSA-VI-NEXT:    s_mov_b32 s9, s7
8326; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:48
8327; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32
8328; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[8:11], 0
8329; GCN-NOHSA-VI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:16
8330; GCN-NOHSA-VI-NEXT:    s_mov_b32 s0, s4
8331; GCN-NOHSA-VI-NEXT:    s_mov_b32 s1, s5
8332; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(3)
8333; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v16, 16, v14
8334; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v18, v16, 0, 16
8335; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v16, v14, 0, 16
8336; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v17, 31, v16
8337; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v19, 31, v18
8338; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v14, v15
8339; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v15, 16, v15
8340; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[16:19], off, s[0:3], 0 offset:224
8341; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v14, v14, 0, 16
8342; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v16, v15, 0, 16
8343; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
8344; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v17, 31, v16
8345; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:240
8346; GCN-NOHSA-VI-NEXT:    s_waitcnt vmcnt(2)
8347; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v18, v1, 0, 16
8348; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v14, 16, v12
8349; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v16, v14, 0, 16
8350; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v14, v12, 0, 16
8351; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
8352; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v17, 31, v16
8353; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:192
8354; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v12, v13, 0, 16
8355; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v14, 16, v13
8356; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v14, v14, 0, 16
8357; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v13, 31, v12
8358; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
8359; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v16, v11
8360; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[12:15], off, s[0:3], 0 offset:208
8361; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v17, 16, v11
8362; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v12, 16, v10
8363; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v11, v16, 0, 16
8364; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v16, v12, 0, 16
8365; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v14, v10, 0, 16
8366; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v13, v17, 0, 16
8367; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
8368; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v17, 31, v16
8369; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:160
8370; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
8371; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8372; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:176
8373; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v10, v5, 0, 16
8374; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v11, 16, v8
8375; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v13, v11, 0, 16
8376; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v11, v8, 0, 16
8377; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
8378; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8379; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v8, 16, v9
8380; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:128
8381; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v5
8382; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v11, v9, 0, 16
8383; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v13, v8, 0, 16
8384; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
8385; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8386; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v9, 16, v2
8387; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:144
8388; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v8, v3
8389; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v13, v9, 0, 16
8390; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v11, v2, 0, 16
8391; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
8392; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8393; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v3
8394; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:96
8395; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v4
8396; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v11, v8, 0, 16
8397; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v13, v2, 0, 16
8398; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
8399; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8400; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
8401; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:112
8402; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v19, 31, v18
8403; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v13, v2, 0, 16
8404; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v11, v0, 0, 16
8405; GCN-NOHSA-VI-NEXT:    v_mov_b32_e32 v0, v7
8406; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v7
8407; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v7, v3, 0, 16
8408; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v6
8409; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v16, v3, 0, 16
8410; GCN-NOHSA-VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
8411; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v12, 31, v11
8412; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v14, 31, v13
8413; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v20, v3, 0, 16
8414; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[11:14], off, s[0:3], 0 offset:64
8415; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v0, v0, 0, 16
8416; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v12, v5, 0, 16
8417; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v2, v2, 0, 16
8418; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v5, v4, 0, 16
8419; GCN-NOHSA-VI-NEXT:    v_bfe_i32 v14, v6, 0, 16
8420; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v21, 31, v20
8421; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v11, 31, v10
8422; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v13, 31, v12
8423; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v6, 31, v5
8424; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v8, 31, v7
8425; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v1, 31, v0
8426; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v3, 31, v2
8427; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v15, 31, v14
8428; GCN-NOHSA-VI-NEXT:    v_ashrrev_i32_e32 v17, 31, v16
8429; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[18:21], off, s[0:3], 0 offset:80
8430; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[14:17], off, s[0:3], 0 offset:32
8431; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:48
8432; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[5:8], off, s[0:3], 0
8433; GCN-NOHSA-VI-NEXT:    buffer_store_dwordx4 v[10:13], off, s[0:3], 0 offset:16
8434; GCN-NOHSA-VI-NEXT:    s_endpgm
8435;
8436; EG-LABEL: global_sextload_v32i16_to_v32i64:
8437; EG:       ; %bb.0:
8438; EG-NEXT:    ALU 0, @30, KC0[CB0:0-32], KC1[]
8439; EG-NEXT:    TEX 0 @22
8440; EG-NEXT:    ALU 56, @31, KC0[CB0:0-32], KC1[]
8441; EG-NEXT:    TEX 2 @24
8442; EG-NEXT:    ALU 74, @88, KC0[CB0:0-32], KC1[]
8443; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T50.XYZW, T38.X, 0
8444; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T49.XYZW, T36.X, 0
8445; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T48.XYZW, T34.X, 0
8446; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T39.XYZW, T33.X, 0
8447; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T47.XYZW, T32.X, 0
8448; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T46.XYZW, T31.X, 0
8449; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T45.XYZW, T30.X, 0
8450; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T40.XYZW, T29.X, 0
8451; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T44.XYZW, T28.X, 0
8452; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T43.XYZW, T27.X, 0
8453; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T42.XYZW, T26.X, 0
8454; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T20.XYZW, T25.X, 0
8455; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T41.XYZW, T24.X, 0
8456; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T19.XYZW, T23.X, 0
8457; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T37.XYZW, T22.X, 0
8458; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T35.XYZW, T21.X, 1
8459; EG-NEXT:    CF_END
8460; EG-NEXT:    Fetch clause starting at 22:
8461; EG-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 0, #1
8462; EG-NEXT:    Fetch clause starting at 24:
8463; EG-NEXT:     VTX_READ_128 T38.XYZW, T19.X, 48, #1
8464; EG-NEXT:     VTX_READ_128 T39.XYZW, T19.X, 32, #1
8465; EG-NEXT:     VTX_READ_128 T40.XYZW, T19.X, 16, #1
8466; EG-NEXT:    ALU clause starting at 30:
8467; EG-NEXT:     MOV * T19.X, KC0[2].Z,
8468; EG-NEXT:    ALU clause starting at 31:
8469; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
8470; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8471; EG-NEXT:     LSHR T21.X, PV.W, literal.x,
8472; EG-NEXT:     LSHR * T22.X, KC0[2].Y, literal.x,
8473; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
8474; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
8475; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
8476; EG-NEXT:     LSHR T23.X, PV.W, literal.x,
8477; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8478; EG-NEXT:    2(2.802597e-45), 32(4.484155e-44)
8479; EG-NEXT:     LSHR T24.X, PV.W, literal.x,
8480; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8481; EG-NEXT:    2(2.802597e-45), 80(1.121039e-43)
8482; EG-NEXT:     LSHR T25.X, PV.W, literal.x,
8483; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8484; EG-NEXT:    2(2.802597e-45), 64(8.968310e-44)
8485; EG-NEXT:     LSHR T26.X, PV.W, literal.x,
8486; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8487; EG-NEXT:    2(2.802597e-45), 112(1.569454e-43)
8488; EG-NEXT:     LSHR T27.X, PV.W, literal.x,
8489; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8490; EG-NEXT:    2(2.802597e-45), 96(1.345247e-43)
8491; EG-NEXT:     LSHR T28.X, PV.W, literal.x,
8492; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8493; EG-NEXT:    2(2.802597e-45), 144(2.017870e-43)
8494; EG-NEXT:     LSHR T29.X, PV.W, literal.x,
8495; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8496; EG-NEXT:    2(2.802597e-45), 128(1.793662e-43)
8497; EG-NEXT:     LSHR T30.X, PV.W, literal.x,
8498; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8499; EG-NEXT:    2(2.802597e-45), 176(2.466285e-43)
8500; EG-NEXT:     LSHR T31.X, PV.W, literal.x,
8501; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8502; EG-NEXT:    2(2.802597e-45), 160(2.242078e-43)
8503; EG-NEXT:     LSHR T32.X, PV.W, literal.x,
8504; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8505; EG-NEXT:    2(2.802597e-45), 208(2.914701e-43)
8506; EG-NEXT:     LSHR T33.X, PV.W, literal.x,
8507; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8508; EG-NEXT:    2(2.802597e-45), 192(2.690493e-43)
8509; EG-NEXT:     LSHR T34.X, PV.W, literal.x,
8510; EG-NEXT:     ADD_INT T0.W, KC0[2].Y, literal.y,
8511; EG-NEXT:     ASHR * T35.W, T20.Y, literal.z,
8512; EG-NEXT:    2(2.802597e-45), 240(3.363116e-43)
8513; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
8514; EG-NEXT:     LSHR T36.X, PV.W, literal.x,
8515; EG-NEXT:     ASHR T35.Z, T20.Y, literal.y,
8516; EG-NEXT:     ASHR * T37.W, T20.X, literal.z,
8517; EG-NEXT:    2(2.802597e-45), 16(2.242078e-44)
8518; EG-NEXT:    31(4.344025e-44), 0(0.000000e+00)
8519; EG-NEXT:     BFE_INT T35.X, T20.Y, 0.0, literal.x,
8520; EG-NEXT:     ASHR * T37.Z, T20.X, literal.x,
8521; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8522; EG-NEXT:     BFE_INT T37.X, T20.X, 0.0, literal.x,
8523; EG-NEXT:     ASHR T35.Y, PV.X, literal.y,
8524; EG-NEXT:     ASHR * T19.W, T20.W, literal.y,
8525; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8526; EG-NEXT:    ALU clause starting at 88:
8527; EG-NEXT:     ASHR T19.Z, T20.W, literal.x,
8528; EG-NEXT:     ASHR * T41.W, T20.Z, literal.y,
8529; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8530; EG-NEXT:     BFE_INT T19.X, T20.W, 0.0, literal.x,
8531; EG-NEXT:     ASHR T37.Y, T37.X, literal.y,
8532; EG-NEXT:     ASHR T41.Z, T20.Z, literal.x,
8533; EG-NEXT:     ASHR * T20.W, T40.Y, literal.y,
8534; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8535; EG-NEXT:     BFE_INT T41.X, T20.Z, 0.0, literal.x,
8536; EG-NEXT:     ASHR T19.Y, PV.X, literal.y,
8537; EG-NEXT:     ASHR T20.Z, T40.Y, literal.x,
8538; EG-NEXT:     ASHR * T42.W, T40.X, literal.y,
8539; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8540; EG-NEXT:     BFE_INT T20.X, T40.Y, 0.0, literal.x,
8541; EG-NEXT:     ASHR T41.Y, PV.X, literal.y,
8542; EG-NEXT:     ASHR T42.Z, T40.X, literal.x,
8543; EG-NEXT:     ASHR * T43.W, T40.W, literal.y,
8544; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8545; EG-NEXT:     BFE_INT T42.X, T40.X, 0.0, literal.x,
8546; EG-NEXT:     ASHR T20.Y, PV.X, literal.y,
8547; EG-NEXT:     ASHR T43.Z, T40.W, literal.x,
8548; EG-NEXT:     ASHR * T44.W, T40.Z, literal.y,
8549; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8550; EG-NEXT:     BFE_INT T43.X, T40.W, 0.0, literal.x,
8551; EG-NEXT:     ASHR T42.Y, PV.X, literal.y,
8552; EG-NEXT:     ASHR T44.Z, T40.Z, literal.x,
8553; EG-NEXT:     ASHR * T40.W, T39.Y, literal.y,
8554; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8555; EG-NEXT:     BFE_INT T44.X, T40.Z, 0.0, literal.x,
8556; EG-NEXT:     ASHR T43.Y, PV.X, literal.y,
8557; EG-NEXT:     ASHR T40.Z, T39.Y, literal.x,
8558; EG-NEXT:     ASHR * T45.W, T39.X, literal.y,
8559; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8560; EG-NEXT:     BFE_INT T40.X, T39.Y, 0.0, literal.x,
8561; EG-NEXT:     ASHR T44.Y, PV.X, literal.y,
8562; EG-NEXT:     ASHR T45.Z, T39.X, literal.x,
8563; EG-NEXT:     ASHR * T46.W, T39.W, literal.y,
8564; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8565; EG-NEXT:     BFE_INT T45.X, T39.X, 0.0, literal.x,
8566; EG-NEXT:     ASHR T40.Y, PV.X, literal.y,
8567; EG-NEXT:     ASHR T46.Z, T39.W, literal.x,
8568; EG-NEXT:     ASHR * T47.W, T39.Z, literal.y,
8569; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8570; EG-NEXT:     BFE_INT T46.X, T39.W, 0.0, literal.x,
8571; EG-NEXT:     ASHR T45.Y, PV.X, literal.y,
8572; EG-NEXT:     ASHR T47.Z, T39.Z, literal.x,
8573; EG-NEXT:     ASHR * T39.W, T38.Y, literal.y,
8574; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8575; EG-NEXT:     BFE_INT T47.X, T39.Z, 0.0, literal.x,
8576; EG-NEXT:     ASHR T46.Y, PV.X, literal.y,
8577; EG-NEXT:     ASHR T39.Z, T38.Y, literal.x,
8578; EG-NEXT:     ASHR * T48.W, T38.X, literal.y,
8579; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8580; EG-NEXT:     BFE_INT T39.X, T38.Y, 0.0, literal.x,
8581; EG-NEXT:     ASHR T47.Y, PV.X, literal.y,
8582; EG-NEXT:     ASHR T48.Z, T38.X, literal.x,
8583; EG-NEXT:     ASHR * T49.W, T38.W, literal.y,
8584; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8585; EG-NEXT:     BFE_INT T48.X, T38.X, 0.0, literal.x,
8586; EG-NEXT:     ASHR T39.Y, PV.X, literal.y,
8587; EG-NEXT:     ASHR T49.Z, T38.W, literal.x,
8588; EG-NEXT:     ASHR * T50.W, T38.Z, literal.y,
8589; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8590; EG-NEXT:     BFE_INT T49.X, T38.W, 0.0, literal.x,
8591; EG-NEXT:     ASHR T48.Y, PV.X, literal.y,
8592; EG-NEXT:     ASHR * T50.Z, T38.Z, literal.x,
8593; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8594; EG-NEXT:     BFE_INT T50.X, T38.Z, 0.0, literal.x,
8595; EG-NEXT:     ASHR T49.Y, PV.X, literal.y,
8596; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.z,
8597; EG-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8598; EG-NEXT:    224(3.138909e-43), 0(0.000000e+00)
8599; EG-NEXT:     LSHR T38.X, PV.W, literal.x,
8600; EG-NEXT:     ASHR * T50.Y, PV.X, literal.y,
8601; EG-NEXT:    2(2.802597e-45), 31(4.344025e-44)
8602;
8603; CM-LABEL: global_sextload_v32i16_to_v32i64:
8604; CM:       ; %bb.0:
8605; CM-NEXT:    ALU 0, @30, KC0[CB0:0-32], KC1[]
8606; CM-NEXT:    TEX 0 @22
8607; CM-NEXT:    ALU 55, @31, KC0[CB0:0-32], KC1[]
8608; CM-NEXT:    TEX 2 @24
8609; CM-NEXT:    ALU 73, @87, KC0[CB0:0-32], KC1[]
8610; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T38, T50.X
8611; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T49, T36.X
8612; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T48, T34.X
8613; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T47, T33.X
8614; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T39, T32.X
8615; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T46, T31.X
8616; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T45, T30.X
8617; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T44, T29.X
8618; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T40, T28.X
8619; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T43, T27.X
8620; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T42, T26.X
8621; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T41, T25.X
8622; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T20, T24.X
8623; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T19, T23.X
8624; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T37, T22.X
8625; CM-NEXT:    MEM_RAT_CACHELESS STORE_DWORD T35, T21.X
8626; CM-NEXT:    CF_END
8627; CM-NEXT:    Fetch clause starting at 22:
8628; CM-NEXT:     VTX_READ_128 T20.XYZW, T19.X, 48, #1
8629; CM-NEXT:    Fetch clause starting at 24:
8630; CM-NEXT:     VTX_READ_128 T38.XYZW, T19.X, 0, #1
8631; CM-NEXT:     VTX_READ_128 T39.XYZW, T19.X, 16, #1
8632; CM-NEXT:     VTX_READ_128 T40.XYZW, T19.X, 32, #1
8633; CM-NEXT:    ALU clause starting at 30:
8634; CM-NEXT:     MOV * T19.X, KC0[2].Z,
8635; CM-NEXT:    ALU clause starting at 31:
8636; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
8637; CM-NEXT:    224(3.138909e-43), 0(0.000000e+00)
8638; CM-NEXT:     LSHR T21.X, PV.W, literal.x,
8639; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8640; CM-NEXT:    2(2.802597e-45), 240(3.363116e-43)
8641; CM-NEXT:     LSHR T22.X, PV.W, literal.x,
8642; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8643; CM-NEXT:    2(2.802597e-45), 192(2.690493e-43)
8644; CM-NEXT:     LSHR T23.X, PV.W, literal.x,
8645; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8646; CM-NEXT:    2(2.802597e-45), 208(2.914701e-43)
8647; CM-NEXT:     LSHR T24.X, PV.W, literal.x,
8648; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8649; CM-NEXT:    2(2.802597e-45), 160(2.242078e-43)
8650; CM-NEXT:     LSHR T25.X, PV.W, literal.x,
8651; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8652; CM-NEXT:    2(2.802597e-45), 176(2.466285e-43)
8653; CM-NEXT:     LSHR T26.X, PV.W, literal.x,
8654; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8655; CM-NEXT:    2(2.802597e-45), 128(1.793662e-43)
8656; CM-NEXT:     LSHR T27.X, PV.W, literal.x,
8657; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8658; CM-NEXT:    2(2.802597e-45), 144(2.017870e-43)
8659; CM-NEXT:     LSHR T28.X, PV.W, literal.x,
8660; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8661; CM-NEXT:    2(2.802597e-45), 96(1.345247e-43)
8662; CM-NEXT:     LSHR T29.X, PV.W, literal.x,
8663; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8664; CM-NEXT:    2(2.802597e-45), 112(1.569454e-43)
8665; CM-NEXT:     LSHR T30.X, PV.W, literal.x,
8666; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8667; CM-NEXT:    2(2.802597e-45), 64(8.968310e-44)
8668; CM-NEXT:     LSHR T31.X, PV.W, literal.x,
8669; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8670; CM-NEXT:    2(2.802597e-45), 80(1.121039e-43)
8671; CM-NEXT:     LSHR T32.X, PV.W, literal.x,
8672; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8673; CM-NEXT:    2(2.802597e-45), 32(4.484155e-44)
8674; CM-NEXT:     LSHR T33.X, PV.W, literal.x,
8675; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.y,
8676; CM-NEXT:    2(2.802597e-45), 48(6.726233e-44)
8677; CM-NEXT:     LSHR T34.X, PV.W, literal.x,
8678; CM-NEXT:     ASHR * T35.W, T20.Z, literal.y,
8679; CM-NEXT:    2(2.802597e-45), 31(4.344025e-44)
8680; CM-NEXT:     LSHR T36.X, KC0[2].Y, literal.x,
8681; CM-NEXT:     ASHR T35.Z, T20.Z, literal.y,
8682; CM-NEXT:     ASHR * T37.W, T20.W, literal.z,
8683; CM-NEXT:    2(2.802597e-45), 16(2.242078e-44)
8684; CM-NEXT:    31(4.344025e-44), 0(0.000000e+00)
8685; CM-NEXT:     BFE_INT T35.X, T20.Z, 0.0, literal.x,
8686; CM-NEXT:     ASHR * T37.Z, T20.W, literal.x,
8687; CM-NEXT:    16(2.242078e-44), 0(0.000000e+00)
8688; CM-NEXT:     BFE_INT T37.X, T20.W, 0.0, literal.x,
8689; CM-NEXT:     ASHR T35.Y, PV.X, literal.y,
8690; CM-NEXT:     ASHR * T19.W, T20.X, literal.y,
8691; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8692; CM-NEXT:    ALU clause starting at 87:
8693; CM-NEXT:     ASHR T19.Z, T20.X, literal.x,
8694; CM-NEXT:     ASHR * T20.W, T20.Y, literal.y,
8695; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8696; CM-NEXT:     BFE_INT T19.X, T20.X, 0.0, literal.x,
8697; CM-NEXT:     ASHR T37.Y, T37.X, literal.y, BS:VEC_120/SCL_212
8698; CM-NEXT:     ASHR T20.Z, T20.Y, literal.x,
8699; CM-NEXT:     ASHR * T41.W, T40.Z, literal.y,
8700; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8701; CM-NEXT:     BFE_INT T20.X, T20.Y, 0.0, literal.x,
8702; CM-NEXT:     ASHR T19.Y, PV.X, literal.y,
8703; CM-NEXT:     ASHR T41.Z, T40.Z, literal.x,
8704; CM-NEXT:     ASHR * T42.W, T40.W, literal.y,
8705; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8706; CM-NEXT:     BFE_INT T41.X, T40.Z, 0.0, literal.x,
8707; CM-NEXT:     ASHR T20.Y, PV.X, literal.y,
8708; CM-NEXT:     ASHR T42.Z, T40.W, literal.x,
8709; CM-NEXT:     ASHR * T43.W, T40.X, literal.y,
8710; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8711; CM-NEXT:     BFE_INT T42.X, T40.W, 0.0, literal.x,
8712; CM-NEXT:     ASHR T41.Y, PV.X, literal.y,
8713; CM-NEXT:     ASHR T43.Z, T40.X, literal.x,
8714; CM-NEXT:     ASHR * T40.W, T40.Y, literal.y,
8715; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8716; CM-NEXT:     BFE_INT T43.X, T40.X, 0.0, literal.x,
8717; CM-NEXT:     ASHR T42.Y, PV.X, literal.y,
8718; CM-NEXT:     ASHR T40.Z, T40.Y, literal.x,
8719; CM-NEXT:     ASHR * T44.W, T39.Z, literal.y,
8720; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8721; CM-NEXT:     BFE_INT T40.X, T40.Y, 0.0, literal.x,
8722; CM-NEXT:     ASHR T43.Y, PV.X, literal.y,
8723; CM-NEXT:     ASHR T44.Z, T39.Z, literal.x,
8724; CM-NEXT:     ASHR * T45.W, T39.W, literal.y,
8725; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8726; CM-NEXT:     BFE_INT T44.X, T39.Z, 0.0, literal.x,
8727; CM-NEXT:     ASHR T40.Y, PV.X, literal.y,
8728; CM-NEXT:     ASHR T45.Z, T39.W, literal.x,
8729; CM-NEXT:     ASHR * T46.W, T39.X, literal.y,
8730; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8731; CM-NEXT:     BFE_INT T45.X, T39.W, 0.0, literal.x,
8732; CM-NEXT:     ASHR T44.Y, PV.X, literal.y,
8733; CM-NEXT:     ASHR T46.Z, T39.X, literal.x,
8734; CM-NEXT:     ASHR * T39.W, T39.Y, literal.y,
8735; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8736; CM-NEXT:     BFE_INT T46.X, T39.X, 0.0, literal.x,
8737; CM-NEXT:     ASHR T45.Y, PV.X, literal.y,
8738; CM-NEXT:     ASHR T39.Z, T39.Y, literal.x,
8739; CM-NEXT:     ASHR * T47.W, T38.Z, literal.y,
8740; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8741; CM-NEXT:     BFE_INT T39.X, T39.Y, 0.0, literal.x,
8742; CM-NEXT:     ASHR T46.Y, PV.X, literal.y,
8743; CM-NEXT:     ASHR T47.Z, T38.Z, literal.x,
8744; CM-NEXT:     ASHR * T48.W, T38.W, literal.y,
8745; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8746; CM-NEXT:     BFE_INT T47.X, T38.Z, 0.0, literal.x,
8747; CM-NEXT:     ASHR T39.Y, PV.X, literal.y,
8748; CM-NEXT:     ASHR T48.Z, T38.W, literal.x,
8749; CM-NEXT:     ASHR * T49.W, T38.X, literal.y,
8750; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8751; CM-NEXT:     BFE_INT T48.X, T38.W, 0.0, literal.x,
8752; CM-NEXT:     ASHR T47.Y, PV.X, literal.y,
8753; CM-NEXT:     ASHR T49.Z, T38.X, literal.x,
8754; CM-NEXT:     ASHR * T38.W, T38.Y, literal.y,
8755; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8756; CM-NEXT:     BFE_INT T49.X, T38.X, 0.0, literal.x,
8757; CM-NEXT:     ASHR T48.Y, PV.X, literal.y,
8758; CM-NEXT:     ASHR * T38.Z, T38.Y, literal.x,
8759; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8760; CM-NEXT:     BFE_INT T38.X, T38.Y, 0.0, literal.x,
8761; CM-NEXT:     ASHR T49.Y, PV.X, literal.y,
8762; CM-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
8763; CM-NEXT:    16(2.242078e-44), 31(4.344025e-44)
8764; CM-NEXT:     LSHR T50.X, PV.W, literal.x,
8765; CM-NEXT:     ASHR * T38.Y, PV.X, literal.y,
8766; CM-NEXT:    2(2.802597e-45), 31(4.344025e-44)
8767  %load = load <32 x i16>, <32 x i16> addrspace(1)* %in
8768  %ext = sext <32 x i16> %load to <32 x i64>
8769  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
8770  ret void
8771}
8772
8773; define amdgpu_kernel void @global_zextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 {
8774;   %load = load <64 x i16>, <64 x i16> addrspace(1)* %in
8775;   %ext = zext <64 x i16> %load to <64 x i64>
8776;   store <64 x i64> %ext, <64 x i64> addrspace(1)* %out
8777;   ret void
8778; }
8779
8780; define amdgpu_kernel void @global_sextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(1)* %in) #0 {
8781;   %load = load <64 x i16>, <64 x i16> addrspace(1)* %in
8782;   %ext = sext <64 x i16> %load to <64 x i64>
8783;   store <64 x i64> %ext, <64 x i64> addrspace(1)* %out
8784;   ret void
8785; }
8786
8787attributes #0 = { nounwind }
8788