Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / llvm.amdgcn.image.sample.g16.ll
blob97008627752624bbdda926b2fca77523b5c1456e
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -global-isel -march=amdgcn -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX10 %s
3 ; RUN: llc -global-isel -march=amdgcn -mcpu=gfx1100 -amdgpu-enable-delay-alu=0 -amdgpu-enable-vopd=0 -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX11 %s
5 define amdgpu_ps <4 x float> @sample_d_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dsdv, float %s) {
6 ; GFX10-LABEL: sample_d_1d:
7 ; GFX10:       ; %bb.0: ; %main_body
8 ; GFX10-NEXT:    image_sample_d_g16 v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D
9 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
10 ; GFX10-NEXT:    ; return to shader part epilog
12 ; GFX11-LABEL: sample_d_1d:
13 ; GFX11:       ; %bb.0: ; %main_body
14 ; GFX11-NEXT:    image_sample_d_g16 v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D
15 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
16 ; GFX11-NEXT:    ; return to shader part epilog
17 main_body:
18   %v = call <4 x float> @llvm.amdgcn.image.sample.d.1d.v4f32.f16.f32(i32 15, half %dsdh, half %dsdv, float %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
19   ret <4 x float> %v
22 define amdgpu_ps <4 x float> @sample_d_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t) {
23 ; GFX10-LABEL: sample_d_2d:
24 ; GFX10:       ; %bb.0: ; %main_body
25 ; GFX10-NEXT:    v_and_b32_e32 v0, 0xffff, v0
26 ; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff, v2
27 ; GFX10-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
28 ; GFX10-NEXT:    v_lshl_or_b32 v1, v3, 16, v2
29 ; GFX10-NEXT:    image_sample_d_g16 v[0:3], [v0, v1, v4, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D
30 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
31 ; GFX10-NEXT:    ; return to shader part epilog
33 ; GFX11-LABEL: sample_d_2d:
34 ; GFX11:       ; %bb.0: ; %main_body
35 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v0
36 ; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff, v2
37 ; GFX11-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
38 ; GFX11-NEXT:    v_lshl_or_b32 v1, v3, 16, v2
39 ; GFX11-NEXT:    image_sample_d_g16 v[0:3], [v0, v1, v4, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D
40 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
41 ; GFX11-NEXT:    ; return to shader part epilog
42 main_body:
43   %v = call <4 x float> @llvm.amdgcn.image.sample.d.2d.v4f32.f16.f32(i32 15, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
44   ret <4 x float> %v
47 define amdgpu_ps <4 x float> @sample_d_3d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %drdh, half %dsdv, half %dtdv, half %drdv, float %s, float %t, float %r) {
48 ; GFX10-LABEL: sample_d_3d:
49 ; GFX10:       ; %bb.0: ; %main_body
50 ; GFX10-NEXT:    v_mov_b32_e32 v9, v3
51 ; GFX10-NEXT:    v_and_b32_e32 v0, 0xffff, v0
52 ; GFX10-NEXT:    v_mov_b32_e32 v3, v2
53 ; GFX10-NEXT:    v_and_b32_e32 v9, 0xffff, v9
54 ; GFX10-NEXT:    v_lshl_or_b32 v2, v1, 16, v0
55 ; GFX10-NEXT:    v_lshl_or_b32 v4, v4, 16, v9
56 ; GFX10-NEXT:    image_sample_d_g16 v[0:3], v[2:8], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D
57 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
58 ; GFX10-NEXT:    ; return to shader part epilog
60 ; GFX11-LABEL: sample_d_3d:
61 ; GFX11:       ; %bb.0: ; %main_body
62 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v0
63 ; GFX11-NEXT:    v_and_b32_e32 v3, 0xffff, v3
64 ; GFX11-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
65 ; GFX11-NEXT:    v_lshl_or_b32 v1, v4, 16, v3
66 ; GFX11-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v1, v5, v[6:8]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D
67 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
68 ; GFX11-NEXT:    ; return to shader part epilog
69 main_body:
70   %v = call <4 x float> @llvm.amdgcn.image.sample.d.3d.v4f32.f16.f32(i32 15, half %dsdh, half %dtdh, half %drdh, half %dsdv, half %dtdv, half %drdv, float %s, float %t, float %r, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
71   ret <4 x float> %v
74 define amdgpu_ps <4 x float> @sample_c_d_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dsdv, float %s) {
75 ; GFX10-LABEL: sample_c_d_1d:
76 ; GFX10:       ; %bb.0: ; %main_body
77 ; GFX10-NEXT:    image_sample_c_d_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D
78 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
79 ; GFX10-NEXT:    ; return to shader part epilog
81 ; GFX11-LABEL: sample_c_d_1d:
82 ; GFX11:       ; %bb.0: ; %main_body
83 ; GFX11-NEXT:    image_sample_c_d_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D
84 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
85 ; GFX11-NEXT:    ; return to shader part epilog
86 main_body:
87   %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.1d.v4f32.f16.f32(i32 15, float %zcompare, half %dsdh, half %dsdv, float %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
88   ret <4 x float> %v
91 define amdgpu_ps <4 x float> @sample_c_d_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t) {
92 ; GFX10-LABEL: sample_c_d_2d:
93 ; GFX10:       ; %bb.0: ; %main_body
94 ; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff, v1
95 ; GFX10-NEXT:    v_and_b32_e32 v3, 0xffff, v3
96 ; GFX10-NEXT:    v_lshl_or_b32 v1, v2, 16, v1
97 ; GFX10-NEXT:    v_lshl_or_b32 v2, v4, 16, v3
98 ; GFX10-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v2, v5, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D
99 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
100 ; GFX10-NEXT:    ; return to shader part epilog
102 ; GFX11-LABEL: sample_c_d_2d:
103 ; GFX11:       ; %bb.0: ; %main_body
104 ; GFX11-NEXT:    v_and_b32_e32 v1, 0xffff, v1
105 ; GFX11-NEXT:    v_and_b32_e32 v3, 0xffff, v3
106 ; GFX11-NEXT:    v_lshl_or_b32 v1, v2, 16, v1
107 ; GFX11-NEXT:    v_lshl_or_b32 v2, v4, 16, v3
108 ; GFX11-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v2, v5, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D
109 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
110 ; GFX11-NEXT:    ; return to shader part epilog
111 main_body:
112   %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.2d.v4f32.f16.f32(i32 15, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
113   ret <4 x float> %v
116 define amdgpu_ps <4 x float> @sample_d_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dsdv, float %s, float %clamp) {
117 ; GFX10-LABEL: sample_d_cl_1d:
118 ; GFX10:       ; %bb.0: ; %main_body
119 ; GFX10-NEXT:    image_sample_d_cl_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D
120 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
121 ; GFX10-NEXT:    ; return to shader part epilog
123 ; GFX11-LABEL: sample_d_cl_1d:
124 ; GFX11:       ; %bb.0: ; %main_body
125 ; GFX11-NEXT:    image_sample_d_cl_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D
126 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
127 ; GFX11-NEXT:    ; return to shader part epilog
128 main_body:
129   %v = call <4 x float> @llvm.amdgcn.image.sample.d.cl.1d.v4f32.f16.f32(i32 15, half %dsdh, half %dsdv, float %s, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
130   ret <4 x float> %v
133 define amdgpu_ps <4 x float> @sample_d_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %clamp) {
134 ; GFX10-LABEL: sample_d_cl_2d:
135 ; GFX10:       ; %bb.0: ; %main_body
136 ; GFX10-NEXT:    v_and_b32_e32 v0, 0xffff, v0
137 ; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff, v2
138 ; GFX10-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
139 ; GFX10-NEXT:    v_lshl_or_b32 v1, v3, 16, v2
140 ; GFX10-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v1, v4, v5, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D
141 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
142 ; GFX10-NEXT:    ; return to shader part epilog
144 ; GFX11-LABEL: sample_d_cl_2d:
145 ; GFX11:       ; %bb.0: ; %main_body
146 ; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v0
147 ; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff, v2
148 ; GFX11-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
149 ; GFX11-NEXT:    v_lshl_or_b32 v1, v3, 16, v2
150 ; GFX11-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v1, v4, v5, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D
151 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
152 ; GFX11-NEXT:    ; return to shader part epilog
153 main_body:
154   %v = call <4 x float> @llvm.amdgcn.image.sample.d.cl.2d.v4f32.f16.f32(i32 15, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
155   ret <4 x float> %v
158 define amdgpu_ps <4 x float> @sample_c_d_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dsdv, float %s, float %clamp) {
159 ; GFX10-LABEL: sample_c_d_cl_1d:
160 ; GFX10:       ; %bb.0: ; %main_body
161 ; GFX10-NEXT:    image_sample_c_d_cl_g16 v[0:3], v[0:4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D
162 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
163 ; GFX10-NEXT:    ; return to shader part epilog
165 ; GFX11-LABEL: sample_c_d_cl_1d:
166 ; GFX11:       ; %bb.0: ; %main_body
167 ; GFX11-NEXT:    image_sample_c_d_cl_g16 v[0:3], v[0:4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D
168 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
169 ; GFX11-NEXT:    ; return to shader part epilog
170 main_body:
171   %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.cl.1d.v4f32.f16.f32(i32 15, float %zcompare, half %dsdh, half %dsdv, float %s, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
172   ret <4 x float> %v
175 define amdgpu_ps <4 x float> @sample_c_d_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %clamp) {
176 ; GFX10-LABEL: sample_c_d_cl_2d:
177 ; GFX10:       ; %bb.0: ; %main_body
178 ; GFX10-NEXT:    v_mov_b32_e32 v8, v2
179 ; GFX10-NEXT:    v_mov_b32_e32 v2, v0
180 ; GFX10-NEXT:    v_and_b32_e32 v0, 0xffff, v1
181 ; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff, v3
182 ; GFX10-NEXT:    v_lshl_or_b32 v3, v8, 16, v0
183 ; GFX10-NEXT:    v_lshl_or_b32 v4, v4, 16, v1
184 ; GFX10-NEXT:    image_sample_c_d_cl_g16 v[0:3], v[2:7], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D
185 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
186 ; GFX10-NEXT:    ; return to shader part epilog
188 ; GFX11-LABEL: sample_c_d_cl_2d:
189 ; GFX11:       ; %bb.0: ; %main_body
190 ; GFX11-NEXT:    v_and_b32_e32 v1, 0xffff, v1
191 ; GFX11-NEXT:    v_and_b32_e32 v3, 0xffff, v3
192 ; GFX11-NEXT:    v_lshl_or_b32 v1, v2, 16, v1
193 ; GFX11-NEXT:    v_lshl_or_b32 v2, v4, 16, v3
194 ; GFX11-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v2, v5, v[6:7]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D
195 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
196 ; GFX11-NEXT:    ; return to shader part epilog
197 main_body:
198   %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.cl.2d.v4f32.f16.f32(i32 15, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
199   ret <4 x float> %v
202 define amdgpu_ps float @sample_c_d_o_2darray_V1(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %slice) {
203 ; GFX10-LABEL: sample_c_d_o_2darray_V1:
204 ; GFX10:       ; %bb.0: ; %main_body
205 ; GFX10-NEXT:    v_mov_b32_e32 v9, v2
206 ; GFX10-NEXT:    v_mov_b32_e32 v10, v3
207 ; GFX10-NEXT:    v_mov_b32_e32 v2, v0
208 ; GFX10-NEXT:    v_mov_b32_e32 v3, v1
209 ; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff, v4
210 ; GFX10-NEXT:    v_and_b32_e32 v0, 0xffff, v9
211 ; GFX10-NEXT:    v_lshl_or_b32 v5, v5, 16, v1
212 ; GFX10-NEXT:    v_lshl_or_b32 v4, v10, 16, v0
213 ; GFX10-NEXT:    image_sample_c_d_o_g16 v0, v[2:8], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY
214 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
215 ; GFX10-NEXT:    ; return to shader part epilog
217 ; GFX11-LABEL: sample_c_d_o_2darray_V1:
218 ; GFX11:       ; %bb.0: ; %main_body
219 ; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff, v2
220 ; GFX11-NEXT:    v_and_b32_e32 v4, 0xffff, v4
221 ; GFX11-NEXT:    v_lshl_or_b32 v2, v3, 16, v2
222 ; GFX11-NEXT:    v_lshl_or_b32 v3, v5, 16, v4
223 ; GFX11-NEXT:    image_sample_c_d_o_g16 v0, [v0, v1, v2, v3, v[6:8]], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY
224 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
225 ; GFX11-NEXT:    ; return to shader part epilog
226 main_body:
227   %v = call float @llvm.amdgcn.image.sample.c.d.o.2darray.f16.f32.f32(i32 4, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
228   ret float %v
231 define amdgpu_ps <2 x float> @sample_c_d_o_2darray_V2(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %slice) {
232 ; GFX10-LABEL: sample_c_d_o_2darray_V2:
233 ; GFX10:       ; %bb.0: ; %main_body
234 ; GFX10-NEXT:    v_mov_b32_e32 v9, v2
235 ; GFX10-NEXT:    v_mov_b32_e32 v10, v3
236 ; GFX10-NEXT:    v_mov_b32_e32 v2, v0
237 ; GFX10-NEXT:    v_mov_b32_e32 v3, v1
238 ; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff, v4
239 ; GFX10-NEXT:    v_and_b32_e32 v0, 0xffff, v9
240 ; GFX10-NEXT:    v_lshl_or_b32 v5, v5, 16, v1
241 ; GFX10-NEXT:    v_lshl_or_b32 v4, v10, 16, v0
242 ; GFX10-NEXT:    image_sample_c_d_o_g16 v[0:1], v[2:8], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY
243 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
244 ; GFX10-NEXT:    ; return to shader part epilog
246 ; GFX11-LABEL: sample_c_d_o_2darray_V2:
247 ; GFX11:       ; %bb.0: ; %main_body
248 ; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff, v2
249 ; GFX11-NEXT:    v_and_b32_e32 v4, 0xffff, v4
250 ; GFX11-NEXT:    v_lshl_or_b32 v2, v3, 16, v2
251 ; GFX11-NEXT:    v_lshl_or_b32 v3, v5, 16, v4
252 ; GFX11-NEXT:    image_sample_c_d_o_g16 v[0:1], [v0, v1, v2, v3, v[6:8]], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY
253 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
254 ; GFX11-NEXT:    ; return to shader part epilog
255 main_body:
256   %v = call <2 x float> @llvm.amdgcn.image.sample.c.d.o.2darray.v2f32.f16.f32(i32 6, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
257   ret <2 x float> %v
260 declare <4 x float> @llvm.amdgcn.image.sample.d.1d.v4f32.f16.f32(i32, half, half, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
261 declare <4 x float> @llvm.amdgcn.image.sample.d.2d.v4f32.f16.f32(i32, half, half, half, half, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
262 declare <4 x float> @llvm.amdgcn.image.sample.d.3d.v4f32.f16.f32(i32, half, half, half, half, half, half, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
263 declare <4 x float> @llvm.amdgcn.image.sample.c.d.1d.v4f32.f16.f32(i32, float, half, half, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
264 declare <4 x float> @llvm.amdgcn.image.sample.c.d.2d.v4f32.f16.f32(i32, float, half, half, half, half, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
265 declare <4 x float> @llvm.amdgcn.image.sample.d.cl.1d.v4f32.f16.f32(i32, half, half, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
266 declare <4 x float> @llvm.amdgcn.image.sample.d.cl.2d.v4f32.f16.f32(i32, half, half, half, half, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
267 declare <4 x float> @llvm.amdgcn.image.sample.c.d.cl.1d.v4f32.f16.f32(i32, float, half, half, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
268 declare <4 x float> @llvm.amdgcn.image.sample.c.d.cl.2d.v4f32.f16.f32(i32, float, half, half, half, half, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
270 declare float @llvm.amdgcn.image.sample.c.d.o.2darray.f16.f32.f32(i32, i32, float, half, half, half, half, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
271 declare <2 x float> @llvm.amdgcn.image.sample.c.d.o.2darray.v2f32.f16.f32(i32, i32, float, half, half, half, half, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1
273 attributes #0 = { nounwind }
274 attributes #1 = { nounwind readonly }
275 attributes #2 = { nounwind readnone }