1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GFX8-UNPACKED %s
3; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx810 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX8-PACKED %s
4; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX9 %s
5; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX10PLUS,GFX10 %s
6; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX10PLUS,GFX11 %s
7
8define amdgpu_ps half @load_1d_f16_x(<8 x i32> inreg %rsrc, i32 %s) {
9; GFX8-UNPACKED-LABEL: load_1d_f16_x:
10; GFX8-UNPACKED:       ; %bb.0:
11; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
12; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
13; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
14; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
15; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
16; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
17; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
18; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
19; GFX8-UNPACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x1 unorm d16
20; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
21; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
22;
23; GFX8-PACKED-LABEL: load_1d_f16_x:
24; GFX8-PACKED:       ; %bb.0:
25; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
26; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
27; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
28; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
29; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
30; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
31; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
32; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
33; GFX8-PACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x1 unorm d16
34; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
35; GFX8-PACKED-NEXT:    ; return to shader part epilog
36;
37; GFX9-LABEL: load_1d_f16_x:
38; GFX9:       ; %bb.0:
39; GFX9-NEXT:    s_mov_b32 s0, s2
40; GFX9-NEXT:    s_mov_b32 s1, s3
41; GFX9-NEXT:    s_mov_b32 s2, s4
42; GFX9-NEXT:    s_mov_b32 s3, s5
43; GFX9-NEXT:    s_mov_b32 s4, s6
44; GFX9-NEXT:    s_mov_b32 s5, s7
45; GFX9-NEXT:    s_mov_b32 s6, s8
46; GFX9-NEXT:    s_mov_b32 s7, s9
47; GFX9-NEXT:    image_load v0, v0, s[0:7] dmask:0x1 unorm d16
48; GFX9-NEXT:    s_waitcnt vmcnt(0)
49; GFX9-NEXT:    ; return to shader part epilog
50;
51; GFX10PLUS-LABEL: load_1d_f16_x:
52; GFX10PLUS:       ; %bb.0:
53; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
54; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
55; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
56; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
57; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
58; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
59; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
60; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
61; GFX10PLUS-NEXT:    image_load v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm d16
62; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
63; GFX10PLUS-NEXT:    ; return to shader part epilog
64  %v = call half @llvm.amdgcn.image.load.1d.half.i32(i32 1, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)
65  ret half %v
66}
67
68define amdgpu_ps half @load_1d_f16_y(<8 x i32> inreg %rsrc, i32 %s) {
69; GFX8-UNPACKED-LABEL: load_1d_f16_y:
70; GFX8-UNPACKED:       ; %bb.0:
71; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
72; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
73; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
74; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
75; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
76; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
77; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
78; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
79; GFX8-UNPACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x2 unorm d16
80; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
81; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
82;
83; GFX8-PACKED-LABEL: load_1d_f16_y:
84; GFX8-PACKED:       ; %bb.0:
85; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
86; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
87; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
88; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
89; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
90; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
91; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
92; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
93; GFX8-PACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x2 unorm d16
94; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
95; GFX8-PACKED-NEXT:    ; return to shader part epilog
96;
97; GFX9-LABEL: load_1d_f16_y:
98; GFX9:       ; %bb.0:
99; GFX9-NEXT:    s_mov_b32 s0, s2
100; GFX9-NEXT:    s_mov_b32 s1, s3
101; GFX9-NEXT:    s_mov_b32 s2, s4
102; GFX9-NEXT:    s_mov_b32 s3, s5
103; GFX9-NEXT:    s_mov_b32 s4, s6
104; GFX9-NEXT:    s_mov_b32 s5, s7
105; GFX9-NEXT:    s_mov_b32 s6, s8
106; GFX9-NEXT:    s_mov_b32 s7, s9
107; GFX9-NEXT:    image_load v0, v0, s[0:7] dmask:0x2 unorm d16
108; GFX9-NEXT:    s_waitcnt vmcnt(0)
109; GFX9-NEXT:    ; return to shader part epilog
110;
111; GFX10PLUS-LABEL: load_1d_f16_y:
112; GFX10PLUS:       ; %bb.0:
113; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
114; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
115; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
116; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
117; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
118; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
119; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
120; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
121; GFX10PLUS-NEXT:    image_load v0, v0, s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_1D unorm d16
122; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
123; GFX10PLUS-NEXT:    ; return to shader part epilog
124  %v = call half @llvm.amdgcn.image.load.1d.half.i32(i32 2, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)
125  ret half %v
126}
127
128define amdgpu_ps half @load_1d_f16_z(<8 x i32> inreg %rsrc, i32 %s) {
129; GFX8-UNPACKED-LABEL: load_1d_f16_z:
130; GFX8-UNPACKED:       ; %bb.0:
131; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
132; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
133; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
134; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
135; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
136; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
137; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
138; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
139; GFX8-UNPACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x4 unorm d16
140; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
141; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
142;
143; GFX8-PACKED-LABEL: load_1d_f16_z:
144; GFX8-PACKED:       ; %bb.0:
145; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
146; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
147; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
148; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
149; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
150; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
151; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
152; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
153; GFX8-PACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x4 unorm d16
154; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
155; GFX8-PACKED-NEXT:    ; return to shader part epilog
156;
157; GFX9-LABEL: load_1d_f16_z:
158; GFX9:       ; %bb.0:
159; GFX9-NEXT:    s_mov_b32 s0, s2
160; GFX9-NEXT:    s_mov_b32 s1, s3
161; GFX9-NEXT:    s_mov_b32 s2, s4
162; GFX9-NEXT:    s_mov_b32 s3, s5
163; GFX9-NEXT:    s_mov_b32 s4, s6
164; GFX9-NEXT:    s_mov_b32 s5, s7
165; GFX9-NEXT:    s_mov_b32 s6, s8
166; GFX9-NEXT:    s_mov_b32 s7, s9
167; GFX9-NEXT:    image_load v0, v0, s[0:7] dmask:0x4 unorm d16
168; GFX9-NEXT:    s_waitcnt vmcnt(0)
169; GFX9-NEXT:    ; return to shader part epilog
170;
171; GFX10PLUS-LABEL: load_1d_f16_z:
172; GFX10PLUS:       ; %bb.0:
173; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
174; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
175; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
176; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
177; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
178; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
179; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
180; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
181; GFX10PLUS-NEXT:    image_load v0, v0, s[0:7] dmask:0x4 dim:SQ_RSRC_IMG_1D unorm d16
182; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
183; GFX10PLUS-NEXT:    ; return to shader part epilog
184  %v = call half @llvm.amdgcn.image.load.1d.half.i32(i32 4, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)
185  ret half %v
186}
187
188define amdgpu_ps half @load_1d_f16_w(<8 x i32> inreg %rsrc, i32 %s) {
189; GFX8-UNPACKED-LABEL: load_1d_f16_w:
190; GFX8-UNPACKED:       ; %bb.0:
191; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
192; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
193; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
194; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
195; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
196; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
197; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
198; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
199; GFX8-UNPACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 unorm d16
200; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
201; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
202;
203; GFX8-PACKED-LABEL: load_1d_f16_w:
204; GFX8-PACKED:       ; %bb.0:
205; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
206; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
207; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
208; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
209; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
210; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
211; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
212; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
213; GFX8-PACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 unorm d16
214; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
215; GFX8-PACKED-NEXT:    ; return to shader part epilog
216;
217; GFX9-LABEL: load_1d_f16_w:
218; GFX9:       ; %bb.0:
219; GFX9-NEXT:    s_mov_b32 s0, s2
220; GFX9-NEXT:    s_mov_b32 s1, s3
221; GFX9-NEXT:    s_mov_b32 s2, s4
222; GFX9-NEXT:    s_mov_b32 s3, s5
223; GFX9-NEXT:    s_mov_b32 s4, s6
224; GFX9-NEXT:    s_mov_b32 s5, s7
225; GFX9-NEXT:    s_mov_b32 s6, s8
226; GFX9-NEXT:    s_mov_b32 s7, s9
227; GFX9-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 unorm d16
228; GFX9-NEXT:    s_waitcnt vmcnt(0)
229; GFX9-NEXT:    ; return to shader part epilog
230;
231; GFX10PLUS-LABEL: load_1d_f16_w:
232; GFX10PLUS:       ; %bb.0:
233; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
234; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
235; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
236; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
237; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
238; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
239; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
240; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
241; GFX10PLUS-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm d16
242; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
243; GFX10PLUS-NEXT:    ; return to shader part epilog
244  %v = call half @llvm.amdgcn.image.load.1d.half.i32(i32 8, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)
245  ret half %v
246}
247
248define amdgpu_ps <2 x half> @load_1d_v2f16_xy(<8 x i32> inreg %rsrc, i32 %s) {
249; GFX8-UNPACKED-LABEL: load_1d_v2f16_xy:
250; GFX8-UNPACKED:       ; %bb.0:
251; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
252; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
253; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
254; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
255; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
256; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
257; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
258; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
259; GFX8-UNPACKED-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x3 unorm d16
260; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
261; GFX8-UNPACKED-NEXT:    v_and_b32_e32 v1, 0xffff, v1
262; GFX8-UNPACKED-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
263; GFX8-UNPACKED-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
264; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
265;
266; GFX8-PACKED-LABEL: load_1d_v2f16_xy:
267; GFX8-PACKED:       ; %bb.0:
268; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
269; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
270; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
271; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
272; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
273; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
274; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
275; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
276; GFX8-PACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x3 unorm d16
277; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
278; GFX8-PACKED-NEXT:    ; return to shader part epilog
279;
280; GFX9-LABEL: load_1d_v2f16_xy:
281; GFX9:       ; %bb.0:
282; GFX9-NEXT:    s_mov_b32 s0, s2
283; GFX9-NEXT:    s_mov_b32 s1, s3
284; GFX9-NEXT:    s_mov_b32 s2, s4
285; GFX9-NEXT:    s_mov_b32 s3, s5
286; GFX9-NEXT:    s_mov_b32 s4, s6
287; GFX9-NEXT:    s_mov_b32 s5, s7
288; GFX9-NEXT:    s_mov_b32 s6, s8
289; GFX9-NEXT:    s_mov_b32 s7, s9
290; GFX9-NEXT:    image_load v0, v0, s[0:7] dmask:0x3 unorm d16
291; GFX9-NEXT:    s_waitcnt vmcnt(0)
292; GFX9-NEXT:    ; return to shader part epilog
293;
294; GFX10PLUS-LABEL: load_1d_v2f16_xy:
295; GFX10PLUS:       ; %bb.0:
296; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
297; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
298; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
299; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
300; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
301; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
302; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
303; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
304; GFX10PLUS-NEXT:    image_load v0, v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm d16
305; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
306; GFX10PLUS-NEXT:    ; return to shader part epilog
307  %v = call <2 x half> @llvm.amdgcn.image.load.1d.v2f16.i32(i32 3, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)
308  ret <2 x half> %v
309}
310
311define amdgpu_ps <2 x half> @load_1d_v2f16_xz(<8 x i32> inreg %rsrc, i32 %s) {
312; GFX8-UNPACKED-LABEL: load_1d_v2f16_xz:
313; GFX8-UNPACKED:       ; %bb.0:
314; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
315; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
316; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
317; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
318; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
319; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
320; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
321; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
322; GFX8-UNPACKED-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x5 unorm d16
323; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
324; GFX8-UNPACKED-NEXT:    v_and_b32_e32 v1, 0xffff, v1
325; GFX8-UNPACKED-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
326; GFX8-UNPACKED-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
327; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
328;
329; GFX8-PACKED-LABEL: load_1d_v2f16_xz:
330; GFX8-PACKED:       ; %bb.0:
331; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
332; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
333; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
334; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
335; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
336; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
337; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
338; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
339; GFX8-PACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x5 unorm d16
340; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
341; GFX8-PACKED-NEXT:    ; return to shader part epilog
342;
343; GFX9-LABEL: load_1d_v2f16_xz:
344; GFX9:       ; %bb.0:
345; GFX9-NEXT:    s_mov_b32 s0, s2
346; GFX9-NEXT:    s_mov_b32 s1, s3
347; GFX9-NEXT:    s_mov_b32 s2, s4
348; GFX9-NEXT:    s_mov_b32 s3, s5
349; GFX9-NEXT:    s_mov_b32 s4, s6
350; GFX9-NEXT:    s_mov_b32 s5, s7
351; GFX9-NEXT:    s_mov_b32 s6, s8
352; GFX9-NEXT:    s_mov_b32 s7, s9
353; GFX9-NEXT:    image_load v0, v0, s[0:7] dmask:0x5 unorm d16
354; GFX9-NEXT:    s_waitcnt vmcnt(0)
355; GFX9-NEXT:    ; return to shader part epilog
356;
357; GFX10PLUS-LABEL: load_1d_v2f16_xz:
358; GFX10PLUS:       ; %bb.0:
359; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
360; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
361; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
362; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
363; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
364; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
365; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
366; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
367; GFX10PLUS-NEXT:    image_load v0, v0, s[0:7] dmask:0x5 dim:SQ_RSRC_IMG_1D unorm d16
368; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
369; GFX10PLUS-NEXT:    ; return to shader part epilog
370  %v = call <2 x half> @llvm.amdgcn.image.load.1d.v2f16.i32(i32 5, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)
371  ret <2 x half> %v
372}
373
374define amdgpu_ps <2 x half> @load_1d_v2f16_xw(<8 x i32> inreg %rsrc, i32 %s) {
375; GFX8-UNPACKED-LABEL: load_1d_v2f16_xw:
376; GFX8-UNPACKED:       ; %bb.0:
377; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
378; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
379; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
380; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
381; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
382; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
383; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
384; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
385; GFX8-UNPACKED-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x9 unorm d16
386; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
387; GFX8-UNPACKED-NEXT:    v_and_b32_e32 v1, 0xffff, v1
388; GFX8-UNPACKED-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
389; GFX8-UNPACKED-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
390; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
391;
392; GFX8-PACKED-LABEL: load_1d_v2f16_xw:
393; GFX8-PACKED:       ; %bb.0:
394; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
395; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
396; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
397; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
398; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
399; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
400; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
401; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
402; GFX8-PACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x9 unorm d16
403; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
404; GFX8-PACKED-NEXT:    ; return to shader part epilog
405;
406; GFX9-LABEL: load_1d_v2f16_xw:
407; GFX9:       ; %bb.0:
408; GFX9-NEXT:    s_mov_b32 s0, s2
409; GFX9-NEXT:    s_mov_b32 s1, s3
410; GFX9-NEXT:    s_mov_b32 s2, s4
411; GFX9-NEXT:    s_mov_b32 s3, s5
412; GFX9-NEXT:    s_mov_b32 s4, s6
413; GFX9-NEXT:    s_mov_b32 s5, s7
414; GFX9-NEXT:    s_mov_b32 s6, s8
415; GFX9-NEXT:    s_mov_b32 s7, s9
416; GFX9-NEXT:    image_load v0, v0, s[0:7] dmask:0x9 unorm d16
417; GFX9-NEXT:    s_waitcnt vmcnt(0)
418; GFX9-NEXT:    ; return to shader part epilog
419;
420; GFX10PLUS-LABEL: load_1d_v2f16_xw:
421; GFX10PLUS:       ; %bb.0:
422; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
423; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
424; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
425; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
426; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
427; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
428; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
429; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
430; GFX10PLUS-NEXT:    image_load v0, v0, s[0:7] dmask:0x9 dim:SQ_RSRC_IMG_1D unorm d16
431; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
432; GFX10PLUS-NEXT:    ; return to shader part epilog
433  %v = call <2 x half> @llvm.amdgcn.image.load.1d.v2f16.i32(i32 9, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)
434  ret <2 x half> %v
435}
436
437define amdgpu_ps <2 x half> @load_1d_v2f16_yz(<8 x i32> inreg %rsrc, i32 %s) {
438; GFX8-UNPACKED-LABEL: load_1d_v2f16_yz:
439; GFX8-UNPACKED:       ; %bb.0:
440; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
441; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
442; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
443; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
444; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
445; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
446; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
447; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
448; GFX8-UNPACKED-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x6 unorm d16
449; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
450; GFX8-UNPACKED-NEXT:    v_and_b32_e32 v1, 0xffff, v1
451; GFX8-UNPACKED-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
452; GFX8-UNPACKED-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
453; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
454;
455; GFX8-PACKED-LABEL: load_1d_v2f16_yz:
456; GFX8-PACKED:       ; %bb.0:
457; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
458; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
459; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
460; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
461; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
462; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
463; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
464; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
465; GFX8-PACKED-NEXT:    image_load v0, v0, s[0:7] dmask:0x6 unorm d16
466; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
467; GFX8-PACKED-NEXT:    ; return to shader part epilog
468;
469; GFX9-LABEL: load_1d_v2f16_yz:
470; GFX9:       ; %bb.0:
471; GFX9-NEXT:    s_mov_b32 s0, s2
472; GFX9-NEXT:    s_mov_b32 s1, s3
473; GFX9-NEXT:    s_mov_b32 s2, s4
474; GFX9-NEXT:    s_mov_b32 s3, s5
475; GFX9-NEXT:    s_mov_b32 s4, s6
476; GFX9-NEXT:    s_mov_b32 s5, s7
477; GFX9-NEXT:    s_mov_b32 s6, s8
478; GFX9-NEXT:    s_mov_b32 s7, s9
479; GFX9-NEXT:    image_load v0, v0, s[0:7] dmask:0x6 unorm d16
480; GFX9-NEXT:    s_waitcnt vmcnt(0)
481; GFX9-NEXT:    ; return to shader part epilog
482;
483; GFX10PLUS-LABEL: load_1d_v2f16_yz:
484; GFX10PLUS:       ; %bb.0:
485; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
486; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
487; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
488; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
489; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
490; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
491; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
492; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
493; GFX10PLUS-NEXT:    image_load v0, v0, s[0:7] dmask:0x6 dim:SQ_RSRC_IMG_1D unorm d16
494; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
495; GFX10PLUS-NEXT:    ; return to shader part epilog
496  %v = call <2 x half> @llvm.amdgcn.image.load.1d.v2f16.i32(i32 6, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)
497  ret <2 x half> %v
498}
499
500define amdgpu_ps <3 x half> @load_1d_v3f16_xyz(<8 x i32> inreg %rsrc, i32 %s) {
501; GFX8-UNPACKED-LABEL: load_1d_v3f16_xyz:
502; GFX8-UNPACKED:       ; %bb.0:
503; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
504; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
505; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
506; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
507; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
508; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
509; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
510; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
511; GFX8-UNPACKED-NEXT:    image_load v[0:2], v0, s[0:7] dmask:0x7 unorm d16
512; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
513; GFX8-UNPACKED-NEXT:    v_and_b32_e32 v3, 0xffff, v1
514; GFX8-UNPACKED-NEXT:    v_and_b32_e32 v1, 0xffff, v2
515; GFX8-UNPACKED-NEXT:    v_lshlrev_b32_e32 v2, 16, v3
516; GFX8-UNPACKED-NEXT:    v_or_b32_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
517; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
518;
519; GFX8-PACKED-LABEL: load_1d_v3f16_xyz:
520; GFX8-PACKED:       ; %bb.0:
521; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
522; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
523; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
524; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
525; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
526; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
527; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
528; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
529; GFX8-PACKED-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x7 unorm d16
530; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
531; GFX8-PACKED-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
532; GFX8-PACKED-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
533; GFX8-PACKED-NEXT:    v_and_b32_e32 v1, 0xffff, v1
534; GFX8-PACKED-NEXT:    v_or_b32_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
535; GFX8-PACKED-NEXT:    ; return to shader part epilog
536;
537; GFX9-LABEL: load_1d_v3f16_xyz:
538; GFX9:       ; %bb.0:
539; GFX9-NEXT:    s_mov_b32 s0, s2
540; GFX9-NEXT:    s_mov_b32 s1, s3
541; GFX9-NEXT:    s_mov_b32 s2, s4
542; GFX9-NEXT:    s_mov_b32 s3, s5
543; GFX9-NEXT:    s_mov_b32 s4, s6
544; GFX9-NEXT:    s_mov_b32 s5, s7
545; GFX9-NEXT:    s_mov_b32 s6, s8
546; GFX9-NEXT:    s_mov_b32 s7, s9
547; GFX9-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x7 unorm d16
548; GFX9-NEXT:    v_mov_b32_e32 v2, 0xffff
549; GFX9-NEXT:    s_lshl_b32 s0, s0, 16
550; GFX9-NEXT:    s_waitcnt vmcnt(0)
551; GFX9-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
552; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
553; GFX9-NEXT:    v_and_or_b32 v1, v1, v2, s0
554; GFX9-NEXT:    v_and_or_b32 v0, v0, v2, v3
555; GFX9-NEXT:    ; return to shader part epilog
556;
557; GFX10-LABEL: load_1d_v3f16_xyz:
558; GFX10:       ; %bb.0:
559; GFX10-NEXT:    s_mov_b32 s0, s2
560; GFX10-NEXT:    s_mov_b32 s1, s3
561; GFX10-NEXT:    s_mov_b32 s2, s4
562; GFX10-NEXT:    s_mov_b32 s3, s5
563; GFX10-NEXT:    s_mov_b32 s4, s6
564; GFX10-NEXT:    s_mov_b32 s5, s7
565; GFX10-NEXT:    s_mov_b32 s6, s8
566; GFX10-NEXT:    s_mov_b32 s7, s9
567; GFX10-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm d16
568; GFX10-NEXT:    s_waitcnt_depctr 0xffe3
569; GFX10-NEXT:    s_lshl_b32 s0, s0, 16
570; GFX10-NEXT:    s_waitcnt vmcnt(0)
571; GFX10-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
572; GFX10-NEXT:    v_and_or_b32 v1, 0xffff, v1, s0
573; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
574; GFX10-NEXT:    v_and_or_b32 v0, 0xffff, v0, v2
575; GFX10-NEXT:    ; return to shader part epilog
576;
577; GFX11-LABEL: load_1d_v3f16_xyz:
578; GFX11:       ; %bb.0:
579; GFX11-NEXT:    s_mov_b32 s0, s2
580; GFX11-NEXT:    s_mov_b32 s1, s3
581; GFX11-NEXT:    s_mov_b32 s2, s4
582; GFX11-NEXT:    s_mov_b32 s3, s5
583; GFX11-NEXT:    s_mov_b32 s4, s6
584; GFX11-NEXT:    s_mov_b32 s5, s7
585; GFX11-NEXT:    s_mov_b32 s6, s8
586; GFX11-NEXT:    s_mov_b32 s7, s9
587; GFX11-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm d16
588; GFX11-NEXT:    s_lshl_b32 s0, s0, 16
589; GFX11-NEXT:    s_waitcnt vmcnt(0)
590; GFX11-NEXT:    v_lshrrev_b32_e32 v2, 16, v0
591; GFX11-NEXT:    v_and_or_b32 v1, 0xffff, v1, s0
592; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
593; GFX11-NEXT:    v_and_or_b32 v0, 0xffff, v0, v2
594; GFX11-NEXT:    ; return to shader part epilog
595  %v = call <3 x half> @llvm.amdgcn.image.load.1d.v3f16.i32(i32 7, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)
596  ret <3 x half> %v
597}
598
599define amdgpu_ps <4 x half> @load_1d_v4f16_xyzw(<8 x i32> inreg %rsrc, i32 %s) {
600; GFX8-UNPACKED-LABEL: load_1d_v4f16_xyzw:
601; GFX8-UNPACKED:       ; %bb.0:
602; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
603; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
604; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
605; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
606; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
607; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
608; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
609; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
610; GFX8-UNPACKED-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm d16
611; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
612; GFX8-UNPACKED-NEXT:    v_and_b32_e32 v1, 0xffff, v1
613; GFX8-UNPACKED-NEXT:    v_and_b32_e32 v3, 0xffff, v3
614; GFX8-UNPACKED-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
615; GFX8-UNPACKED-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
616; GFX8-UNPACKED-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
617; GFX8-UNPACKED-NEXT:    v_or_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
618; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
619;
620; GFX8-PACKED-LABEL: load_1d_v4f16_xyzw:
621; GFX8-PACKED:       ; %bb.0:
622; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
623; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
624; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
625; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
626; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
627; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
628; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
629; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
630; GFX8-PACKED-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0xf unorm d16
631; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
632; GFX8-PACKED-NEXT:    ; return to shader part epilog
633;
634; GFX9-LABEL: load_1d_v4f16_xyzw:
635; GFX9:       ; %bb.0:
636; GFX9-NEXT:    s_mov_b32 s0, s2
637; GFX9-NEXT:    s_mov_b32 s1, s3
638; GFX9-NEXT:    s_mov_b32 s2, s4
639; GFX9-NEXT:    s_mov_b32 s3, s5
640; GFX9-NEXT:    s_mov_b32 s4, s6
641; GFX9-NEXT:    s_mov_b32 s5, s7
642; GFX9-NEXT:    s_mov_b32 s6, s8
643; GFX9-NEXT:    s_mov_b32 s7, s9
644; GFX9-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0xf unorm d16
645; GFX9-NEXT:    s_waitcnt vmcnt(0)
646; GFX9-NEXT:    ; return to shader part epilog
647;
648; GFX10PLUS-LABEL: load_1d_v4f16_xyzw:
649; GFX10PLUS:       ; %bb.0:
650; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
651; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
652; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
653; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
654; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
655; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
656; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
657; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
658; GFX10PLUS-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm d16
659; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
660; GFX10PLUS-NEXT:    ; return to shader part epilog
661  %v = call <4 x half> @llvm.amdgcn.image.load.1d.v4f16.i32(i32 15, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)
662  ret <4 x half> %v
663}
664
665define amdgpu_ps float @load_1d_f16_tfe_dmask_x(<8 x i32> inreg %rsrc, i32 %s) {
666; GFX8-UNPACKED-LABEL: load_1d_f16_tfe_dmask_x:
667; GFX8-UNPACKED:       ; %bb.0:
668; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 0
669; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
670; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
671; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
672; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
673; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
674; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
675; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
676; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
677; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v1
678; GFX8-UNPACKED-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe d16
679; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
680; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v0, v2
681; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
682;
683; GFX8-PACKED-LABEL: load_1d_f16_tfe_dmask_x:
684; GFX8-PACKED:       ; %bb.0:
685; GFX8-PACKED-NEXT:    v_mov_b32_e32 v1, 0
686; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
687; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
688; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
689; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
690; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
691; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
692; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
693; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
694; GFX8-PACKED-NEXT:    v_mov_b32_e32 v2, v1
695; GFX8-PACKED-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe d16
696; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
697; GFX8-PACKED-NEXT:    v_mov_b32_e32 v0, v2
698; GFX8-PACKED-NEXT:    ; return to shader part epilog
699;
700; GFX9-LABEL: load_1d_f16_tfe_dmask_x:
701; GFX9:       ; %bb.0:
702; GFX9-NEXT:    v_mov_b32_e32 v1, 0
703; GFX9-NEXT:    s_mov_b32 s0, s2
704; GFX9-NEXT:    s_mov_b32 s1, s3
705; GFX9-NEXT:    s_mov_b32 s2, s4
706; GFX9-NEXT:    s_mov_b32 s3, s5
707; GFX9-NEXT:    s_mov_b32 s4, s6
708; GFX9-NEXT:    s_mov_b32 s5, s7
709; GFX9-NEXT:    s_mov_b32 s6, s8
710; GFX9-NEXT:    s_mov_b32 s7, s9
711; GFX9-NEXT:    v_mov_b32_e32 v2, v1
712; GFX9-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe d16
713; GFX9-NEXT:    s_waitcnt vmcnt(0)
714; GFX9-NEXT:    v_mov_b32_e32 v0, v2
715; GFX9-NEXT:    ; return to shader part epilog
716;
717; GFX10PLUS-LABEL: load_1d_f16_tfe_dmask_x:
718; GFX10PLUS:       ; %bb.0:
719; GFX10PLUS-NEXT:    v_mov_b32_e32 v1, 0
720; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
721; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
722; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
723; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
724; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
725; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
726; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
727; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
728; GFX10PLUS-NEXT:    v_mov_b32_e32 v2, v1
729; GFX10PLUS-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe d16
730; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
731; GFX10PLUS-NEXT:    v_mov_b32_e32 v0, v2
732; GFX10PLUS-NEXT:    ; return to shader part epilog
733  %v = call { half, i32 } @llvm.amdgcn.image.load.1d.sl_f16i32s.i32(i32 1, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)
734  %v.err = extractvalue { half, i32 } %v, 1
735  %vv = bitcast i32 %v.err to float
736  ret float %vv
737}
738
739define amdgpu_ps float @load_1d_v2f16_tfe_dmask_xy(<8 x i32> inreg %rsrc, i32 %s) {
740; GFX8-UNPACKED-LABEL: load_1d_v2f16_tfe_dmask_xy:
741; GFX8-UNPACKED:       ; %bb.0:
742; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 0
743; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
744; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
745; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
746; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
747; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
748; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
749; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
750; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
751; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v1
752; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v3, v1
753; GFX8-UNPACKED-NEXT:    image_load v[1:3], v0, s[0:7] dmask:0x3 unorm tfe d16
754; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
755; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v0, v3
756; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
757;
758; GFX8-PACKED-LABEL: load_1d_v2f16_tfe_dmask_xy:
759; GFX8-PACKED:       ; %bb.0:
760; GFX8-PACKED-NEXT:    v_mov_b32_e32 v1, 0
761; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
762; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
763; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
764; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
765; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
766; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
767; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
768; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
769; GFX8-PACKED-NEXT:    v_mov_b32_e32 v2, v1
770; GFX8-PACKED-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x3 unorm tfe d16
771; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
772; GFX8-PACKED-NEXT:    v_mov_b32_e32 v0, v2
773; GFX8-PACKED-NEXT:    ; return to shader part epilog
774;
775; GFX9-LABEL: load_1d_v2f16_tfe_dmask_xy:
776; GFX9:       ; %bb.0:
777; GFX9-NEXT:    v_mov_b32_e32 v1, 0
778; GFX9-NEXT:    s_mov_b32 s0, s2
779; GFX9-NEXT:    s_mov_b32 s1, s3
780; GFX9-NEXT:    s_mov_b32 s2, s4
781; GFX9-NEXT:    s_mov_b32 s3, s5
782; GFX9-NEXT:    s_mov_b32 s4, s6
783; GFX9-NEXT:    s_mov_b32 s5, s7
784; GFX9-NEXT:    s_mov_b32 s6, s8
785; GFX9-NEXT:    s_mov_b32 s7, s9
786; GFX9-NEXT:    v_mov_b32_e32 v2, v1
787; GFX9-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x3 unorm tfe d16
788; GFX9-NEXT:    s_waitcnt vmcnt(0)
789; GFX9-NEXT:    v_mov_b32_e32 v0, v2
790; GFX9-NEXT:    ; return to shader part epilog
791;
792; GFX10PLUS-LABEL: load_1d_v2f16_tfe_dmask_xy:
793; GFX10PLUS:       ; %bb.0:
794; GFX10PLUS-NEXT:    v_mov_b32_e32 v1, 0
795; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
796; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
797; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
798; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
799; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
800; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
801; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
802; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
803; GFX10PLUS-NEXT:    v_mov_b32_e32 v2, v1
804; GFX10PLUS-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm tfe d16
805; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
806; GFX10PLUS-NEXT:    v_mov_b32_e32 v0, v2
807; GFX10PLUS-NEXT:    ; return to shader part epilog
808  %v = call { <2 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v2f16i32s.i32(i32 3, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)
809  %v.err = extractvalue { <2 x half>, i32 } %v, 1
810  %vv = bitcast i32 %v.err to float
811  ret float %vv
812}
813
814define amdgpu_ps float @load_1d_v3f16_tfe_dmask_xyz(<8 x i32> inreg %rsrc, i32 %s) {
815; GFX8-UNPACKED-LABEL: load_1d_v3f16_tfe_dmask_xyz:
816; GFX8-UNPACKED:       ; %bb.0:
817; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 0
818; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
819; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
820; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
821; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
822; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
823; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
824; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
825; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
826; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v1
827; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v3, v1
828; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v4, v1
829; GFX8-UNPACKED-NEXT:    image_load v[1:4], v0, s[0:7] dmask:0x7 unorm tfe d16
830; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
831; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v0, v4
832; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
833;
834; GFX8-PACKED-LABEL: load_1d_v3f16_tfe_dmask_xyz:
835; GFX8-PACKED:       ; %bb.0:
836; GFX8-PACKED-NEXT:    v_mov_b32_e32 v1, 0
837; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
838; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
839; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
840; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
841; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
842; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
843; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
844; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
845; GFX8-PACKED-NEXT:    v_mov_b32_e32 v2, v1
846; GFX8-PACKED-NEXT:    v_mov_b32_e32 v3, v1
847; GFX8-PACKED-NEXT:    image_load v[1:3], v0, s[0:7] dmask:0x7 unorm tfe d16
848; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
849; GFX8-PACKED-NEXT:    v_mov_b32_e32 v0, v3
850; GFX8-PACKED-NEXT:    ; return to shader part epilog
851;
852; GFX9-LABEL: load_1d_v3f16_tfe_dmask_xyz:
853; GFX9:       ; %bb.0:
854; GFX9-NEXT:    v_mov_b32_e32 v1, 0
855; GFX9-NEXT:    s_mov_b32 s0, s2
856; GFX9-NEXT:    s_mov_b32 s1, s3
857; GFX9-NEXT:    s_mov_b32 s2, s4
858; GFX9-NEXT:    s_mov_b32 s3, s5
859; GFX9-NEXT:    s_mov_b32 s4, s6
860; GFX9-NEXT:    s_mov_b32 s5, s7
861; GFX9-NEXT:    s_mov_b32 s6, s8
862; GFX9-NEXT:    s_mov_b32 s7, s9
863; GFX9-NEXT:    v_mov_b32_e32 v2, v1
864; GFX9-NEXT:    v_mov_b32_e32 v3, v1
865; GFX9-NEXT:    image_load v[1:3], v0, s[0:7] dmask:0x7 unorm tfe d16
866; GFX9-NEXT:    s_waitcnt vmcnt(0)
867; GFX9-NEXT:    v_mov_b32_e32 v0, v3
868; GFX9-NEXT:    ; return to shader part epilog
869;
870; GFX10PLUS-LABEL: load_1d_v3f16_tfe_dmask_xyz:
871; GFX10PLUS:       ; %bb.0:
872; GFX10PLUS-NEXT:    v_mov_b32_e32 v1, 0
873; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
874; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
875; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
876; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
877; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
878; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
879; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
880; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
881; GFX10PLUS-NEXT:    v_mov_b32_e32 v2, v1
882; GFX10PLUS-NEXT:    v_mov_b32_e32 v3, v1
883; GFX10PLUS-NEXT:    image_load v[1:3], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm tfe d16
884; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
885; GFX10PLUS-NEXT:    v_mov_b32_e32 v0, v3
886; GFX10PLUS-NEXT:    ; return to shader part epilog
887  %v = call { <3 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v3f16i32s.i32(i32 7, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)
888  %v.err = extractvalue { <3 x half>, i32 } %v, 1
889  %vv = bitcast i32 %v.err to float
890  ret float %vv
891}
892
893define amdgpu_ps float @load_1d_v4f16_tfe_dmask_xyzw(<8 x i32> inreg %rsrc, i32 %s) {
894; GFX8-UNPACKED-LABEL: load_1d_v4f16_tfe_dmask_xyzw:
895; GFX8-UNPACKED:       ; %bb.0:
896; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 0
897; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, s2
898; GFX8-UNPACKED-NEXT:    s_mov_b32 s1, s3
899; GFX8-UNPACKED-NEXT:    s_mov_b32 s2, s4
900; GFX8-UNPACKED-NEXT:    s_mov_b32 s3, s5
901; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s6
902; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s7
903; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s8
904; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s9
905; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v1
906; GFX8-UNPACKED-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x10 unorm tfe d16
907; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)
908; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v0, v2
909; GFX8-UNPACKED-NEXT:    ; return to shader part epilog
910;
911; GFX8-PACKED-LABEL: load_1d_v4f16_tfe_dmask_xyzw:
912; GFX8-PACKED:       ; %bb.0:
913; GFX8-PACKED-NEXT:    v_mov_b32_e32 v1, 0
914; GFX8-PACKED-NEXT:    s_mov_b32 s0, s2
915; GFX8-PACKED-NEXT:    s_mov_b32 s1, s3
916; GFX8-PACKED-NEXT:    s_mov_b32 s2, s4
917; GFX8-PACKED-NEXT:    s_mov_b32 s3, s5
918; GFX8-PACKED-NEXT:    s_mov_b32 s4, s6
919; GFX8-PACKED-NEXT:    s_mov_b32 s5, s7
920; GFX8-PACKED-NEXT:    s_mov_b32 s6, s8
921; GFX8-PACKED-NEXT:    s_mov_b32 s7, s9
922; GFX8-PACKED-NEXT:    v_mov_b32_e32 v2, v1
923; GFX8-PACKED-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x10 unorm tfe d16
924; GFX8-PACKED-NEXT:    s_waitcnt vmcnt(0)
925; GFX8-PACKED-NEXT:    v_mov_b32_e32 v0, v2
926; GFX8-PACKED-NEXT:    ; return to shader part epilog
927;
928; GFX9-LABEL: load_1d_v4f16_tfe_dmask_xyzw:
929; GFX9:       ; %bb.0:
930; GFX9-NEXT:    v_mov_b32_e32 v1, 0
931; GFX9-NEXT:    s_mov_b32 s0, s2
932; GFX9-NEXT:    s_mov_b32 s1, s3
933; GFX9-NEXT:    s_mov_b32 s2, s4
934; GFX9-NEXT:    s_mov_b32 s3, s5
935; GFX9-NEXT:    s_mov_b32 s4, s6
936; GFX9-NEXT:    s_mov_b32 s5, s7
937; GFX9-NEXT:    s_mov_b32 s6, s8
938; GFX9-NEXT:    s_mov_b32 s7, s9
939; GFX9-NEXT:    v_mov_b32_e32 v2, v1
940; GFX9-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x10 unorm tfe d16
941; GFX9-NEXT:    s_waitcnt vmcnt(0)
942; GFX9-NEXT:    v_mov_b32_e32 v0, v2
943; GFX9-NEXT:    ; return to shader part epilog
944;
945; GFX10PLUS-LABEL: load_1d_v4f16_tfe_dmask_xyzw:
946; GFX10PLUS:       ; %bb.0:
947; GFX10PLUS-NEXT:    v_mov_b32_e32 v1, 0
948; GFX10PLUS-NEXT:    s_mov_b32 s0, s2
949; GFX10PLUS-NEXT:    s_mov_b32 s1, s3
950; GFX10PLUS-NEXT:    s_mov_b32 s2, s4
951; GFX10PLUS-NEXT:    s_mov_b32 s3, s5
952; GFX10PLUS-NEXT:    s_mov_b32 s4, s6
953; GFX10PLUS-NEXT:    s_mov_b32 s5, s7
954; GFX10PLUS-NEXT:    s_mov_b32 s6, s8
955; GFX10PLUS-NEXT:    s_mov_b32 s7, s9
956; GFX10PLUS-NEXT:    v_mov_b32_e32 v2, v1
957; GFX10PLUS-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x10 dim:SQ_RSRC_IMG_1D unorm tfe d16
958; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)
959; GFX10PLUS-NEXT:    v_mov_b32_e32 v0, v2
960; GFX10PLUS-NEXT:    ; return to shader part epilog
961  %v = call { <4 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v4f16i32s.i32(i32 16, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)
962  %v.err = extractvalue { <4 x half>, i32 } %v, 1
963  %vv = bitcast i32 %v.err to float
964  ret float %vv
965}
966
967declare half @llvm.amdgcn.image.load.1d.half.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0
968declare <2 x half> @llvm.amdgcn.image.load.1d.v2f16.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0
969declare <3 x half> @llvm.amdgcn.image.load.1d.v3f16.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0
970declare <4 x half> @llvm.amdgcn.image.load.1d.v4f16.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0
971
972declare { half, i32 } @llvm.amdgcn.image.load.1d.sl_f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0
973declare { <2 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v2f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0
974declare { <3 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v3f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0
975declare { <4 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v4f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0
976
977attributes #0 = { nounwind readonly }
978