[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / llvm.amdgcn.image.a16.encode.ll
blob37bd10c8e0b77fafc8f6bf346b9b27ddd48d4b5f
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -march=amdgcn -mcpu=gfx900 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX9 %s
3 ; RUN: llc -march=amdgcn -mcpu=gfx1010 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX10 %s
4 ; RUN: llc -march=amdgcn -mcpu=gfx1100 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX11 %s
6 define amdgpu_ps <4 x float> @load_1d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
7 ; GFX9-LABEL: load_1d:
8 ; GFX9:       ; %bb.0: ; %main_body
9 ; GFX9-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x00,0xf0,0x00,0x00,0x00,0x00]
10 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
11 ; GFX9-NEXT:    ; return to shader part epilog
13 ; GFX10-LABEL: load_1d:
14 ; GFX10:       ; %bb.0: ; %main_body
15 ; GFX10-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40]
16 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
17 ; GFX10-NEXT:    ; return to shader part epilog
19 ; GFX11-LABEL: load_1d:
20 ; GFX11:       ; %bb.0: ; %main_body
21 ; GFX11-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00]
22 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
23 ; GFX11-NEXT:    ; return to shader part epilog
24 main_body:
25   %s = extractelement <2 x i16> %coords, i32 0
26   %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i16(i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 0)
27   ret <4 x float> %v
30 define amdgpu_ps <4 x float> @load_2d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
31 ; GFX9-LABEL: load_2d:
32 ; GFX9:       ; %bb.0: ; %main_body
33 ; GFX9-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x00,0xf0,0x00,0x00,0x00,0x00]
34 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
35 ; GFX9-NEXT:    ; return to shader part epilog
37 ; GFX10-LABEL: load_2d:
38 ; GFX10:       ; %bb.0: ; %main_body
39 ; GFX10-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x08,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40]
40 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
41 ; GFX10-NEXT:    ; return to shader part epilog
43 ; GFX11-LABEL: load_2d:
44 ; GFX11:       ; %bb.0: ; %main_body
45 ; GFX11-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x84,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00]
46 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
47 ; GFX11-NEXT:    ; return to shader part epilog
48 main_body:
49   %s = extractelement <2 x i16> %coords, i32 0
50   %t = extractelement <2 x i16> %coords, i32 1
51   %v = call <4 x float> @llvm.amdgcn.image.load.2d.v4f32.i16(i32 15, i16 %s, i16 %t, <8 x i32> %rsrc, i32 0, i32 0)
52   ret <4 x float> %v
55 define amdgpu_ps <4 x float> @load_3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
56 ; GFX9-LABEL: load_3d:
57 ; GFX9:       ; %bb.0: ; %main_body
58 ; GFX9-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x00,0xf0,0x00,0x00,0x00,0x00]
59 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
60 ; GFX9-NEXT:    ; return to shader part epilog
62 ; GFX10-LABEL: load_3d:
63 ; GFX10:       ; %bb.0: ; %main_body
64 ; GFX10-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x10,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40]
65 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
66 ; GFX10-NEXT:    ; return to shader part epilog
68 ; GFX11-LABEL: load_3d:
69 ; GFX11:       ; %bb.0: ; %main_body
70 ; GFX11-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x88,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00]
71 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
72 ; GFX11-NEXT:    ; return to shader part epilog
73 main_body:
74   %s = extractelement <2 x i16> %coords_lo, i32 0
75   %t = extractelement <2 x i16> %coords_lo, i32 1
76   %r = extractelement <2 x i16> %coords_hi, i32 0
77   %v = call <4 x float> @llvm.amdgcn.image.load.3d.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %r, <8 x i32> %rsrc, i32 0, i32 0)
78   ret <4 x float> %v
81 define amdgpu_ps <4 x float> @load_cube(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
82 ; GFX9-LABEL: load_cube:
83 ; GFX9:       ; %bb.0: ; %main_body
84 ; GFX9-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x00,0xf0,0x00,0x00,0x00,0x00]
85 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
86 ; GFX9-NEXT:    ; return to shader part epilog
88 ; GFX10-LABEL: load_cube:
89 ; GFX10:       ; %bb.0: ; %main_body
90 ; GFX10-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x18,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40]
91 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
92 ; GFX10-NEXT:    ; return to shader part epilog
94 ; GFX11-LABEL: load_cube:
95 ; GFX11:       ; %bb.0: ; %main_body
96 ; GFX11-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x8c,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00]
97 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
98 ; GFX11-NEXT:    ; return to shader part epilog
99 main_body:
100   %s = extractelement <2 x i16> %coords_lo, i32 0
101   %t = extractelement <2 x i16> %coords_lo, i32 1
102   %slice = extractelement <2 x i16> %coords_hi, i32 0
103   %v = call <4 x float> @llvm.amdgcn.image.load.cube.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0)
104   ret <4 x float> %v
107 define amdgpu_ps <4 x float> @load_1darray(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
108 ; GFX9-LABEL: load_1darray:
109 ; GFX9:       ; %bb.0: ; %main_body
110 ; GFX9-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x00,0xf0,0x00,0x00,0x00,0x00]
111 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
112 ; GFX9-NEXT:    ; return to shader part epilog
114 ; GFX10-LABEL: load_1darray:
115 ; GFX10:       ; %bb.0: ; %main_body
116 ; GFX10-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x20,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40]
117 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
118 ; GFX10-NEXT:    ; return to shader part epilog
120 ; GFX11-LABEL: load_1darray:
121 ; GFX11:       ; %bb.0: ; %main_body
122 ; GFX11-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x90,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00]
123 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
124 ; GFX11-NEXT:    ; return to shader part epilog
125 main_body:
126   %s = extractelement <2 x i16> %coords, i32 0
127   %slice = extractelement <2 x i16> %coords, i32 1
128   %v = call <4 x float> @llvm.amdgcn.image.load.1darray.v4f32.i16(i32 15, i16 %s, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0)
129   ret <4 x float> %v
132 define amdgpu_ps <4 x float> @load_2darray(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
133 ; GFX9-LABEL: load_2darray:
134 ; GFX9:       ; %bb.0: ; %main_body
135 ; GFX9-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x00,0xf0,0x00,0x00,0x00,0x00]
136 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
137 ; GFX9-NEXT:    ; return to shader part epilog
139 ; GFX10-LABEL: load_2darray:
140 ; GFX10:       ; %bb.0: ; %main_body
141 ; GFX10-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x28,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40]
142 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
143 ; GFX10-NEXT:    ; return to shader part epilog
145 ; GFX11-LABEL: load_2darray:
146 ; GFX11:       ; %bb.0: ; %main_body
147 ; GFX11-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x94,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00]
148 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
149 ; GFX11-NEXT:    ; return to shader part epilog
150 main_body:
151   %s = extractelement <2 x i16> %coords_lo, i32 0
152   %t = extractelement <2 x i16> %coords_lo, i32 1
153   %slice = extractelement <2 x i16> %coords_hi, i32 0
154   %v = call <4 x float> @llvm.amdgcn.image.load.2darray.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0)
155   ret <4 x float> %v
158 define amdgpu_ps <4 x float> @load_2dmsaa(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
159 ; GFX9-LABEL: load_2dmsaa:
160 ; GFX9:       ; %bb.0: ; %main_body
161 ; GFX9-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x00,0xf0,0x00,0x00,0x00,0x00]
162 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
163 ; GFX9-NEXT:    ; return to shader part epilog
165 ; GFX10-LABEL: load_2dmsaa:
166 ; GFX10:       ; %bb.0: ; %main_body
167 ; GFX10-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x30,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40]
168 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
169 ; GFX10-NEXT:    ; return to shader part epilog
171 ; GFX11-LABEL: load_2dmsaa:
172 ; GFX11:       ; %bb.0: ; %main_body
173 ; GFX11-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x98,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00]
174 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
175 ; GFX11-NEXT:    ; return to shader part epilog
176 main_body:
177   %s = extractelement <2 x i16> %coords_lo, i32 0
178   %t = extractelement <2 x i16> %coords_lo, i32 1
179   %fragid = extractelement <2 x i16> %coords_hi, i32 0
180   %v = call <4 x float> @llvm.amdgcn.image.load.2dmsaa.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %fragid, <8 x i32> %rsrc, i32 0, i32 0)
181   ret <4 x float> %v
184 define amdgpu_ps <4 x float> @load_2darraymsaa(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
185 ; GFX9-LABEL: load_2darraymsaa:
186 ; GFX9:       ; %bb.0: ; %main_body
187 ; GFX9-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x00,0xf0,0x00,0x00,0x00,0x00]
188 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
189 ; GFX9-NEXT:    ; return to shader part epilog
191 ; GFX10-LABEL: load_2darraymsaa:
192 ; GFX10:       ; %bb.0: ; %main_body
193 ; GFX10-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x38,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40]
194 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
195 ; GFX10-NEXT:    ; return to shader part epilog
197 ; GFX11-LABEL: load_2darraymsaa:
198 ; GFX11:       ; %bb.0: ; %main_body
199 ; GFX11-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x9c,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00]
200 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
201 ; GFX11-NEXT:    ; return to shader part epilog
202 main_body:
203   %s = extractelement <2 x i16> %coords_lo, i32 0
204   %t = extractelement <2 x i16> %coords_lo, i32 1
205   %slice = extractelement <2 x i16> %coords_hi, i32 0
206   %fragid = extractelement <2 x i16> %coords_hi, i32 1
207   %v = call <4 x float> @llvm.amdgcn.image.load.2darraymsaa.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %slice, i16 %fragid, <8 x i32> %rsrc, i32 0, i32 0)
208   ret <4 x float> %v
211 define amdgpu_ps <4 x float> @load_mip_1d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
212 ; GFX9-LABEL: load_mip_1d:
213 ; GFX9:       ; %bb.0: ; %main_body
214 ; GFX9-NEXT:    image_load_mip v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x04,0xf0,0x00,0x00,0x00,0x00]
215 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
216 ; GFX9-NEXT:    ; return to shader part epilog
218 ; GFX10-LABEL: load_mip_1d:
219 ; GFX10:       ; %bb.0: ; %main_body
220 ; GFX10-NEXT:    image_load_mip v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40]
221 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
222 ; GFX10-NEXT:    ; return to shader part epilog
224 ; GFX11-LABEL: load_mip_1d:
225 ; GFX11:       ; %bb.0: ; %main_body
226 ; GFX11-NEXT:    image_load_mip v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00]
227 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
228 ; GFX11-NEXT:    ; return to shader part epilog
229 main_body:
230   %s = extractelement <2 x i16> %coords, i32 0
231   %mip = extractelement <2 x i16> %coords, i32 1
232   %v = call <4 x float> @llvm.amdgcn.image.load.mip.1d.v4f32.i16(i32 15, i16 %s, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
233   ret <4 x float> %v
236 define amdgpu_ps <4 x float> @load_mip_2d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
237 ; GFX9-LABEL: load_mip_2d:
238 ; GFX9:       ; %bb.0: ; %main_body
239 ; GFX9-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x04,0xf0,0x00,0x00,0x00,0x00]
240 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
241 ; GFX9-NEXT:    ; return to shader part epilog
243 ; GFX10-LABEL: load_mip_2d:
244 ; GFX10:       ; %bb.0: ; %main_body
245 ; GFX10-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x08,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40]
246 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
247 ; GFX10-NEXT:    ; return to shader part epilog
249 ; GFX11-LABEL: load_mip_2d:
250 ; GFX11:       ; %bb.0: ; %main_body
251 ; GFX11-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x84,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00]
252 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
253 ; GFX11-NEXT:    ; return to shader part epilog
254 main_body:
255   %s = extractelement <2 x i16> %coords_lo, i32 0
256   %t = extractelement <2 x i16> %coords_lo, i32 1
257   %mip = extractelement <2 x i16> %coords_hi, i32 0
258   %v = call <4 x float> @llvm.amdgcn.image.load.mip.2d.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
259   ret <4 x float> %v
262 define amdgpu_ps <4 x float> @load_mip_3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
263 ; GFX9-LABEL: load_mip_3d:
264 ; GFX9:       ; %bb.0: ; %main_body
265 ; GFX9-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x04,0xf0,0x00,0x00,0x00,0x00]
266 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
267 ; GFX9-NEXT:    ; return to shader part epilog
269 ; GFX10-LABEL: load_mip_3d:
270 ; GFX10:       ; %bb.0: ; %main_body
271 ; GFX10-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x10,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40]
272 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
273 ; GFX10-NEXT:    ; return to shader part epilog
275 ; GFX11-LABEL: load_mip_3d:
276 ; GFX11:       ; %bb.0: ; %main_body
277 ; GFX11-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x88,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00]
278 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
279 ; GFX11-NEXT:    ; return to shader part epilog
280 main_body:
281   %s = extractelement <2 x i16> %coords_lo, i32 0
282   %t = extractelement <2 x i16> %coords_lo, i32 1
283   %r = extractelement <2 x i16> %coords_hi, i32 0
284   %mip = extractelement <2 x i16> %coords_hi, i32 1
285   %v = call <4 x float> @llvm.amdgcn.image.load.mip.3d.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %r, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
286   ret <4 x float> %v
289 define amdgpu_ps <4 x float> @load_mip_cube(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
290 ; GFX9-LABEL: load_mip_cube:
291 ; GFX9:       ; %bb.0: ; %main_body
292 ; GFX9-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x04,0xf0,0x00,0x00,0x00,0x00]
293 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
294 ; GFX9-NEXT:    ; return to shader part epilog
296 ; GFX10-LABEL: load_mip_cube:
297 ; GFX10:       ; %bb.0: ; %main_body
298 ; GFX10-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x18,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40]
299 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
300 ; GFX10-NEXT:    ; return to shader part epilog
302 ; GFX11-LABEL: load_mip_cube:
303 ; GFX11:       ; %bb.0: ; %main_body
304 ; GFX11-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x8c,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00]
305 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
306 ; GFX11-NEXT:    ; return to shader part epilog
307 main_body:
308   %s = extractelement <2 x i16> %coords_lo, i32 0
309   %t = extractelement <2 x i16> %coords_lo, i32 1
310   %slice = extractelement <2 x i16> %coords_hi, i32 0
311   %mip = extractelement <2 x i16> %coords_hi, i32 1
312   %v = call <4 x float> @llvm.amdgcn.image.load.mip.cube.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
313   ret <4 x float> %v
316 define amdgpu_ps <4 x float> @load_mip_1darray(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
317 ; GFX9-LABEL: load_mip_1darray:
318 ; GFX9:       ; %bb.0: ; %main_body
319 ; GFX9-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x04,0xf0,0x00,0x00,0x00,0x00]
320 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
321 ; GFX9-NEXT:    ; return to shader part epilog
323 ; GFX10-LABEL: load_mip_1darray:
324 ; GFX10:       ; %bb.0: ; %main_body
325 ; GFX10-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x20,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40]
326 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
327 ; GFX10-NEXT:    ; return to shader part epilog
329 ; GFX11-LABEL: load_mip_1darray:
330 ; GFX11:       ; %bb.0: ; %main_body
331 ; GFX11-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x90,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00]
332 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
333 ; GFX11-NEXT:    ; return to shader part epilog
334 main_body:
335   %s = extractelement <2 x i16> %coords_lo, i32 0
336   %slice = extractelement <2 x i16> %coords_lo, i32 1
337   %mip = extractelement <2 x i16> %coords_hi, i32 0
338   %v = call <4 x float> @llvm.amdgcn.image.load.mip.1darray.v4f32.i16(i32 15, i16 %s, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
339   ret <4 x float> %v
342 define amdgpu_ps <4 x float> @load_mip_2darray(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
343 ; GFX9-LABEL: load_mip_2darray:
344 ; GFX9:       ; %bb.0: ; %main_body
345 ; GFX9-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x04,0xf0,0x00,0x00,0x00,0x00]
346 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
347 ; GFX9-NEXT:    ; return to shader part epilog
349 ; GFX10-LABEL: load_mip_2darray:
350 ; GFX10:       ; %bb.0: ; %main_body
351 ; GFX10-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x28,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40]
352 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
353 ; GFX10-NEXT:    ; return to shader part epilog
355 ; GFX11-LABEL: load_mip_2darray:
356 ; GFX11:       ; %bb.0: ; %main_body
357 ; GFX11-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x94,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00]
358 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
359 ; GFX11-NEXT:    ; return to shader part epilog
360 main_body:
361   %s = extractelement <2 x i16> %coords_lo, i32 0
362   %t = extractelement <2 x i16> %coords_lo, i32 1
363   %slice = extractelement <2 x i16> %coords_hi, i32 0
364   %mip = extractelement <2 x i16> %coords_hi, i32 1
365   %v = call <4 x float> @llvm.amdgcn.image.load.mip.2darray.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
366   ret <4 x float> %v
369 define amdgpu_ps void @store_1d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) {
370 ; GFX9-LABEL: store_1d:
371 ; GFX9:       ; %bb.0: ; %main_body
372 ; GFX9-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x20,0xf0,0x04,0x00,0x00,0x00]
373 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
375 ; GFX10-LABEL: store_1d:
376 ; GFX10:       ; %bb.0: ; %main_body
377 ; GFX10-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40]
378 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
380 ; GFX11-LABEL: store_1d:
381 ; GFX11:       ; %bb.0: ; %main_body
382 ; GFX11-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00]
383 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
384 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
385 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
386 main_body:
387   %s = extractelement <2 x i16> %coords, i32 0
388   call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 0)
389   ret void
392 define amdgpu_ps void @store_2d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) {
393 ; GFX9-LABEL: store_2d:
394 ; GFX9:       ; %bb.0: ; %main_body
395 ; GFX9-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x20,0xf0,0x04,0x00,0x00,0x00]
396 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
398 ; GFX10-LABEL: store_2d:
399 ; GFX10:       ; %bb.0: ; %main_body
400 ; GFX10-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x08,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40]
401 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
403 ; GFX11-LABEL: store_2d:
404 ; GFX11:       ; %bb.0: ; %main_body
405 ; GFX11-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x84,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00]
406 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
407 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
408 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
409 main_body:
410   %s = extractelement <2 x i16> %coords, i32 0
411   %t = extractelement <2 x i16> %coords, i32 1
412   call void @llvm.amdgcn.image.store.2d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, <8 x i32> %rsrc, i32 0, i32 0)
413   ret void
416 define amdgpu_ps void @store_3d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
417 ; GFX9-LABEL: store_3d:
418 ; GFX9:       ; %bb.0: ; %main_body
419 ; GFX9-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x20,0xf0,0x04,0x00,0x00,0x00]
420 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
422 ; GFX10-LABEL: store_3d:
423 ; GFX10:       ; %bb.0: ; %main_body
424 ; GFX10-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x10,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40]
425 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
427 ; GFX11-LABEL: store_3d:
428 ; GFX11:       ; %bb.0: ; %main_body
429 ; GFX11-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x88,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00]
430 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
431 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
432 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
433 main_body:
434   %s = extractelement <2 x i16> %coords_lo, i32 0
435   %t = extractelement <2 x i16> %coords_lo, i32 1
436   %r = extractelement <2 x i16> %coords_hi, i32 0
437   call void @llvm.amdgcn.image.store.3d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %r, <8 x i32> %rsrc, i32 0, i32 0)
438   ret void
441 define amdgpu_ps void @store_cube(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
442 ; GFX9-LABEL: store_cube:
443 ; GFX9:       ; %bb.0: ; %main_body
444 ; GFX9-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x20,0xf0,0x04,0x00,0x00,0x00]
445 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
447 ; GFX10-LABEL: store_cube:
448 ; GFX10:       ; %bb.0: ; %main_body
449 ; GFX10-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x18,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40]
450 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
452 ; GFX11-LABEL: store_cube:
453 ; GFX11:       ; %bb.0: ; %main_body
454 ; GFX11-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x8c,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00]
455 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
456 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
457 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
458 main_body:
459   %s = extractelement <2 x i16> %coords_lo, i32 0
460   %t = extractelement <2 x i16> %coords_lo, i32 1
461   %slice = extractelement <2 x i16> %coords_hi, i32 0
462   call void @llvm.amdgcn.image.store.cube.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0)
463   ret void
466 define amdgpu_ps void @store_1darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) {
467 ; GFX9-LABEL: store_1darray:
468 ; GFX9:       ; %bb.0: ; %main_body
469 ; GFX9-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x20,0xf0,0x04,0x00,0x00,0x00]
470 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
472 ; GFX10-LABEL: store_1darray:
473 ; GFX10:       ; %bb.0: ; %main_body
474 ; GFX10-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x20,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40]
475 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
477 ; GFX11-LABEL: store_1darray:
478 ; GFX11:       ; %bb.0: ; %main_body
479 ; GFX11-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x90,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00]
480 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
481 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
482 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
483 main_body:
484   %s = extractelement <2 x i16> %coords, i32 0
485   %slice = extractelement <2 x i16> %coords, i32 1
486   call void @llvm.amdgcn.image.store.1darray.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0)
487   ret void
490 define amdgpu_ps void @store_2darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
491 ; GFX9-LABEL: store_2darray:
492 ; GFX9:       ; %bb.0: ; %main_body
493 ; GFX9-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x20,0xf0,0x04,0x00,0x00,0x00]
494 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
496 ; GFX10-LABEL: store_2darray:
497 ; GFX10:       ; %bb.0: ; %main_body
498 ; GFX10-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x28,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40]
499 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
501 ; GFX11-LABEL: store_2darray:
502 ; GFX11:       ; %bb.0: ; %main_body
503 ; GFX11-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x94,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00]
504 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
505 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
506 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
507 main_body:
508   %s = extractelement <2 x i16> %coords_lo, i32 0
509   %t = extractelement <2 x i16> %coords_lo, i32 1
510   %slice = extractelement <2 x i16> %coords_hi, i32 0
511   call void @llvm.amdgcn.image.store.2darray.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0)
512   ret void
515 define amdgpu_ps void @store_2dmsaa(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
516 ; GFX9-LABEL: store_2dmsaa:
517 ; GFX9:       ; %bb.0: ; %main_body
518 ; GFX9-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x20,0xf0,0x04,0x00,0x00,0x00]
519 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
521 ; GFX10-LABEL: store_2dmsaa:
522 ; GFX10:       ; %bb.0: ; %main_body
523 ; GFX10-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x30,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40]
524 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
526 ; GFX11-LABEL: store_2dmsaa:
527 ; GFX11:       ; %bb.0: ; %main_body
528 ; GFX11-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x98,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00]
529 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
530 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
531 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
532 main_body:
533   %s = extractelement <2 x i16> %coords_lo, i32 0
534   %t = extractelement <2 x i16> %coords_lo, i32 1
535   %fragid = extractelement <2 x i16> %coords_hi, i32 0
536   call void @llvm.amdgcn.image.store.2dmsaa.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %fragid, <8 x i32> %rsrc, i32 0, i32 0)
537   ret void
540 define amdgpu_ps void @store_2darraymsaa(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
541 ; GFX9-LABEL: store_2darraymsaa:
542 ; GFX9:       ; %bb.0: ; %main_body
543 ; GFX9-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x20,0xf0,0x04,0x00,0x00,0x00]
544 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
546 ; GFX10-LABEL: store_2darraymsaa:
547 ; GFX10:       ; %bb.0: ; %main_body
548 ; GFX10-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x38,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40]
549 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
551 ; GFX11-LABEL: store_2darraymsaa:
552 ; GFX11:       ; %bb.0: ; %main_body
553 ; GFX11-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x9c,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00]
554 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
555 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
556 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
557 main_body:
558   %s = extractelement <2 x i16> %coords_lo, i32 0
559   %t = extractelement <2 x i16> %coords_lo, i32 1
560   %slice = extractelement <2 x i16> %coords_hi, i32 0
561   %fragid = extractelement <2 x i16> %coords_hi, i32 1
562   call void @llvm.amdgcn.image.store.2darraymsaa.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %slice, i16 %fragid, <8 x i32> %rsrc, i32 0, i32 0)
563   ret void
566 define amdgpu_ps void @store_mip_1d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) {
567 ; GFX9-LABEL: store_mip_1d:
568 ; GFX9:       ; %bb.0: ; %main_body
569 ; GFX9-NEXT:    image_store_mip v[0:3], v4, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x24,0xf0,0x04,0x00,0x00,0x00]
570 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
572 ; GFX10-LABEL: store_mip_1d:
573 ; GFX10:       ; %bb.0: ; %main_body
574 ; GFX10-NEXT:    image_store_mip v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40]
575 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
577 ; GFX11-LABEL: store_mip_1d:
578 ; GFX11:       ; %bb.0: ; %main_body
579 ; GFX11-NEXT:    image_store_mip v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00]
580 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
581 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
582 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
583 main_body:
584   %s = extractelement <2 x i16> %coords, i32 0
585   %mip = extractelement <2 x i16> %coords, i32 1
586   call void @llvm.amdgcn.image.store.mip.1d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
587   ret void
590 define amdgpu_ps void @store_mip_2d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
591 ; GFX9-LABEL: store_mip_2d:
592 ; GFX9:       ; %bb.0: ; %main_body
593 ; GFX9-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x24,0xf0,0x04,0x00,0x00,0x00]
594 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
596 ; GFX10-LABEL: store_mip_2d:
597 ; GFX10:       ; %bb.0: ; %main_body
598 ; GFX10-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x08,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40]
599 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
601 ; GFX11-LABEL: store_mip_2d:
602 ; GFX11:       ; %bb.0: ; %main_body
603 ; GFX11-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x84,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00]
604 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
605 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
606 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
607 main_body:
608   %s = extractelement <2 x i16> %coords_lo, i32 0
609   %t = extractelement <2 x i16> %coords_lo, i32 1
610   %mip = extractelement <2 x i16> %coords_hi, i32 0
611   call void @llvm.amdgcn.image.store.mip.2d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
612   ret void
615 define amdgpu_ps void @store_mip_3d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
616 ; GFX9-LABEL: store_mip_3d:
617 ; GFX9:       ; %bb.0: ; %main_body
618 ; GFX9-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x24,0xf0,0x04,0x00,0x00,0x00]
619 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
621 ; GFX10-LABEL: store_mip_3d:
622 ; GFX10:       ; %bb.0: ; %main_body
623 ; GFX10-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x10,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40]
624 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
626 ; GFX11-LABEL: store_mip_3d:
627 ; GFX11:       ; %bb.0: ; %main_body
628 ; GFX11-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x88,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00]
629 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
630 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
631 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
632 main_body:
633   %s = extractelement <2 x i16> %coords_lo, i32 0
634   %t = extractelement <2 x i16> %coords_lo, i32 1
635   %r = extractelement <2 x i16> %coords_hi, i32 0
636   %mip = extractelement <2 x i16> %coords_hi, i32 1
637   call void @llvm.amdgcn.image.store.mip.3d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %r, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
638   ret void
641 define amdgpu_ps void @store_mip_cube(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
642 ; GFX9-LABEL: store_mip_cube:
643 ; GFX9:       ; %bb.0: ; %main_body
644 ; GFX9-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x24,0xf0,0x04,0x00,0x00,0x00]
645 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
647 ; GFX10-LABEL: store_mip_cube:
648 ; GFX10:       ; %bb.0: ; %main_body
649 ; GFX10-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x18,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40]
650 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
652 ; GFX11-LABEL: store_mip_cube:
653 ; GFX11:       ; %bb.0: ; %main_body
654 ; GFX11-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x8c,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00]
655 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
656 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
657 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
658 main_body:
659   %s = extractelement <2 x i16> %coords_lo, i32 0
660   %t = extractelement <2 x i16> %coords_lo, i32 1
661   %slice = extractelement <2 x i16> %coords_hi, i32 0
662   %mip = extractelement <2 x i16> %coords_hi, i32 1
663   call void @llvm.amdgcn.image.store.mip.cube.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
664   ret void
667 define amdgpu_ps void @store_mip_1darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
668 ; GFX9-LABEL: store_mip_1darray:
669 ; GFX9:       ; %bb.0: ; %main_body
670 ; GFX9-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x24,0xf0,0x04,0x00,0x00,0x00]
671 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
673 ; GFX10-LABEL: store_mip_1darray:
674 ; GFX10:       ; %bb.0: ; %main_body
675 ; GFX10-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x20,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40]
676 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
678 ; GFX11-LABEL: store_mip_1darray:
679 ; GFX11:       ; %bb.0: ; %main_body
680 ; GFX11-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x90,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00]
681 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
682 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
683 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
684 main_body:
685   %s = extractelement <2 x i16> %coords_lo, i32 0
686   %slice = extractelement <2 x i16> %coords_lo, i32 1
687   %mip = extractelement <2 x i16> %coords_hi, i32 0
688   call void @llvm.amdgcn.image.store.mip.1darray.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
689   ret void
692 define amdgpu_ps void @store_mip_2darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {
693 ; GFX9-LABEL: store_mip_2darray:
694 ; GFX9:       ; %bb.0: ; %main_body
695 ; GFX9-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x24,0xf0,0x04,0x00,0x00,0x00]
696 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
698 ; GFX10-LABEL: store_mip_2darray:
699 ; GFX10:       ; %bb.0: ; %main_body
700 ; GFX10-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x28,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40]
701 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
703 ; GFX11-LABEL: store_mip_2darray:
704 ; GFX11:       ; %bb.0: ; %main_body
705 ; GFX11-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x94,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00]
706 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
707 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
708 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
709 main_body:
710   %s = extractelement <2 x i16> %coords_lo, i32 0
711   %t = extractelement <2 x i16> %coords_lo, i32 1
712   %slice = extractelement <2 x i16> %coords_hi, i32 0
713   %mip = extractelement <2 x i16> %coords_hi, i32 1
714   call void @llvm.amdgcn.image.store.mip.2darray.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
715   ret void
718 define amdgpu_ps <4 x float> @getresinfo_1d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
719 ; GFX9-LABEL: getresinfo_1d:
720 ; GFX9:       ; %bb.0: ; %main_body
721 ; GFX9-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x38,0xf0,0x00,0x00,0x00,0x00]
722 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
723 ; GFX9-NEXT:    ; return to shader part epilog
725 ; GFX10-LABEL: getresinfo_1d:
726 ; GFX10:       ; %bb.0: ; %main_body
727 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40]
728 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
729 ; GFX10-NEXT:    ; return to shader part epilog
731 ; GFX11-LABEL: getresinfo_1d:
732 ; GFX11:       ; %bb.0: ; %main_body
733 ; GFX11-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00]
734 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
735 ; GFX11-NEXT:    ; return to shader part epilog
736 main_body:
737   %mip = extractelement <2 x i16> %coords, i32 0
738   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
739   ret <4 x float> %v
742 define amdgpu_ps <4 x float> @getresinfo_2d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
743 ; GFX9-LABEL: getresinfo_2d:
744 ; GFX9:       ; %bb.0: ; %main_body
745 ; GFX9-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x38,0xf0,0x00,0x00,0x00,0x00]
746 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
747 ; GFX9-NEXT:    ; return to shader part epilog
749 ; GFX10-LABEL: getresinfo_2d:
750 ; GFX10:       ; %bb.0: ; %main_body
751 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x08,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40]
752 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
753 ; GFX10-NEXT:    ; return to shader part epilog
755 ; GFX11-LABEL: getresinfo_2d:
756 ; GFX11:       ; %bb.0: ; %main_body
757 ; GFX11-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x84,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00]
758 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
759 ; GFX11-NEXT:    ; return to shader part epilog
760 main_body:
761   %mip = extractelement <2 x i16> %coords, i32 0
762   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2d.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
763   ret <4 x float> %v
766 define amdgpu_ps <4 x float> @getresinfo_3d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
767 ; GFX9-LABEL: getresinfo_3d:
768 ; GFX9:       ; %bb.0: ; %main_body
769 ; GFX9-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x38,0xf0,0x00,0x00,0x00,0x00]
770 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
771 ; GFX9-NEXT:    ; return to shader part epilog
773 ; GFX10-LABEL: getresinfo_3d:
774 ; GFX10:       ; %bb.0: ; %main_body
775 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x10,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40]
776 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
777 ; GFX10-NEXT:    ; return to shader part epilog
779 ; GFX11-LABEL: getresinfo_3d:
780 ; GFX11:       ; %bb.0: ; %main_body
781 ; GFX11-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x88,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00]
782 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
783 ; GFX11-NEXT:    ; return to shader part epilog
784 main_body:
785   %mip = extractelement <2 x i16> %coords, i32 0
786   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.3d.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
787   ret <4 x float> %v
790 define amdgpu_ps <4 x float> @getresinfo_cube(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
791 ; GFX9-LABEL: getresinfo_cube:
792 ; GFX9:       ; %bb.0: ; %main_body
793 ; GFX9-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x38,0xf0,0x00,0x00,0x00,0x00]
794 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
795 ; GFX9-NEXT:    ; return to shader part epilog
797 ; GFX10-LABEL: getresinfo_cube:
798 ; GFX10:       ; %bb.0: ; %main_body
799 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x18,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40]
800 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
801 ; GFX10-NEXT:    ; return to shader part epilog
803 ; GFX11-LABEL: getresinfo_cube:
804 ; GFX11:       ; %bb.0: ; %main_body
805 ; GFX11-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x8c,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00]
806 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
807 ; GFX11-NEXT:    ; return to shader part epilog
808 main_body:
809   %mip = extractelement <2 x i16> %coords, i32 0
810   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.cube.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
811   ret <4 x float> %v
814 define amdgpu_ps <4 x float> @getresinfo_1darray(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
815 ; GFX9-LABEL: getresinfo_1darray:
816 ; GFX9:       ; %bb.0: ; %main_body
817 ; GFX9-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x38,0xf0,0x00,0x00,0x00,0x00]
818 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
819 ; GFX9-NEXT:    ; return to shader part epilog
821 ; GFX10-LABEL: getresinfo_1darray:
822 ; GFX10:       ; %bb.0: ; %main_body
823 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x20,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40]
824 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
825 ; GFX10-NEXT:    ; return to shader part epilog
827 ; GFX11-LABEL: getresinfo_1darray:
828 ; GFX11:       ; %bb.0: ; %main_body
829 ; GFX11-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x90,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00]
830 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
831 ; GFX11-NEXT:    ; return to shader part epilog
832 main_body:
833   %mip = extractelement <2 x i16> %coords, i32 0
834   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.1darray.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
835   ret <4 x float> %v
838 define amdgpu_ps <4 x float> @getresinfo_2darray(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
839 ; GFX9-LABEL: getresinfo_2darray:
840 ; GFX9:       ; %bb.0: ; %main_body
841 ; GFX9-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x38,0xf0,0x00,0x00,0x00,0x00]
842 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
843 ; GFX9-NEXT:    ; return to shader part epilog
845 ; GFX10-LABEL: getresinfo_2darray:
846 ; GFX10:       ; %bb.0: ; %main_body
847 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x28,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40]
848 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
849 ; GFX10-NEXT:    ; return to shader part epilog
851 ; GFX11-LABEL: getresinfo_2darray:
852 ; GFX11:       ; %bb.0: ; %main_body
853 ; GFX11-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x94,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00]
854 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
855 ; GFX11-NEXT:    ; return to shader part epilog
856 main_body:
857   %mip = extractelement <2 x i16> %coords, i32 0
858   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2darray.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
859   ret <4 x float> %v
862 define amdgpu_ps <4 x float> @getresinfo_2dmsaa(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
863 ; GFX9-LABEL: getresinfo_2dmsaa:
864 ; GFX9:       ; %bb.0: ; %main_body
865 ; GFX9-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x38,0xf0,0x00,0x00,0x00,0x00]
866 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
867 ; GFX9-NEXT:    ; return to shader part epilog
869 ; GFX10-LABEL: getresinfo_2dmsaa:
870 ; GFX10:       ; %bb.0: ; %main_body
871 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x30,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40]
872 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
873 ; GFX10-NEXT:    ; return to shader part epilog
875 ; GFX11-LABEL: getresinfo_2dmsaa:
876 ; GFX11:       ; %bb.0: ; %main_body
877 ; GFX11-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x98,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00]
878 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
879 ; GFX11-NEXT:    ; return to shader part epilog
880 main_body:
881   %mip = extractelement <2 x i16> %coords, i32 0
882   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2dmsaa.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
883   ret <4 x float> %v
886 define amdgpu_ps <4 x float> @getresinfo_2darraymsaa(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
887 ; GFX9-LABEL: getresinfo_2darraymsaa:
888 ; GFX9:       ; %bb.0: ; %main_body
889 ; GFX9-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x38,0xf0,0x00,0x00,0x00,0x00]
890 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
891 ; GFX9-NEXT:    ; return to shader part epilog
893 ; GFX10-LABEL: getresinfo_2darraymsaa:
894 ; GFX10:       ; %bb.0: ; %main_body
895 ; GFX10-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x38,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40]
896 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
897 ; GFX10-NEXT:    ; return to shader part epilog
899 ; GFX11-LABEL: getresinfo_2darraymsaa:
900 ; GFX11:       ; %bb.0: ; %main_body
901 ; GFX11-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x9c,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00]
902 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
903 ; GFX11-NEXT:    ; return to shader part epilog
904 main_body:
905   %mip = extractelement <2 x i16> %coords, i32 0
906   %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2darraymsaa.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
907   ret <4 x float> %v
910 define amdgpu_ps float @load_1d_V1(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
911 ; GFX9-LABEL: load_1d_V1:
912 ; GFX9:       ; %bb.0: ; %main_body
913 ; GFX9-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 unorm a16 ; encoding: [0x00,0x98,0x00,0xf0,0x00,0x00,0x00,0x00]
914 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
915 ; GFX9-NEXT:    ; return to shader part epilog
917 ; GFX10-LABEL: load_1d_V1:
918 ; GFX10:       ; %bb.0: ; %main_body
919 ; GFX10-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x18,0x00,0xf0,0x00,0x00,0x00,0x40]
920 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
921 ; GFX10-NEXT:    ; return to shader part epilog
923 ; GFX11-LABEL: load_1d_V1:
924 ; GFX11:       ; %bb.0: ; %main_body
925 ; GFX11-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x08,0x01,0xf0,0x00,0x00,0x00,0x00]
926 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
927 ; GFX11-NEXT:    ; return to shader part epilog
928 main_body:
929   %s = extractelement <2 x i16> %coords, i32 0
930   %v = call float @llvm.amdgcn.image.load.1d.f32.i16(i32 8, i16 %s, <8 x i32> %rsrc, i32 0, i32 0)
931   ret float %v
934 define amdgpu_ps <2 x float> @load_1d_V2(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
935 ; GFX9-LABEL: load_1d_V2:
936 ; GFX9:       ; %bb.0: ; %main_body
937 ; GFX9-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x9 unorm a16 ; encoding: [0x00,0x99,0x00,0xf0,0x00,0x00,0x00,0x00]
938 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
939 ; GFX9-NEXT:    ; return to shader part epilog
941 ; GFX10-LABEL: load_1d_V2:
942 ; GFX10:       ; %bb.0: ; %main_body
943 ; GFX10-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x9 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x19,0x00,0xf0,0x00,0x00,0x00,0x40]
944 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
945 ; GFX10-NEXT:    ; return to shader part epilog
947 ; GFX11-LABEL: load_1d_V2:
948 ; GFX11:       ; %bb.0: ; %main_body
949 ; GFX11-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x9 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x09,0x01,0xf0,0x00,0x00,0x00,0x00]
950 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
951 ; GFX11-NEXT:    ; return to shader part epilog
952 main_body:
953   %s = extractelement <2 x i16> %coords, i32 0
954   %v = call <2 x float> @llvm.amdgcn.image.load.1d.v2f32.i16(i32 9, i16 %s, <8 x i32> %rsrc, i32 0, i32 0)
955   ret <2 x float> %v
958 define amdgpu_ps void @store_1d_V1(<8 x i32> inreg %rsrc, float %vdata, <2 x i16> %coords) {
959 ; GFX9-LABEL: store_1d_V1:
960 ; GFX9:       ; %bb.0: ; %main_body
961 ; GFX9-NEXT:    image_store v0, v1, s[0:7] dmask:0x2 unorm a16 ; encoding: [0x00,0x92,0x20,0xf0,0x01,0x00,0x00,0x00]
962 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
964 ; GFX10-LABEL: store_1d_V1:
965 ; GFX10:       ; %bb.0: ; %main_body
966 ; GFX10-NEXT:    image_store v0, v1, s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x12,0x20,0xf0,0x01,0x00,0x00,0x40]
967 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
969 ; GFX11-LABEL: store_1d_V1:
970 ; GFX11:       ; %bb.0: ; %main_body
971 ; GFX11-NEXT:    image_store v0, v1, s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x02,0x19,0xf0,0x01,0x00,0x00,0x00]
972 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
973 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
974 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
975 main_body:
976   %s = extractelement <2 x i16> %coords, i32 0
977   call void @llvm.amdgcn.image.store.1d.f32.i16(float %vdata, i32 2, i16 %s, <8 x i32> %rsrc, i32 0, i32 0)
978   ret void
981 define amdgpu_ps void @store_1d_V2(<8 x i32> inreg %rsrc, <2 x float> %vdata, <2 x i16> %coords) {
982 ; GFX9-LABEL: store_1d_V2:
983 ; GFX9:       ; %bb.0: ; %main_body
984 ; GFX9-NEXT:    image_store v[0:1], v2, s[0:7] dmask:0xc unorm a16 ; encoding: [0x00,0x9c,0x20,0xf0,0x02,0x00,0x00,0x00]
985 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
987 ; GFX10-LABEL: store_1d_V2:
988 ; GFX10:       ; %bb.0: ; %main_body
989 ; GFX10-NEXT:    image_store v[0:1], v2, s[0:7] dmask:0xc dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1c,0x20,0xf0,0x02,0x00,0x00,0x40]
990 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
992 ; GFX11-LABEL: store_1d_V2:
993 ; GFX11:       ; %bb.0: ; %main_body
994 ; GFX11-NEXT:    image_store v[0:1], v2, s[0:7] dmask:0xc dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0c,0x19,0xf0,0x02,0x00,0x00,0x00]
995 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
996 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
997 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
998 main_body:
999   %s = extractelement <2 x i16> %coords, i32 0
1000   call void @llvm.amdgcn.image.store.1d.v2f32.i16(<2 x float> %vdata, i32 12, i16 %s, <8 x i32> %rsrc, i32 0, i32 0)
1001   ret void
1004 define amdgpu_ps <4 x float> @load_1d_glc(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
1005 ; GFX9-LABEL: load_1d_glc:
1006 ; GFX9:       ; %bb.0: ; %main_body
1007 ; GFX9-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc a16 ; encoding: [0x00,0xbf,0x00,0xf0,0x00,0x00,0x00,0x00]
1008 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
1009 ; GFX9-NEXT:    ; return to shader part epilog
1011 ; GFX10-LABEL: load_1d_glc:
1012 ; GFX10:       ; %bb.0: ; %main_body
1013 ; GFX10-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc a16 ; encoding: [0x00,0x3f,0x00,0xf0,0x00,0x00,0x00,0x40]
1014 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
1015 ; GFX10-NEXT:    ; return to shader part epilog
1017 ; GFX11-LABEL: load_1d_glc:
1018 ; GFX11:       ; %bb.0: ; %main_body
1019 ; GFX11-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc a16 ; encoding: [0x80,0x4f,0x01,0xf0,0x00,0x00,0x00,0x00]
1020 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
1021 ; GFX11-NEXT:    ; return to shader part epilog
1022 main_body:
1023   %s = extractelement <2 x i16> %coords, i32 0
1024   %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i16(i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 1)
1025   ret <4 x float> %v
1028 define amdgpu_ps <4 x float> @load_1d_slc(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
1029 ; GFX9-LABEL: load_1d_slc:
1030 ; GFX9:       ; %bb.0: ; %main_body
1031 ; GFX9-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm slc a16 ; encoding: [0x00,0x9f,0x00,0xf2,0x00,0x00,0x00,0x00]
1032 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
1033 ; GFX9-NEXT:    ; return to shader part epilog
1035 ; GFX10-LABEL: load_1d_slc:
1036 ; GFX10:       ; %bb.0: ; %main_body
1037 ; GFX10-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm slc a16 ; encoding: [0x00,0x1f,0x00,0xf2,0x00,0x00,0x00,0x40]
1038 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
1039 ; GFX10-NEXT:    ; return to shader part epilog
1041 ; GFX11-LABEL: load_1d_slc:
1042 ; GFX11:       ; %bb.0: ; %main_body
1043 ; GFX11-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm slc a16 ; encoding: [0x80,0x1f,0x01,0xf0,0x00,0x00,0x00,0x00]
1044 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
1045 ; GFX11-NEXT:    ; return to shader part epilog
1046 main_body:
1047   %s = extractelement <2 x i16> %coords, i32 0
1048   %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i16(i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 2)
1049   ret <4 x float> %v
1052 define amdgpu_ps <4 x float> @load_1d_glc_slc(<8 x i32> inreg %rsrc, <2 x i16> %coords) {
1053 ; GFX9-LABEL: load_1d_glc_slc:
1054 ; GFX9:       ; %bb.0: ; %main_body
1055 ; GFX9-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc slc a16 ; encoding: [0x00,0xbf,0x00,0xf2,0x00,0x00,0x00,0x00]
1056 ; GFX9-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]
1057 ; GFX9-NEXT:    ; return to shader part epilog
1059 ; GFX10-LABEL: load_1d_glc_slc:
1060 ; GFX10:       ; %bb.0: ; %main_body
1061 ; GFX10-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc slc a16 ; encoding: [0x00,0x3f,0x00,0xf2,0x00,0x00,0x00,0x40]
1062 ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf]
1063 ; GFX10-NEXT:    ; return to shader part epilog
1065 ; GFX11-LABEL: load_1d_glc_slc:
1066 ; GFX11:       ; %bb.0: ; %main_body
1067 ; GFX11-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc slc a16 ; encoding: [0x80,0x5f,0x01,0xf0,0x00,0x00,0x00,0x00]
1068 ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf]
1069 ; GFX11-NEXT:    ; return to shader part epilog
1070 main_body:
1071   %s = extractelement <2 x i16> %coords, i32 0
1072   %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i16(i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 3)
1073   ret <4 x float> %v
1076 define amdgpu_ps void @store_1d_glc(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) {
1077 ; GFX9-LABEL: store_1d_glc:
1078 ; GFX9:       ; %bb.0: ; %main_body
1079 ; GFX9-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc a16 ; encoding: [0x00,0xbf,0x20,0xf0,0x04,0x00,0x00,0x00]
1080 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
1082 ; GFX10-LABEL: store_1d_glc:
1083 ; GFX10:       ; %bb.0: ; %main_body
1084 ; GFX10-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc a16 ; encoding: [0x00,0x3f,0x20,0xf0,0x04,0x00,0x00,0x40]
1085 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
1087 ; GFX11-LABEL: store_1d_glc:
1088 ; GFX11:       ; %bb.0: ; %main_body
1089 ; GFX11-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc a16 ; encoding: [0x80,0x4f,0x19,0xf0,0x04,0x00,0x00,0x00]
1090 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
1091 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
1092 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
1093 main_body:
1094   %s = extractelement <2 x i16> %coords, i32 0
1095   call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 1)
1096   ret void
1099 define amdgpu_ps void @store_1d_slc(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) {
1100 ; GFX9-LABEL: store_1d_slc:
1101 ; GFX9:       ; %bb.0: ; %main_body
1102 ; GFX9-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm slc a16 ; encoding: [0x00,0x9f,0x20,0xf2,0x04,0x00,0x00,0x00]
1103 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
1105 ; GFX10-LABEL: store_1d_slc:
1106 ; GFX10:       ; %bb.0: ; %main_body
1107 ; GFX10-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm slc a16 ; encoding: [0x00,0x1f,0x20,0xf2,0x04,0x00,0x00,0x40]
1108 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
1110 ; GFX11-LABEL: store_1d_slc:
1111 ; GFX11:       ; %bb.0: ; %main_body
1112 ; GFX11-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm slc a16 ; encoding: [0x80,0x1f,0x19,0xf0,0x04,0x00,0x00,0x00]
1113 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
1114 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
1115 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
1116 main_body:
1117   %s = extractelement <2 x i16> %coords, i32 0
1118   call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 2)
1119   ret void
1122 define amdgpu_ps void @store_1d_glc_slc(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) {
1123 ; GFX9-LABEL: store_1d_glc_slc:
1124 ; GFX9:       ; %bb.0: ; %main_body
1125 ; GFX9-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc slc a16 ; encoding: [0x00,0xbf,0x20,0xf2,0x04,0x00,0x00,0x00]
1126 ; GFX9-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
1128 ; GFX10-LABEL: store_1d_glc_slc:
1129 ; GFX10:       ; %bb.0: ; %main_body
1130 ; GFX10-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc slc a16 ; encoding: [0x00,0x3f,0x20,0xf2,0x04,0x00,0x00,0x40]
1131 ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf]
1133 ; GFX11-LABEL: store_1d_glc_slc:
1134 ; GFX11:       ; %bb.0: ; %main_body
1135 ; GFX11-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc slc a16 ; encoding: [0x80,0x5f,0x19,0xf0,0x04,0x00,0x00,0x00]
1136 ; GFX11-NEXT:    s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf]
1137 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ; encoding: [0x03,0x00,0xb6,0xbf]
1138 ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf]
1139 main_body:
1140   %s = extractelement <2 x i16> %coords, i32 0
1141   call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 3)
1142   ret void
1145 define amdgpu_ps <4 x float> @getresinfo_dmask0(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) #0 {
1146 ; GFX9-LABEL: getresinfo_dmask0:
1147 ; GFX9:       ; %bb.0: ; %main_body
1148 ; GFX9-NEXT:    ; return to shader part epilog
1150 ; GFX10-LABEL: getresinfo_dmask0:
1151 ; GFX10:       ; %bb.0: ; %main_body
1152 ; GFX10-NEXT:    ; return to shader part epilog
1154 ; GFX11-LABEL: getresinfo_dmask0:
1155 ; GFX11:       ; %bb.0: ; %main_body
1156 ; GFX11-NEXT:    ; return to shader part epilog
1157 main_body:
1158   %mip = extractelement <2 x i16> %coords, i32 0
1159   %r = call <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i16(i32 0, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0)
1160   ret <4 x float> %r
1163 declare <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #1
1164 declare <4 x float> @llvm.amdgcn.image.load.2d.v4f32.i16(i32, i16, i16, <8 x i32>, i32, i32) #1
1165 declare <4 x float> @llvm.amdgcn.image.load.3d.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1
1166 declare <4 x float> @llvm.amdgcn.image.load.cube.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1
1167 declare <4 x float> @llvm.amdgcn.image.load.1darray.v4f32.i16(i32, i16, i16, <8 x i32>, i32, i32) #1
1168 declare <4 x float> @llvm.amdgcn.image.load.2darray.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1
1169 declare <4 x float> @llvm.amdgcn.image.load.2dmsaa.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1
1170 declare <4 x float> @llvm.amdgcn.image.load.2darraymsaa.v4f32.i16(i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #1
1172 declare <4 x float> @llvm.amdgcn.image.load.mip.1d.v4f32.i16(i32, i16, i16, <8 x i32>, i32, i32) #1
1173 declare <4 x float> @llvm.amdgcn.image.load.mip.2d.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1
1174 declare <4 x float> @llvm.amdgcn.image.load.mip.3d.v4f32.i16(i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #1
1175 declare <4 x float> @llvm.amdgcn.image.load.mip.cube.v4f32.i16(i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #1
1176 declare <4 x float> @llvm.amdgcn.image.load.mip.1darray.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1
1177 declare <4 x float> @llvm.amdgcn.image.load.mip.2darray.v4f32.i16(i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #1
1179 declare void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float>, i32, i16, <8 x i32>, i32, i32) #0
1180 declare void @llvm.amdgcn.image.store.2d.v4f32.i16(<4 x float>, i32, i16, i16, <8 x i32>, i32, i32) #0
1181 declare void @llvm.amdgcn.image.store.3d.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0
1182 declare void @llvm.amdgcn.image.store.cube.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0
1183 declare void @llvm.amdgcn.image.store.1darray.v4f32.i16(<4 x float>, i32, i16, i16, <8 x i32>, i32, i32) #0
1184 declare void @llvm.amdgcn.image.store.2darray.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0
1185 declare void @llvm.amdgcn.image.store.2dmsaa.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0
1186 declare void @llvm.amdgcn.image.store.2darraymsaa.v4f32.i16(<4 x float>, i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #0
1188 declare void @llvm.amdgcn.image.store.mip.1d.v4f32.i16(<4 x float>, i32, i16, i16, <8 x i32>, i32, i32) #0
1189 declare void @llvm.amdgcn.image.store.mip.2d.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0
1190 declare void @llvm.amdgcn.image.store.mip.3d.v4f32.i16(<4 x float>, i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #0
1191 declare void @llvm.amdgcn.image.store.mip.cube.v4f32.i16(<4 x float>, i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #0
1192 declare void @llvm.amdgcn.image.store.mip.1darray.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0
1193 declare void @llvm.amdgcn.image.store.mip.2darray.v4f32.i16(<4 x float>, i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #0
1195 declare <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2
1196 declare <4 x float> @llvm.amdgcn.image.getresinfo.2d.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2
1197 declare <4 x float> @llvm.amdgcn.image.getresinfo.3d.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2
1198 declare <4 x float> @llvm.amdgcn.image.getresinfo.cube.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2
1199 declare <4 x float> @llvm.amdgcn.image.getresinfo.1darray.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2
1200 declare <4 x float> @llvm.amdgcn.image.getresinfo.2darray.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2
1201 declare <4 x float> @llvm.amdgcn.image.getresinfo.2dmsaa.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2
1202 declare <4 x float> @llvm.amdgcn.image.getresinfo.2darraymsaa.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2
1204 declare float @llvm.amdgcn.image.load.1d.f32.i16(i32, i16, <8 x i32>, i32, i32) #1
1205 declare float @llvm.amdgcn.image.load.2d.f32.i16(i32, i16, i16, <8 x i32>, i32, i32) #1
1206 declare <2 x float> @llvm.amdgcn.image.load.1d.v2f32.i16(i32, i16, <8 x i32>, i32, i32) #1
1207 declare void @llvm.amdgcn.image.store.1d.f32.i16(float, i32, i16, <8 x i32>, i32, i32) #0
1208 declare void @llvm.amdgcn.image.store.1d.v2f32.i16(<2 x float>, i32, i16, <8 x i32>, i32, i32) #0
1210 attributes #0 = { nounwind }
1211 attributes #1 = { nounwind readonly }
1212 attributes #2 = { nounwind readnone }