Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / llvm.amdgcn.image.getresinfo.ll
blob496f9f428580b677d3671b64f2e528ed98e0259b
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefix=GFX6 %s
3 ; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -verify-machineinstrs < %s | FileCheck -check-prefix=GFX8 %s
4 ; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX10 %s
5 ; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX10 %s
6 ; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1200 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX12 %s
8 define amdgpu_ps <4 x float> @getresinfo_1d(<8 x i32> inreg %rsrc, i32 %mip) {
9 ; GFX6-LABEL: getresinfo_1d:
10 ; GFX6:       ; %bb.0: ; %main_body
11 ; GFX6-NEXT:    s_mov_b32 s0, s2
12 ; GFX6-NEXT:    s_mov_b32 s1, s3
13 ; GFX6-NEXT:    s_mov_b32 s2, s4
14 ; GFX6-NEXT:    s_mov_b32 s3, s5
15 ; GFX6-NEXT:    s_mov_b32 s4, s6
16 ; GFX6-NEXT:    s_mov_b32 s5, s7
17 ; GFX6-NEXT:    s_mov_b32 s6, s8
18 ; GFX6-NEXT:    s_mov_b32 s7, s9
19 ; GFX6-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm
20 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
21 ; GFX6-NEXT:    ; return to shader part epilog
23 ; GFX8-LABEL: getresinfo_1d:
24 ; GFX8:       ; %bb.0: ; %main_body
25 ; GFX8-NEXT:    s_mov_b32 s0, s2
26 ; GFX8-NEXT:    s_mov_b32 s1, s3
27 ; GFX8-NEXT:    s_mov_b32 s2, s4
28 ; GFX8-NEXT:    s_mov_b32 s3, s5
29 ; GFX8-NEXT:    s_mov_b32 s4, s6
30 ; GFX8-NEXT:    s_mov_b32 s5, s7
31 ; GFX8-NEXT:    s_mov_b32 s6, s8
32 ; GFX8-NEXT:    s_mov_b32 s7, s9
33 ; GFX8-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm
34 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
35 ; GFX8-NEXT:    ; return to shader part epilog
37 ; GFX10-LABEL: getresinfo_1d:
38 ; GFX10:       ; %bb.0: ; %main_body
39 ; GFX10-NEXT:    s_mov_b32 s0, s2
40 ; GFX10-NEXT:    s_mov_b32 s1, s3
41 ; GFX10-NEXT:    s_mov_b32 s2, s4
42 ; GFX10-NEXT:    s_mov_b32 s3, s5
43 ; GFX10-NEXT:    s_mov_b32 s4, s6
44 ; GFX10-NEXT:    s_mov_b32 s5, s7
45 ; GFX10-NEXT:    s_mov_b32 s6, s8
46 ; GFX10-NEXT:    s_mov_b32 s7, s9
47 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm
48 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
49 ; GFX10-NEXT:    ; return to shader part epilog
51 ; GFX12-LABEL: getresinfo_1d:
52 ; GFX12:       ; %bb.0: ; %main_body
53 ; GFX12-NEXT:    s_mov_b32 s0, s2
54 ; GFX12-NEXT:    s_mov_b32 s1, s3
55 ; GFX12-NEXT:    s_mov_b32 s2, s4
56 ; GFX12-NEXT:    s_mov_b32 s3, s5
57 ; GFX12-NEXT:    s_mov_b32 s4, s6
58 ; GFX12-NEXT:    s_mov_b32 s5, s7
59 ; GFX12-NEXT:    s_mov_b32 s6, s8
60 ; GFX12-NEXT:    s_mov_b32 s7, s9
61 ; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D
62 ; GFX12-NEXT:    s_wait_loadcnt 0x0
63 ; GFX12-NEXT:    ; return to shader part epilog
64 main_body:
65   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
66   ret <4 x float> %v
69 define amdgpu_ps <4 x float> @getresinfo_2d(<8 x i32> inreg %rsrc, i32 %mip) {
70 ; GFX6-LABEL: getresinfo_2d:
71 ; GFX6:       ; %bb.0: ; %main_body
72 ; GFX6-NEXT:    s_mov_b32 s0, s2
73 ; GFX6-NEXT:    s_mov_b32 s1, s3
74 ; GFX6-NEXT:    s_mov_b32 s2, s4
75 ; GFX6-NEXT:    s_mov_b32 s3, s5
76 ; GFX6-NEXT:    s_mov_b32 s4, s6
77 ; GFX6-NEXT:    s_mov_b32 s5, s7
78 ; GFX6-NEXT:    s_mov_b32 s6, s8
79 ; GFX6-NEXT:    s_mov_b32 s7, s9
80 ; GFX6-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm
81 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
82 ; GFX6-NEXT:    ; return to shader part epilog
84 ; GFX8-LABEL: getresinfo_2d:
85 ; GFX8:       ; %bb.0: ; %main_body
86 ; GFX8-NEXT:    s_mov_b32 s0, s2
87 ; GFX8-NEXT:    s_mov_b32 s1, s3
88 ; GFX8-NEXT:    s_mov_b32 s2, s4
89 ; GFX8-NEXT:    s_mov_b32 s3, s5
90 ; GFX8-NEXT:    s_mov_b32 s4, s6
91 ; GFX8-NEXT:    s_mov_b32 s5, s7
92 ; GFX8-NEXT:    s_mov_b32 s6, s8
93 ; GFX8-NEXT:    s_mov_b32 s7, s9
94 ; GFX8-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm
95 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
96 ; GFX8-NEXT:    ; return to shader part epilog
98 ; GFX10-LABEL: getresinfo_2d:
99 ; GFX10:       ; %bb.0: ; %main_body
100 ; GFX10-NEXT:    s_mov_b32 s0, s2
101 ; GFX10-NEXT:    s_mov_b32 s1, s3
102 ; GFX10-NEXT:    s_mov_b32 s2, s4
103 ; GFX10-NEXT:    s_mov_b32 s3, s5
104 ; GFX10-NEXT:    s_mov_b32 s4, s6
105 ; GFX10-NEXT:    s_mov_b32 s5, s7
106 ; GFX10-NEXT:    s_mov_b32 s6, s8
107 ; GFX10-NEXT:    s_mov_b32 s7, s9
108 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm
109 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
110 ; GFX10-NEXT:    ; return to shader part epilog
112 ; GFX12-LABEL: getresinfo_2d:
113 ; GFX12:       ; %bb.0: ; %main_body
114 ; GFX12-NEXT:    s_mov_b32 s0, s2
115 ; GFX12-NEXT:    s_mov_b32 s1, s3
116 ; GFX12-NEXT:    s_mov_b32 s2, s4
117 ; GFX12-NEXT:    s_mov_b32 s3, s5
118 ; GFX12-NEXT:    s_mov_b32 s4, s6
119 ; GFX12-NEXT:    s_mov_b32 s5, s7
120 ; GFX12-NEXT:    s_mov_b32 s6, s8
121 ; GFX12-NEXT:    s_mov_b32 s7, s9
122 ; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D
123 ; GFX12-NEXT:    s_wait_loadcnt 0x0
124 ; GFX12-NEXT:    ; return to shader part epilog
125 main_body:
126   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2d.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
127   ret <4 x float> %v
130 define amdgpu_ps <4 x float> @getresinfo_3d(<8 x i32> inreg %rsrc, i32 %mip) {
131 ; GFX6-LABEL: getresinfo_3d:
132 ; GFX6:       ; %bb.0: ; %main_body
133 ; GFX6-NEXT:    s_mov_b32 s0, s2
134 ; GFX6-NEXT:    s_mov_b32 s1, s3
135 ; GFX6-NEXT:    s_mov_b32 s2, s4
136 ; GFX6-NEXT:    s_mov_b32 s3, s5
137 ; GFX6-NEXT:    s_mov_b32 s4, s6
138 ; GFX6-NEXT:    s_mov_b32 s5, s7
139 ; GFX6-NEXT:    s_mov_b32 s6, s8
140 ; GFX6-NEXT:    s_mov_b32 s7, s9
141 ; GFX6-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm
142 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
143 ; GFX6-NEXT:    ; return to shader part epilog
145 ; GFX8-LABEL: getresinfo_3d:
146 ; GFX8:       ; %bb.0: ; %main_body
147 ; GFX8-NEXT:    s_mov_b32 s0, s2
148 ; GFX8-NEXT:    s_mov_b32 s1, s3
149 ; GFX8-NEXT:    s_mov_b32 s2, s4
150 ; GFX8-NEXT:    s_mov_b32 s3, s5
151 ; GFX8-NEXT:    s_mov_b32 s4, s6
152 ; GFX8-NEXT:    s_mov_b32 s5, s7
153 ; GFX8-NEXT:    s_mov_b32 s6, s8
154 ; GFX8-NEXT:    s_mov_b32 s7, s9
155 ; GFX8-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm
156 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
157 ; GFX8-NEXT:    ; return to shader part epilog
159 ; GFX10-LABEL: getresinfo_3d:
160 ; GFX10:       ; %bb.0: ; %main_body
161 ; GFX10-NEXT:    s_mov_b32 s0, s2
162 ; GFX10-NEXT:    s_mov_b32 s1, s3
163 ; GFX10-NEXT:    s_mov_b32 s2, s4
164 ; GFX10-NEXT:    s_mov_b32 s3, s5
165 ; GFX10-NEXT:    s_mov_b32 s4, s6
166 ; GFX10-NEXT:    s_mov_b32 s5, s7
167 ; GFX10-NEXT:    s_mov_b32 s6, s8
168 ; GFX10-NEXT:    s_mov_b32 s7, s9
169 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm
170 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
171 ; GFX10-NEXT:    ; return to shader part epilog
173 ; GFX12-LABEL: getresinfo_3d:
174 ; GFX12:       ; %bb.0: ; %main_body
175 ; GFX12-NEXT:    s_mov_b32 s0, s2
176 ; GFX12-NEXT:    s_mov_b32 s1, s3
177 ; GFX12-NEXT:    s_mov_b32 s2, s4
178 ; GFX12-NEXT:    s_mov_b32 s3, s5
179 ; GFX12-NEXT:    s_mov_b32 s4, s6
180 ; GFX12-NEXT:    s_mov_b32 s5, s7
181 ; GFX12-NEXT:    s_mov_b32 s6, s8
182 ; GFX12-NEXT:    s_mov_b32 s7, s9
183 ; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D
184 ; GFX12-NEXT:    s_wait_loadcnt 0x0
185 ; GFX12-NEXT:    ; return to shader part epilog
186 main_body:
187   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.3d.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
188   ret <4 x float> %v
191 define amdgpu_ps <4 x float> @getresinfo_cube(<8 x i32> inreg %rsrc, i32 %mip) {
192 ; GFX6-LABEL: getresinfo_cube:
193 ; GFX6:       ; %bb.0: ; %main_body
194 ; GFX6-NEXT:    s_mov_b32 s0, s2
195 ; GFX6-NEXT:    s_mov_b32 s1, s3
196 ; GFX6-NEXT:    s_mov_b32 s2, s4
197 ; GFX6-NEXT:    s_mov_b32 s3, s5
198 ; GFX6-NEXT:    s_mov_b32 s4, s6
199 ; GFX6-NEXT:    s_mov_b32 s5, s7
200 ; GFX6-NEXT:    s_mov_b32 s6, s8
201 ; GFX6-NEXT:    s_mov_b32 s7, s9
202 ; GFX6-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da
203 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
204 ; GFX6-NEXT:    ; return to shader part epilog
206 ; GFX8-LABEL: getresinfo_cube:
207 ; GFX8:       ; %bb.0: ; %main_body
208 ; GFX8-NEXT:    s_mov_b32 s0, s2
209 ; GFX8-NEXT:    s_mov_b32 s1, s3
210 ; GFX8-NEXT:    s_mov_b32 s2, s4
211 ; GFX8-NEXT:    s_mov_b32 s3, s5
212 ; GFX8-NEXT:    s_mov_b32 s4, s6
213 ; GFX8-NEXT:    s_mov_b32 s5, s7
214 ; GFX8-NEXT:    s_mov_b32 s6, s8
215 ; GFX8-NEXT:    s_mov_b32 s7, s9
216 ; GFX8-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da
217 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
218 ; GFX8-NEXT:    ; return to shader part epilog
220 ; GFX10-LABEL: getresinfo_cube:
221 ; GFX10:       ; %bb.0: ; %main_body
222 ; GFX10-NEXT:    s_mov_b32 s0, s2
223 ; GFX10-NEXT:    s_mov_b32 s1, s3
224 ; GFX10-NEXT:    s_mov_b32 s2, s4
225 ; GFX10-NEXT:    s_mov_b32 s3, s5
226 ; GFX10-NEXT:    s_mov_b32 s4, s6
227 ; GFX10-NEXT:    s_mov_b32 s5, s7
228 ; GFX10-NEXT:    s_mov_b32 s6, s8
229 ; GFX10-NEXT:    s_mov_b32 s7, s9
230 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm
231 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
232 ; GFX10-NEXT:    ; return to shader part epilog
234 ; GFX12-LABEL: getresinfo_cube:
235 ; GFX12:       ; %bb.0: ; %main_body
236 ; GFX12-NEXT:    s_mov_b32 s0, s2
237 ; GFX12-NEXT:    s_mov_b32 s1, s3
238 ; GFX12-NEXT:    s_mov_b32 s2, s4
239 ; GFX12-NEXT:    s_mov_b32 s3, s5
240 ; GFX12-NEXT:    s_mov_b32 s4, s6
241 ; GFX12-NEXT:    s_mov_b32 s5, s7
242 ; GFX12-NEXT:    s_mov_b32 s6, s8
243 ; GFX12-NEXT:    s_mov_b32 s7, s9
244 ; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE
245 ; GFX12-NEXT:    s_wait_loadcnt 0x0
246 ; GFX12-NEXT:    ; return to shader part epilog
247 main_body:
248   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.cube.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
249   ret <4 x float> %v
252 define amdgpu_ps <4 x float> @getresinfo_1darray(<8 x i32> inreg %rsrc, i32 %mip) {
253 ; GFX6-LABEL: getresinfo_1darray:
254 ; GFX6:       ; %bb.0: ; %main_body
255 ; GFX6-NEXT:    s_mov_b32 s0, s2
256 ; GFX6-NEXT:    s_mov_b32 s1, s3
257 ; GFX6-NEXT:    s_mov_b32 s2, s4
258 ; GFX6-NEXT:    s_mov_b32 s3, s5
259 ; GFX6-NEXT:    s_mov_b32 s4, s6
260 ; GFX6-NEXT:    s_mov_b32 s5, s7
261 ; GFX6-NEXT:    s_mov_b32 s6, s8
262 ; GFX6-NEXT:    s_mov_b32 s7, s9
263 ; GFX6-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da
264 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
265 ; GFX6-NEXT:    ; return to shader part epilog
267 ; GFX8-LABEL: getresinfo_1darray:
268 ; GFX8:       ; %bb.0: ; %main_body
269 ; GFX8-NEXT:    s_mov_b32 s0, s2
270 ; GFX8-NEXT:    s_mov_b32 s1, s3
271 ; GFX8-NEXT:    s_mov_b32 s2, s4
272 ; GFX8-NEXT:    s_mov_b32 s3, s5
273 ; GFX8-NEXT:    s_mov_b32 s4, s6
274 ; GFX8-NEXT:    s_mov_b32 s5, s7
275 ; GFX8-NEXT:    s_mov_b32 s6, s8
276 ; GFX8-NEXT:    s_mov_b32 s7, s9
277 ; GFX8-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da
278 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
279 ; GFX8-NEXT:    ; return to shader part epilog
281 ; GFX10-LABEL: getresinfo_1darray:
282 ; GFX10:       ; %bb.0: ; %main_body
283 ; GFX10-NEXT:    s_mov_b32 s0, s2
284 ; GFX10-NEXT:    s_mov_b32 s1, s3
285 ; GFX10-NEXT:    s_mov_b32 s2, s4
286 ; GFX10-NEXT:    s_mov_b32 s3, s5
287 ; GFX10-NEXT:    s_mov_b32 s4, s6
288 ; GFX10-NEXT:    s_mov_b32 s5, s7
289 ; GFX10-NEXT:    s_mov_b32 s6, s8
290 ; GFX10-NEXT:    s_mov_b32 s7, s9
291 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm
292 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
293 ; GFX10-NEXT:    ; return to shader part epilog
295 ; GFX12-LABEL: getresinfo_1darray:
296 ; GFX12:       ; %bb.0: ; %main_body
297 ; GFX12-NEXT:    s_mov_b32 s0, s2
298 ; GFX12-NEXT:    s_mov_b32 s1, s3
299 ; GFX12-NEXT:    s_mov_b32 s2, s4
300 ; GFX12-NEXT:    s_mov_b32 s3, s5
301 ; GFX12-NEXT:    s_mov_b32 s4, s6
302 ; GFX12-NEXT:    s_mov_b32 s5, s7
303 ; GFX12-NEXT:    s_mov_b32 s6, s8
304 ; GFX12-NEXT:    s_mov_b32 s7, s9
305 ; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY
306 ; GFX12-NEXT:    s_wait_loadcnt 0x0
307 ; GFX12-NEXT:    ; return to shader part epilog
308 main_body:
309   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.1darray.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
310   ret <4 x float> %v
313 define amdgpu_ps <4 x float> @getresinfo_2darray(<8 x i32> inreg %rsrc, i32 %mip) {
314 ; GFX6-LABEL: getresinfo_2darray:
315 ; GFX6:       ; %bb.0: ; %main_body
316 ; GFX6-NEXT:    s_mov_b32 s0, s2
317 ; GFX6-NEXT:    s_mov_b32 s1, s3
318 ; GFX6-NEXT:    s_mov_b32 s2, s4
319 ; GFX6-NEXT:    s_mov_b32 s3, s5
320 ; GFX6-NEXT:    s_mov_b32 s4, s6
321 ; GFX6-NEXT:    s_mov_b32 s5, s7
322 ; GFX6-NEXT:    s_mov_b32 s6, s8
323 ; GFX6-NEXT:    s_mov_b32 s7, s9
324 ; GFX6-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da
325 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
326 ; GFX6-NEXT:    ; return to shader part epilog
328 ; GFX8-LABEL: getresinfo_2darray:
329 ; GFX8:       ; %bb.0: ; %main_body
330 ; GFX8-NEXT:    s_mov_b32 s0, s2
331 ; GFX8-NEXT:    s_mov_b32 s1, s3
332 ; GFX8-NEXT:    s_mov_b32 s2, s4
333 ; GFX8-NEXT:    s_mov_b32 s3, s5
334 ; GFX8-NEXT:    s_mov_b32 s4, s6
335 ; GFX8-NEXT:    s_mov_b32 s5, s7
336 ; GFX8-NEXT:    s_mov_b32 s6, s8
337 ; GFX8-NEXT:    s_mov_b32 s7, s9
338 ; GFX8-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da
339 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
340 ; GFX8-NEXT:    ; return to shader part epilog
342 ; GFX10-LABEL: getresinfo_2darray:
343 ; GFX10:       ; %bb.0: ; %main_body
344 ; GFX10-NEXT:    s_mov_b32 s0, s2
345 ; GFX10-NEXT:    s_mov_b32 s1, s3
346 ; GFX10-NEXT:    s_mov_b32 s2, s4
347 ; GFX10-NEXT:    s_mov_b32 s3, s5
348 ; GFX10-NEXT:    s_mov_b32 s4, s6
349 ; GFX10-NEXT:    s_mov_b32 s5, s7
350 ; GFX10-NEXT:    s_mov_b32 s6, s8
351 ; GFX10-NEXT:    s_mov_b32 s7, s9
352 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm
353 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
354 ; GFX10-NEXT:    ; return to shader part epilog
356 ; GFX12-LABEL: getresinfo_2darray:
357 ; GFX12:       ; %bb.0: ; %main_body
358 ; GFX12-NEXT:    s_mov_b32 s0, s2
359 ; GFX12-NEXT:    s_mov_b32 s1, s3
360 ; GFX12-NEXT:    s_mov_b32 s2, s4
361 ; GFX12-NEXT:    s_mov_b32 s3, s5
362 ; GFX12-NEXT:    s_mov_b32 s4, s6
363 ; GFX12-NEXT:    s_mov_b32 s5, s7
364 ; GFX12-NEXT:    s_mov_b32 s6, s8
365 ; GFX12-NEXT:    s_mov_b32 s7, s9
366 ; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY
367 ; GFX12-NEXT:    s_wait_loadcnt 0x0
368 ; GFX12-NEXT:    ; return to shader part epilog
369 main_body:
370   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2darray.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
371   ret <4 x float> %v
374 define amdgpu_ps <4 x float> @getresinfo_2dmsaa(<8 x i32> inreg %rsrc, i32 %mip) {
375 ; GFX6-LABEL: getresinfo_2dmsaa:
376 ; GFX6:       ; %bb.0: ; %main_body
377 ; GFX6-NEXT:    s_mov_b32 s0, s2
378 ; GFX6-NEXT:    s_mov_b32 s1, s3
379 ; GFX6-NEXT:    s_mov_b32 s2, s4
380 ; GFX6-NEXT:    s_mov_b32 s3, s5
381 ; GFX6-NEXT:    s_mov_b32 s4, s6
382 ; GFX6-NEXT:    s_mov_b32 s5, s7
383 ; GFX6-NEXT:    s_mov_b32 s6, s8
384 ; GFX6-NEXT:    s_mov_b32 s7, s9
385 ; GFX6-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm
386 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
387 ; GFX6-NEXT:    ; return to shader part epilog
389 ; GFX8-LABEL: getresinfo_2dmsaa:
390 ; GFX8:       ; %bb.0: ; %main_body
391 ; GFX8-NEXT:    s_mov_b32 s0, s2
392 ; GFX8-NEXT:    s_mov_b32 s1, s3
393 ; GFX8-NEXT:    s_mov_b32 s2, s4
394 ; GFX8-NEXT:    s_mov_b32 s3, s5
395 ; GFX8-NEXT:    s_mov_b32 s4, s6
396 ; GFX8-NEXT:    s_mov_b32 s5, s7
397 ; GFX8-NEXT:    s_mov_b32 s6, s8
398 ; GFX8-NEXT:    s_mov_b32 s7, s9
399 ; GFX8-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm
400 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
401 ; GFX8-NEXT:    ; return to shader part epilog
403 ; GFX10-LABEL: getresinfo_2dmsaa:
404 ; GFX10:       ; %bb.0: ; %main_body
405 ; GFX10-NEXT:    s_mov_b32 s0, s2
406 ; GFX10-NEXT:    s_mov_b32 s1, s3
407 ; GFX10-NEXT:    s_mov_b32 s2, s4
408 ; GFX10-NEXT:    s_mov_b32 s3, s5
409 ; GFX10-NEXT:    s_mov_b32 s4, s6
410 ; GFX10-NEXT:    s_mov_b32 s5, s7
411 ; GFX10-NEXT:    s_mov_b32 s6, s8
412 ; GFX10-NEXT:    s_mov_b32 s7, s9
413 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm
414 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
415 ; GFX10-NEXT:    ; return to shader part epilog
417 ; GFX12-LABEL: getresinfo_2dmsaa:
418 ; GFX12:       ; %bb.0: ; %main_body
419 ; GFX12-NEXT:    s_mov_b32 s0, s2
420 ; GFX12-NEXT:    s_mov_b32 s1, s3
421 ; GFX12-NEXT:    s_mov_b32 s2, s4
422 ; GFX12-NEXT:    s_mov_b32 s3, s5
423 ; GFX12-NEXT:    s_mov_b32 s4, s6
424 ; GFX12-NEXT:    s_mov_b32 s5, s7
425 ; GFX12-NEXT:    s_mov_b32 s6, s8
426 ; GFX12-NEXT:    s_mov_b32 s7, s9
427 ; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA
428 ; GFX12-NEXT:    s_wait_loadcnt 0x0
429 ; GFX12-NEXT:    ; return to shader part epilog
430 main_body:
431   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2dmsaa.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
432   ret <4 x float> %v
435 define amdgpu_ps <4 x float> @getresinfo_2darraymsaa(<8 x i32> inreg %rsrc, i32 %mip) {
436 ; GFX6-LABEL: getresinfo_2darraymsaa:
437 ; GFX6:       ; %bb.0: ; %main_body
438 ; GFX6-NEXT:    s_mov_b32 s0, s2
439 ; GFX6-NEXT:    s_mov_b32 s1, s3
440 ; GFX6-NEXT:    s_mov_b32 s2, s4
441 ; GFX6-NEXT:    s_mov_b32 s3, s5
442 ; GFX6-NEXT:    s_mov_b32 s4, s6
443 ; GFX6-NEXT:    s_mov_b32 s5, s7
444 ; GFX6-NEXT:    s_mov_b32 s6, s8
445 ; GFX6-NEXT:    s_mov_b32 s7, s9
446 ; GFX6-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da
447 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
448 ; GFX6-NEXT:    ; return to shader part epilog
450 ; GFX8-LABEL: getresinfo_2darraymsaa:
451 ; GFX8:       ; %bb.0: ; %main_body
452 ; GFX8-NEXT:    s_mov_b32 s0, s2
453 ; GFX8-NEXT:    s_mov_b32 s1, s3
454 ; GFX8-NEXT:    s_mov_b32 s2, s4
455 ; GFX8-NEXT:    s_mov_b32 s3, s5
456 ; GFX8-NEXT:    s_mov_b32 s4, s6
457 ; GFX8-NEXT:    s_mov_b32 s5, s7
458 ; GFX8-NEXT:    s_mov_b32 s6, s8
459 ; GFX8-NEXT:    s_mov_b32 s7, s9
460 ; GFX8-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da
461 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
462 ; GFX8-NEXT:    ; return to shader part epilog
464 ; GFX10-LABEL: getresinfo_2darraymsaa:
465 ; GFX10:       ; %bb.0: ; %main_body
466 ; GFX10-NEXT:    s_mov_b32 s0, s2
467 ; GFX10-NEXT:    s_mov_b32 s1, s3
468 ; GFX10-NEXT:    s_mov_b32 s2, s4
469 ; GFX10-NEXT:    s_mov_b32 s3, s5
470 ; GFX10-NEXT:    s_mov_b32 s4, s6
471 ; GFX10-NEXT:    s_mov_b32 s5, s7
472 ; GFX10-NEXT:    s_mov_b32 s6, s8
473 ; GFX10-NEXT:    s_mov_b32 s7, s9
474 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm
475 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
476 ; GFX10-NEXT:    ; return to shader part epilog
478 ; GFX12-LABEL: getresinfo_2darraymsaa:
479 ; GFX12:       ; %bb.0: ; %main_body
480 ; GFX12-NEXT:    s_mov_b32 s0, s2
481 ; GFX12-NEXT:    s_mov_b32 s1, s3
482 ; GFX12-NEXT:    s_mov_b32 s2, s4
483 ; GFX12-NEXT:    s_mov_b32 s3, s5
484 ; GFX12-NEXT:    s_mov_b32 s4, s6
485 ; GFX12-NEXT:    s_mov_b32 s5, s7
486 ; GFX12-NEXT:    s_mov_b32 s6, s8
487 ; GFX12-NEXT:    s_mov_b32 s7, s9
488 ; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY
489 ; GFX12-NEXT:    s_wait_loadcnt 0x0
490 ; GFX12-NEXT:    ; return to shader part epilog
491 main_body:
492   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2darraymsaa.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
493   ret <4 x float> %v
496 define amdgpu_ps <3 x float> @getresinfo_dmask7(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %mip) {
497 ; GFX6-LABEL: getresinfo_dmask7:
498 ; GFX6:       ; %bb.0: ; %main_body
499 ; GFX6-NEXT:    s_mov_b32 s0, s2
500 ; GFX6-NEXT:    s_mov_b32 s1, s3
501 ; GFX6-NEXT:    s_mov_b32 s2, s4
502 ; GFX6-NEXT:    s_mov_b32 s3, s5
503 ; GFX6-NEXT:    s_mov_b32 s4, s6
504 ; GFX6-NEXT:    s_mov_b32 s5, s7
505 ; GFX6-NEXT:    s_mov_b32 s6, s8
506 ; GFX6-NEXT:    s_mov_b32 s7, s9
507 ; GFX6-NEXT:    image_get_resinfo v[0:2], v0, s[0:7] dmask:0x7 unorm
508 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
509 ; GFX6-NEXT:    ; return to shader part epilog
511 ; GFX8-LABEL: getresinfo_dmask7:
512 ; GFX8:       ; %bb.0: ; %main_body
513 ; GFX8-NEXT:    s_mov_b32 s0, s2
514 ; GFX8-NEXT:    s_mov_b32 s1, s3
515 ; GFX8-NEXT:    s_mov_b32 s2, s4
516 ; GFX8-NEXT:    s_mov_b32 s3, s5
517 ; GFX8-NEXT:    s_mov_b32 s4, s6
518 ; GFX8-NEXT:    s_mov_b32 s5, s7
519 ; GFX8-NEXT:    s_mov_b32 s6, s8
520 ; GFX8-NEXT:    s_mov_b32 s7, s9
521 ; GFX8-NEXT:    image_get_resinfo v[0:2], v0, s[0:7] dmask:0x7 unorm
522 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
523 ; GFX8-NEXT:    ; return to shader part epilog
525 ; GFX10-LABEL: getresinfo_dmask7:
526 ; GFX10:       ; %bb.0: ; %main_body
527 ; GFX10-NEXT:    s_mov_b32 s0, s2
528 ; GFX10-NEXT:    s_mov_b32 s1, s3
529 ; GFX10-NEXT:    s_mov_b32 s2, s4
530 ; GFX10-NEXT:    s_mov_b32 s3, s5
531 ; GFX10-NEXT:    s_mov_b32 s4, s6
532 ; GFX10-NEXT:    s_mov_b32 s5, s7
533 ; GFX10-NEXT:    s_mov_b32 s6, s8
534 ; GFX10-NEXT:    s_mov_b32 s7, s9
535 ; GFX10-NEXT:    image_get_resinfo v[0:2], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm
536 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
537 ; GFX10-NEXT:    ; return to shader part epilog
539 ; GFX12-LABEL: getresinfo_dmask7:
540 ; GFX12:       ; %bb.0: ; %main_body
541 ; GFX12-NEXT:    s_mov_b32 s0, s2
542 ; GFX12-NEXT:    s_mov_b32 s1, s3
543 ; GFX12-NEXT:    s_mov_b32 s2, s4
544 ; GFX12-NEXT:    s_mov_b32 s3, s5
545 ; GFX12-NEXT:    s_mov_b32 s4, s6
546 ; GFX12-NEXT:    s_mov_b32 s5, s7
547 ; GFX12-NEXT:    s_mov_b32 s6, s8
548 ; GFX12-NEXT:    s_mov_b32 s7, s9
549 ; GFX12-NEXT:    image_get_resinfo v[0:2], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D
550 ; GFX12-NEXT:    s_wait_loadcnt 0x0
551 ; GFX12-NEXT:    ; return to shader part epilog
552 main_body:
553   %r = call <3 x float> @llvm.amdgcn.image.getresinfo.1d.v3f32.i32(i32 7, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
554   ret <3 x float> %r
557 define amdgpu_ps <2 x float> @getresinfo_dmask3(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %mip) {
558 ; GFX6-LABEL: getresinfo_dmask3:
559 ; GFX6:       ; %bb.0: ; %main_body
560 ; GFX6-NEXT:    s_mov_b32 s0, s2
561 ; GFX6-NEXT:    s_mov_b32 s1, s3
562 ; GFX6-NEXT:    s_mov_b32 s2, s4
563 ; GFX6-NEXT:    s_mov_b32 s3, s5
564 ; GFX6-NEXT:    s_mov_b32 s4, s6
565 ; GFX6-NEXT:    s_mov_b32 s5, s7
566 ; GFX6-NEXT:    s_mov_b32 s6, s8
567 ; GFX6-NEXT:    s_mov_b32 s7, s9
568 ; GFX6-NEXT:    image_get_resinfo v[0:1], v0, s[0:7] dmask:0x3 unorm
569 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
570 ; GFX6-NEXT:    ; return to shader part epilog
572 ; GFX8-LABEL: getresinfo_dmask3:
573 ; GFX8:       ; %bb.0: ; %main_body
574 ; GFX8-NEXT:    s_mov_b32 s0, s2
575 ; GFX8-NEXT:    s_mov_b32 s1, s3
576 ; GFX8-NEXT:    s_mov_b32 s2, s4
577 ; GFX8-NEXT:    s_mov_b32 s3, s5
578 ; GFX8-NEXT:    s_mov_b32 s4, s6
579 ; GFX8-NEXT:    s_mov_b32 s5, s7
580 ; GFX8-NEXT:    s_mov_b32 s6, s8
581 ; GFX8-NEXT:    s_mov_b32 s7, s9
582 ; GFX8-NEXT:    image_get_resinfo v[0:1], v0, s[0:7] dmask:0x3 unorm
583 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
584 ; GFX8-NEXT:    ; return to shader part epilog
586 ; GFX10-LABEL: getresinfo_dmask3:
587 ; GFX10:       ; %bb.0: ; %main_body
588 ; GFX10-NEXT:    s_mov_b32 s0, s2
589 ; GFX10-NEXT:    s_mov_b32 s1, s3
590 ; GFX10-NEXT:    s_mov_b32 s2, s4
591 ; GFX10-NEXT:    s_mov_b32 s3, s5
592 ; GFX10-NEXT:    s_mov_b32 s4, s6
593 ; GFX10-NEXT:    s_mov_b32 s5, s7
594 ; GFX10-NEXT:    s_mov_b32 s6, s8
595 ; GFX10-NEXT:    s_mov_b32 s7, s9
596 ; GFX10-NEXT:    image_get_resinfo v[0:1], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm
597 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
598 ; GFX10-NEXT:    ; return to shader part epilog
600 ; GFX12-LABEL: getresinfo_dmask3:
601 ; GFX12:       ; %bb.0: ; %main_body
602 ; GFX12-NEXT:    s_mov_b32 s0, s2
603 ; GFX12-NEXT:    s_mov_b32 s1, s3
604 ; GFX12-NEXT:    s_mov_b32 s2, s4
605 ; GFX12-NEXT:    s_mov_b32 s3, s5
606 ; GFX12-NEXT:    s_mov_b32 s4, s6
607 ; GFX12-NEXT:    s_mov_b32 s5, s7
608 ; GFX12-NEXT:    s_mov_b32 s6, s8
609 ; GFX12-NEXT:    s_mov_b32 s7, s9
610 ; GFX12-NEXT:    image_get_resinfo v[0:1], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D
611 ; GFX12-NEXT:    s_wait_loadcnt 0x0
612 ; GFX12-NEXT:    ; return to shader part epilog
613 main_body:
614   %r = call <2 x float> @llvm.amdgcn.image.getresinfo.1d.v2f32.i32(i32 3, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
615   ret <2 x float> %r
618 define amdgpu_ps float @getresinfo_dmask1(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %mip) {
619 ; GFX6-LABEL: getresinfo_dmask1:
620 ; GFX6:       ; %bb.0: ; %main_body
621 ; GFX6-NEXT:    s_mov_b32 s0, s2
622 ; GFX6-NEXT:    s_mov_b32 s1, s3
623 ; GFX6-NEXT:    s_mov_b32 s2, s4
624 ; GFX6-NEXT:    s_mov_b32 s3, s5
625 ; GFX6-NEXT:    s_mov_b32 s4, s6
626 ; GFX6-NEXT:    s_mov_b32 s5, s7
627 ; GFX6-NEXT:    s_mov_b32 s6, s8
628 ; GFX6-NEXT:    s_mov_b32 s7, s9
629 ; GFX6-NEXT:    image_get_resinfo v0, v0, s[0:7] dmask:0x1 unorm
630 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
631 ; GFX6-NEXT:    ; return to shader part epilog
633 ; GFX8-LABEL: getresinfo_dmask1:
634 ; GFX8:       ; %bb.0: ; %main_body
635 ; GFX8-NEXT:    s_mov_b32 s0, s2
636 ; GFX8-NEXT:    s_mov_b32 s1, s3
637 ; GFX8-NEXT:    s_mov_b32 s2, s4
638 ; GFX8-NEXT:    s_mov_b32 s3, s5
639 ; GFX8-NEXT:    s_mov_b32 s4, s6
640 ; GFX8-NEXT:    s_mov_b32 s5, s7
641 ; GFX8-NEXT:    s_mov_b32 s6, s8
642 ; GFX8-NEXT:    s_mov_b32 s7, s9
643 ; GFX8-NEXT:    image_get_resinfo v0, v0, s[0:7] dmask:0x1 unorm
644 ; GFX8-NEXT:    s_waitcnt vmcnt(0)
645 ; GFX8-NEXT:    ; return to shader part epilog
647 ; GFX10-LABEL: getresinfo_dmask1:
648 ; GFX10:       ; %bb.0: ; %main_body
649 ; GFX10-NEXT:    s_mov_b32 s0, s2
650 ; GFX10-NEXT:    s_mov_b32 s1, s3
651 ; GFX10-NEXT:    s_mov_b32 s2, s4
652 ; GFX10-NEXT:    s_mov_b32 s3, s5
653 ; GFX10-NEXT:    s_mov_b32 s4, s6
654 ; GFX10-NEXT:    s_mov_b32 s5, s7
655 ; GFX10-NEXT:    s_mov_b32 s6, s8
656 ; GFX10-NEXT:    s_mov_b32 s7, s9
657 ; GFX10-NEXT:    image_get_resinfo v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm
658 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
659 ; GFX10-NEXT:    ; return to shader part epilog
661 ; GFX12-LABEL: getresinfo_dmask1:
662 ; GFX12:       ; %bb.0: ; %main_body
663 ; GFX12-NEXT:    s_mov_b32 s0, s2
664 ; GFX12-NEXT:    s_mov_b32 s1, s3
665 ; GFX12-NEXT:    s_mov_b32 s2, s4
666 ; GFX12-NEXT:    s_mov_b32 s3, s5
667 ; GFX12-NEXT:    s_mov_b32 s4, s6
668 ; GFX12-NEXT:    s_mov_b32 s5, s7
669 ; GFX12-NEXT:    s_mov_b32 s6, s8
670 ; GFX12-NEXT:    s_mov_b32 s7, s9
671 ; GFX12-NEXT:    image_get_resinfo v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D
672 ; GFX12-NEXT:    s_wait_loadcnt 0x0
673 ; GFX12-NEXT:    ; return to shader part epilog
674 main_body:
675   %r = call float @llvm.amdgcn.image.getresinfo.1d.f32.i32(i32 1, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
676   ret float %r
679 define amdgpu_ps <4 x float> @getresinfo_dmask0(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %mip) {
680 ; GFX6-LABEL: getresinfo_dmask0:
681 ; GFX6:       ; %bb.0: ; %main_body
682 ; GFX6-NEXT:    ; return to shader part epilog
684 ; GFX8-LABEL: getresinfo_dmask0:
685 ; GFX8:       ; %bb.0: ; %main_body
686 ; GFX8-NEXT:    ; return to shader part epilog
688 ; GFX10-LABEL: getresinfo_dmask0:
689 ; GFX10:       ; %bb.0: ; %main_body
690 ; GFX10-NEXT:    ; return to shader part epilog
692 ; GFX12-LABEL: getresinfo_dmask0:
693 ; GFX12:       ; %bb.0: ; %main_body
694 ; GFX12-NEXT:    ; return to shader part epilog
695 main_body:
696   %r = call <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i32(i32 0, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)
697   ret <4 x float> %r
700 declare <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
701 declare <3 x float> @llvm.amdgcn.image.getresinfo.1d.v3f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
702 declare <2 x float> @llvm.amdgcn.image.getresinfo.1d.v2f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
703 declare float @llvm.amdgcn.image.getresinfo.1d.f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
704 declare <4 x float> @llvm.amdgcn.image.getresinfo.2d.v4f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
705 declare <4 x float> @llvm.amdgcn.image.getresinfo.3d.v4f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
706 declare <4 x float> @llvm.amdgcn.image.getresinfo.cube.v4f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
707 declare <4 x float> @llvm.amdgcn.image.getresinfo.1darray.v4f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
708 declare <4 x float> @llvm.amdgcn.image.getresinfo.2darray.v4f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
709 declare <4 x float> @llvm.amdgcn.image.getresinfo.2dmsaa.v4f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
710 declare <4 x float> @llvm.amdgcn.image.getresinfo.2darraymsaa.v4f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #1
712 attributes #0 = { nounwind }
713 attributes #1 = { nounwind readnone }