[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / load-constant-i64.ll
blob17061e41b5bb674569c7189bdffeae4e3b7a655e
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2 ; RUN: llc -mtriple=amdgcn -verify-machineinstrs < %s | FileCheck --check-prefix=GFX6 %s
3 ; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck --check-prefix=GFX7 %s
4 ; RUN: llc -mtriple=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck --check-prefix=GFX8 %s
5 ; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck --check-prefix=EG %s
7 define amdgpu_kernel void @constant_load_i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
8 ; GFX6-LABEL: constant_load_i64:
9 ; GFX6:       ; %bb.0:
10 ; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
11 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
12 ; GFX6-NEXT:    s_load_dwordx2 s[4:5], s[2:3], 0x0
13 ; GFX6-NEXT:    s_mov_b32 s3, 0xf000
14 ; GFX6-NEXT:    s_mov_b32 s2, -1
15 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
16 ; GFX6-NEXT:    v_mov_b32_e32 v0, s4
17 ; GFX6-NEXT:    v_mov_b32_e32 v1, s5
18 ; GFX6-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0
19 ; GFX6-NEXT:    s_endpgm
21 ; GFX7-LABEL: constant_load_i64:
22 ; GFX7:       ; %bb.0:
23 ; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
24 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
25 ; GFX7-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
26 ; GFX7-NEXT:    v_mov_b32_e32 v0, s0
27 ; GFX7-NEXT:    v_mov_b32_e32 v1, s1
28 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
29 ; GFX7-NEXT:    v_mov_b32_e32 v2, s2
30 ; GFX7-NEXT:    v_mov_b32_e32 v3, s3
31 ; GFX7-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
32 ; GFX7-NEXT:    s_endpgm
34 ; GFX8-LABEL: constant_load_i64:
35 ; GFX8:       ; %bb.0:
36 ; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
37 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
38 ; GFX8-NEXT:    s_load_dwordx2 s[2:3], s[2:3], 0x0
39 ; GFX8-NEXT:    v_mov_b32_e32 v0, s0
40 ; GFX8-NEXT:    v_mov_b32_e32 v1, s1
41 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
42 ; GFX8-NEXT:    v_mov_b32_e32 v2, s2
43 ; GFX8-NEXT:    v_mov_b32_e32 v3, s3
44 ; GFX8-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
45 ; GFX8-NEXT:    s_endpgm
47 ; EG-LABEL: constant_load_i64:
48 ; EG:       ; %bb.0:
49 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
50 ; EG-NEXT:    TEX 0 @6
51 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
52 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
53 ; EG-NEXT:    CF_END
54 ; EG-NEXT:    PAD
55 ; EG-NEXT:    Fetch clause starting at 6:
56 ; EG-NEXT:     VTX_READ_64 T0.XY, T0.X, 0, #1
57 ; EG-NEXT:    ALU clause starting at 8:
58 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
59 ; EG-NEXT:    ALU clause starting at 9:
60 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
61 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
62   %ld = load i64, ptr addrspace(4) %in
63   store i64 %ld, ptr addrspace(1) %out
64   ret void
67 define amdgpu_kernel void @constant_load_v2i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
68 ; GFX6-LABEL: constant_load_v2i64:
69 ; GFX6:       ; %bb.0: ; %entry
70 ; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
71 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
72 ; GFX6-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
73 ; GFX6-NEXT:    s_mov_b32 s3, 0xf000
74 ; GFX6-NEXT:    s_mov_b32 s2, -1
75 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
76 ; GFX6-NEXT:    v_mov_b32_e32 v0, s4
77 ; GFX6-NEXT:    v_mov_b32_e32 v1, s5
78 ; GFX6-NEXT:    v_mov_b32_e32 v2, s6
79 ; GFX6-NEXT:    v_mov_b32_e32 v3, s7
80 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
81 ; GFX6-NEXT:    s_endpgm
83 ; GFX7-LABEL: constant_load_v2i64:
84 ; GFX7:       ; %bb.0: ; %entry
85 ; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
86 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
87 ; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
88 ; GFX7-NEXT:    v_mov_b32_e32 v4, s0
89 ; GFX7-NEXT:    v_mov_b32_e32 v5, s1
90 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
91 ; GFX7-NEXT:    v_mov_b32_e32 v0, s4
92 ; GFX7-NEXT:    v_mov_b32_e32 v1, s5
93 ; GFX7-NEXT:    v_mov_b32_e32 v2, s6
94 ; GFX7-NEXT:    v_mov_b32_e32 v3, s7
95 ; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
96 ; GFX7-NEXT:    s_endpgm
98 ; GFX8-LABEL: constant_load_v2i64:
99 ; GFX8:       ; %bb.0: ; %entry
100 ; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
101 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
102 ; GFX8-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
103 ; GFX8-NEXT:    v_mov_b32_e32 v4, s0
104 ; GFX8-NEXT:    v_mov_b32_e32 v5, s1
105 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
106 ; GFX8-NEXT:    v_mov_b32_e32 v0, s4
107 ; GFX8-NEXT:    v_mov_b32_e32 v1, s5
108 ; GFX8-NEXT:    v_mov_b32_e32 v2, s6
109 ; GFX8-NEXT:    v_mov_b32_e32 v3, s7
110 ; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
111 ; GFX8-NEXT:    s_endpgm
113 ; EG-LABEL: constant_load_v2i64:
114 ; EG:       ; %bb.0: ; %entry
115 ; EG-NEXT:    ALU 0, @8, KC0[CB0:0-32], KC1[]
116 ; EG-NEXT:    TEX 0 @6
117 ; EG-NEXT:    ALU 1, @9, KC0[CB0:0-32], KC1[]
118 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
119 ; EG-NEXT:    CF_END
120 ; EG-NEXT:    PAD
121 ; EG-NEXT:    Fetch clause starting at 6:
122 ; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
123 ; EG-NEXT:    ALU clause starting at 8:
124 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
125 ; EG-NEXT:    ALU clause starting at 9:
126 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
127 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
128 entry:
129   %ld = load <2 x i64>, ptr addrspace(4) %in
130   store <2 x i64> %ld, ptr addrspace(1) %out
131   ret void
134 define amdgpu_kernel void @constant_load_v3i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
135 ; GFX6-LABEL: constant_load_v3i64:
136 ; GFX6:       ; %bb.0: ; %entry
137 ; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
138 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
139 ; GFX6-NEXT:    s_load_dwordx2 s[8:9], s[2:3], 0x4
140 ; GFX6-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
141 ; GFX6-NEXT:    s_mov_b32 s3, 0xf000
142 ; GFX6-NEXT:    s_mov_b32 s2, -1
143 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
144 ; GFX6-NEXT:    v_mov_b32_e32 v0, s8
145 ; GFX6-NEXT:    v_mov_b32_e32 v1, s9
146 ; GFX6-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0 offset:16
147 ; GFX6-NEXT:    s_waitcnt expcnt(0)
148 ; GFX6-NEXT:    v_mov_b32_e32 v0, s4
149 ; GFX6-NEXT:    v_mov_b32_e32 v1, s5
150 ; GFX6-NEXT:    v_mov_b32_e32 v2, s6
151 ; GFX6-NEXT:    v_mov_b32_e32 v3, s7
152 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 0
153 ; GFX6-NEXT:    s_endpgm
155 ; GFX7-LABEL: constant_load_v3i64:
156 ; GFX7:       ; %bb.0: ; %entry
157 ; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
158 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
159 ; GFX7-NEXT:    s_load_dwordx2 s[8:9], s[2:3], 0x4
160 ; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
161 ; GFX7-NEXT:    s_add_u32 s2, s0, 16
162 ; GFX7-NEXT:    s_addc_u32 s3, s1, 0
163 ; GFX7-NEXT:    v_mov_b32_e32 v4, s3
164 ; GFX7-NEXT:    v_mov_b32_e32 v3, s2
165 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
166 ; GFX7-NEXT:    v_mov_b32_e32 v5, s8
167 ; GFX7-NEXT:    v_mov_b32_e32 v6, s9
168 ; GFX7-NEXT:    flat_store_dwordx2 v[3:4], v[5:6]
169 ; GFX7-NEXT:    v_mov_b32_e32 v5, s1
170 ; GFX7-NEXT:    v_mov_b32_e32 v0, s4
171 ; GFX7-NEXT:    v_mov_b32_e32 v1, s5
172 ; GFX7-NEXT:    v_mov_b32_e32 v2, s6
173 ; GFX7-NEXT:    v_mov_b32_e32 v3, s7
174 ; GFX7-NEXT:    v_mov_b32_e32 v4, s0
175 ; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
176 ; GFX7-NEXT:    s_endpgm
178 ; GFX8-LABEL: constant_load_v3i64:
179 ; GFX8:       ; %bb.0: ; %entry
180 ; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x24
181 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
182 ; GFX8-NEXT:    s_load_dwordx2 s[8:9], s[2:3], 0x10
183 ; GFX8-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x0
184 ; GFX8-NEXT:    s_add_u32 s2, s0, 16
185 ; GFX8-NEXT:    s_addc_u32 s3, s1, 0
186 ; GFX8-NEXT:    v_mov_b32_e32 v4, s3
187 ; GFX8-NEXT:    v_mov_b32_e32 v3, s2
188 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
189 ; GFX8-NEXT:    v_mov_b32_e32 v5, s8
190 ; GFX8-NEXT:    v_mov_b32_e32 v6, s9
191 ; GFX8-NEXT:    flat_store_dwordx2 v[3:4], v[5:6]
192 ; GFX8-NEXT:    v_mov_b32_e32 v5, s1
193 ; GFX8-NEXT:    v_mov_b32_e32 v0, s4
194 ; GFX8-NEXT:    v_mov_b32_e32 v1, s5
195 ; GFX8-NEXT:    v_mov_b32_e32 v2, s6
196 ; GFX8-NEXT:    v_mov_b32_e32 v3, s7
197 ; GFX8-NEXT:    v_mov_b32_e32 v4, s0
198 ; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
199 ; GFX8-NEXT:    s_endpgm
201 ; EG-LABEL: constant_load_v3i64:
202 ; EG:       ; %bb.0: ; %entry
203 ; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
204 ; EG-NEXT:    TEX 0 @8
205 ; EG-NEXT:    ALU 1, @13, KC0[CB0:0-32], KC1[]
206 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
207 ; EG-NEXT:    TEX 0 @10
208 ; EG-NEXT:    ALU 3, @15, KC0[CB0:0-32], KC1[]
209 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XY, T1.X, 1
210 ; EG-NEXT:    CF_END
211 ; EG-NEXT:    Fetch clause starting at 8:
212 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 0, #1
213 ; EG-NEXT:    Fetch clause starting at 10:
214 ; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 16, #1
215 ; EG-NEXT:    ALU clause starting at 12:
216 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
217 ; EG-NEXT:    ALU clause starting at 13:
218 ; EG-NEXT:     LSHR * T2.X, KC0[2].Y, literal.x,
219 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
220 ; EG-NEXT:    ALU clause starting at 15:
221 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
222 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
223 ; EG-NEXT:     LSHR * T1.X, PV.W, literal.x,
224 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
225 entry:
226   %ld = load <3 x i64>, ptr addrspace(4) %in
227   store <3 x i64> %ld, ptr addrspace(1) %out
228   ret void
231 define amdgpu_kernel void @constant_load_v4i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
232 ; GFX6-LABEL: constant_load_v4i64:
233 ; GFX6:       ; %bb.0: ; %entry
234 ; GFX6-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x9
235 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
236 ; GFX6-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
237 ; GFX6-NEXT:    s_mov_b32 s11, 0xf000
238 ; GFX6-NEXT:    s_mov_b32 s10, -1
239 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
240 ; GFX6-NEXT:    v_mov_b32_e32 v0, s4
241 ; GFX6-NEXT:    v_mov_b32_e32 v1, s5
242 ; GFX6-NEXT:    v_mov_b32_e32 v2, s6
243 ; GFX6-NEXT:    v_mov_b32_e32 v3, s7
244 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0 offset:16
245 ; GFX6-NEXT:    s_waitcnt expcnt(0)
246 ; GFX6-NEXT:    v_mov_b32_e32 v0, s0
247 ; GFX6-NEXT:    v_mov_b32_e32 v1, s1
248 ; GFX6-NEXT:    v_mov_b32_e32 v2, s2
249 ; GFX6-NEXT:    v_mov_b32_e32 v3, s3
250 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 0
251 ; GFX6-NEXT:    s_endpgm
253 ; GFX7-LABEL: constant_load_v4i64:
254 ; GFX7:       ; %bb.0: ; %entry
255 ; GFX7-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x0
256 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
257 ; GFX7-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
258 ; GFX7-NEXT:    s_add_u32 s10, s8, 16
259 ; GFX7-NEXT:    s_addc_u32 s11, s9, 0
260 ; GFX7-NEXT:    v_mov_b32_e32 v6, s10
261 ; GFX7-NEXT:    v_mov_b32_e32 v7, s11
262 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
263 ; GFX7-NEXT:    v_mov_b32_e32 v0, s4
264 ; GFX7-NEXT:    v_mov_b32_e32 v1, s5
265 ; GFX7-NEXT:    v_mov_b32_e32 v2, s6
266 ; GFX7-NEXT:    v_mov_b32_e32 v3, s7
267 ; GFX7-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
268 ; GFX7-NEXT:    v_mov_b32_e32 v4, s0
269 ; GFX7-NEXT:    v_mov_b32_e32 v0, s8
270 ; GFX7-NEXT:    v_mov_b32_e32 v5, s1
271 ; GFX7-NEXT:    v_mov_b32_e32 v6, s2
272 ; GFX7-NEXT:    v_mov_b32_e32 v7, s3
273 ; GFX7-NEXT:    v_mov_b32_e32 v1, s9
274 ; GFX7-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
275 ; GFX7-NEXT:    s_endpgm
277 ; GFX8-LABEL: constant_load_v4i64:
278 ; GFX8:       ; %bb.0: ; %entry
279 ; GFX8-NEXT:    s_load_dwordx4 s[8:11], s[0:1], 0x24
280 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
281 ; GFX8-NEXT:    s_load_dwordx8 s[0:7], s[10:11], 0x0
282 ; GFX8-NEXT:    s_add_u32 s10, s8, 16
283 ; GFX8-NEXT:    s_addc_u32 s11, s9, 0
284 ; GFX8-NEXT:    v_mov_b32_e32 v6, s10
285 ; GFX8-NEXT:    v_mov_b32_e32 v7, s11
286 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
287 ; GFX8-NEXT:    v_mov_b32_e32 v0, s4
288 ; GFX8-NEXT:    v_mov_b32_e32 v1, s5
289 ; GFX8-NEXT:    v_mov_b32_e32 v2, s6
290 ; GFX8-NEXT:    v_mov_b32_e32 v3, s7
291 ; GFX8-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
292 ; GFX8-NEXT:    v_mov_b32_e32 v4, s0
293 ; GFX8-NEXT:    v_mov_b32_e32 v0, s8
294 ; GFX8-NEXT:    v_mov_b32_e32 v5, s1
295 ; GFX8-NEXT:    v_mov_b32_e32 v6, s2
296 ; GFX8-NEXT:    v_mov_b32_e32 v7, s3
297 ; GFX8-NEXT:    v_mov_b32_e32 v1, s9
298 ; GFX8-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
299 ; GFX8-NEXT:    s_endpgm
301 ; EG-LABEL: constant_load_v4i64:
302 ; EG:       ; %bb.0: ; %entry
303 ; EG-NEXT:    ALU 0, @12, KC0[CB0:0-32], KC1[]
304 ; EG-NEXT:    TEX 0 @8
305 ; EG-NEXT:    ALU 3, @13, KC0[CB0:0-32], KC1[]
306 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
307 ; EG-NEXT:    TEX 0 @10
308 ; EG-NEXT:    ALU 1, @17, KC0[CB0:0-32], KC1[]
309 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
310 ; EG-NEXT:    CF_END
311 ; EG-NEXT:    Fetch clause starting at 8:
312 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1
313 ; EG-NEXT:    Fetch clause starting at 10:
314 ; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
315 ; EG-NEXT:    ALU clause starting at 12:
316 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
317 ; EG-NEXT:    ALU clause starting at 13:
318 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
319 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
320 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
321 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
322 ; EG-NEXT:    ALU clause starting at 17:
323 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
324 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
325 entry:
326   %ld = load <4 x i64>, ptr addrspace(4) %in
327   store <4 x i64> %ld, ptr addrspace(1) %out
328   ret void
331 define amdgpu_kernel void @constant_load_v8i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
332 ; GFX6-LABEL: constant_load_v8i64:
333 ; GFX6:       ; %bb.0: ; %entry
334 ; GFX6-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x9
335 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
336 ; GFX6-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
337 ; GFX6-NEXT:    s_mov_b32 s19, 0xf000
338 ; GFX6-NEXT:    s_mov_b32 s18, -1
339 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
340 ; GFX6-NEXT:    v_mov_b32_e32 v0, s12
341 ; GFX6-NEXT:    v_mov_b32_e32 v1, s13
342 ; GFX6-NEXT:    v_mov_b32_e32 v2, s14
343 ; GFX6-NEXT:    v_mov_b32_e32 v3, s15
344 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:48
345 ; GFX6-NEXT:    s_waitcnt expcnt(0)
346 ; GFX6-NEXT:    v_mov_b32_e32 v0, s8
347 ; GFX6-NEXT:    v_mov_b32_e32 v1, s9
348 ; GFX6-NEXT:    v_mov_b32_e32 v2, s10
349 ; GFX6-NEXT:    v_mov_b32_e32 v3, s11
350 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:32
351 ; GFX6-NEXT:    s_waitcnt expcnt(0)
352 ; GFX6-NEXT:    v_mov_b32_e32 v0, s4
353 ; GFX6-NEXT:    v_mov_b32_e32 v1, s5
354 ; GFX6-NEXT:    v_mov_b32_e32 v2, s6
355 ; GFX6-NEXT:    v_mov_b32_e32 v3, s7
356 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0 offset:16
357 ; GFX6-NEXT:    s_waitcnt expcnt(0)
358 ; GFX6-NEXT:    v_mov_b32_e32 v0, s0
359 ; GFX6-NEXT:    v_mov_b32_e32 v1, s1
360 ; GFX6-NEXT:    v_mov_b32_e32 v2, s2
361 ; GFX6-NEXT:    v_mov_b32_e32 v3, s3
362 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 0
363 ; GFX6-NEXT:    s_endpgm
365 ; GFX7-LABEL: constant_load_v8i64:
366 ; GFX7:       ; %bb.0: ; %entry
367 ; GFX7-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x0
368 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
369 ; GFX7-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
370 ; GFX7-NEXT:    s_add_u32 s18, s16, 48
371 ; GFX7-NEXT:    s_addc_u32 s19, s17, 0
372 ; GFX7-NEXT:    v_mov_b32_e32 v6, s18
373 ; GFX7-NEXT:    v_mov_b32_e32 v7, s19
374 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
375 ; GFX7-NEXT:    v_mov_b32_e32 v0, s12
376 ; GFX7-NEXT:    v_mov_b32_e32 v1, s13
377 ; GFX7-NEXT:    v_mov_b32_e32 v2, s14
378 ; GFX7-NEXT:    v_mov_b32_e32 v3, s15
379 ; GFX7-NEXT:    v_mov_b32_e32 v4, s8
380 ; GFX7-NEXT:    s_add_u32 s8, s16, 32
381 ; GFX7-NEXT:    v_mov_b32_e32 v5, s9
382 ; GFX7-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
383 ; GFX7-NEXT:    s_addc_u32 s9, s17, 0
384 ; GFX7-NEXT:    v_mov_b32_e32 v0, s8
385 ; GFX7-NEXT:    v_mov_b32_e32 v6, s10
386 ; GFX7-NEXT:    v_mov_b32_e32 v7, s11
387 ; GFX7-NEXT:    v_mov_b32_e32 v1, s9
388 ; GFX7-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
389 ; GFX7-NEXT:    v_mov_b32_e32 v0, s4
390 ; GFX7-NEXT:    s_add_u32 s4, s16, 16
391 ; GFX7-NEXT:    v_mov_b32_e32 v1, s5
392 ; GFX7-NEXT:    s_addc_u32 s5, s17, 0
393 ; GFX7-NEXT:    v_mov_b32_e32 v4, s4
394 ; GFX7-NEXT:    v_mov_b32_e32 v2, s6
395 ; GFX7-NEXT:    v_mov_b32_e32 v3, s7
396 ; GFX7-NEXT:    v_mov_b32_e32 v5, s5
397 ; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
398 ; GFX7-NEXT:    v_mov_b32_e32 v4, s16
399 ; GFX7-NEXT:    v_mov_b32_e32 v0, s0
400 ; GFX7-NEXT:    v_mov_b32_e32 v1, s1
401 ; GFX7-NEXT:    v_mov_b32_e32 v2, s2
402 ; GFX7-NEXT:    v_mov_b32_e32 v3, s3
403 ; GFX7-NEXT:    v_mov_b32_e32 v5, s17
404 ; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
405 ; GFX7-NEXT:    s_endpgm
407 ; GFX8-LABEL: constant_load_v8i64:
408 ; GFX8:       ; %bb.0: ; %entry
409 ; GFX8-NEXT:    s_load_dwordx4 s[16:19], s[0:1], 0x24
410 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
411 ; GFX8-NEXT:    s_load_dwordx16 s[0:15], s[18:19], 0x0
412 ; GFX8-NEXT:    s_add_u32 s18, s16, 48
413 ; GFX8-NEXT:    s_addc_u32 s19, s17, 0
414 ; GFX8-NEXT:    v_mov_b32_e32 v6, s18
415 ; GFX8-NEXT:    v_mov_b32_e32 v7, s19
416 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
417 ; GFX8-NEXT:    v_mov_b32_e32 v0, s12
418 ; GFX8-NEXT:    v_mov_b32_e32 v1, s13
419 ; GFX8-NEXT:    v_mov_b32_e32 v2, s14
420 ; GFX8-NEXT:    v_mov_b32_e32 v3, s15
421 ; GFX8-NEXT:    v_mov_b32_e32 v4, s8
422 ; GFX8-NEXT:    s_add_u32 s8, s16, 32
423 ; GFX8-NEXT:    v_mov_b32_e32 v5, s9
424 ; GFX8-NEXT:    flat_store_dwordx4 v[6:7], v[0:3]
425 ; GFX8-NEXT:    s_addc_u32 s9, s17, 0
426 ; GFX8-NEXT:    v_mov_b32_e32 v0, s8
427 ; GFX8-NEXT:    v_mov_b32_e32 v6, s10
428 ; GFX8-NEXT:    v_mov_b32_e32 v7, s11
429 ; GFX8-NEXT:    v_mov_b32_e32 v1, s9
430 ; GFX8-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
431 ; GFX8-NEXT:    v_mov_b32_e32 v0, s4
432 ; GFX8-NEXT:    s_add_u32 s4, s16, 16
433 ; GFX8-NEXT:    v_mov_b32_e32 v1, s5
434 ; GFX8-NEXT:    s_addc_u32 s5, s17, 0
435 ; GFX8-NEXT:    v_mov_b32_e32 v4, s4
436 ; GFX8-NEXT:    v_mov_b32_e32 v2, s6
437 ; GFX8-NEXT:    v_mov_b32_e32 v3, s7
438 ; GFX8-NEXT:    v_mov_b32_e32 v5, s5
439 ; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
440 ; GFX8-NEXT:    v_mov_b32_e32 v4, s16
441 ; GFX8-NEXT:    v_mov_b32_e32 v0, s0
442 ; GFX8-NEXT:    v_mov_b32_e32 v1, s1
443 ; GFX8-NEXT:    v_mov_b32_e32 v2, s2
444 ; GFX8-NEXT:    v_mov_b32_e32 v3, s3
445 ; GFX8-NEXT:    v_mov_b32_e32 v5, s17
446 ; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
447 ; GFX8-NEXT:    s_endpgm
449 ; EG-LABEL: constant_load_v8i64:
450 ; EG:       ; %bb.0: ; %entry
451 ; EG-NEXT:    ALU 0, @22, KC0[CB0:0-32], KC1[]
452 ; EG-NEXT:    TEX 0 @14
453 ; EG-NEXT:    ALU 3, @23, KC0[CB0:0-32], KC1[]
454 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
455 ; EG-NEXT:    TEX 0 @16
456 ; EG-NEXT:    ALU 3, @27, KC0[CB0:0-32], KC1[]
457 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
458 ; EG-NEXT:    TEX 0 @18
459 ; EG-NEXT:    ALU 3, @31, KC0[CB0:0-32], KC1[]
460 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
461 ; EG-NEXT:    TEX 0 @20
462 ; EG-NEXT:    ALU 1, @35, KC0[CB0:0-32], KC1[]
463 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
464 ; EG-NEXT:    CF_END
465 ; EG-NEXT:    Fetch clause starting at 14:
466 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 48, #1
467 ; EG-NEXT:    Fetch clause starting at 16:
468 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 32, #1
469 ; EG-NEXT:    Fetch clause starting at 18:
470 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1
471 ; EG-NEXT:    Fetch clause starting at 20:
472 ; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
473 ; EG-NEXT:    ALU clause starting at 22:
474 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
475 ; EG-NEXT:    ALU clause starting at 23:
476 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
477 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
478 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
479 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
480 ; EG-NEXT:    ALU clause starting at 27:
481 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
482 ; EG-NEXT:    32(4.484155e-44), 0(0.000000e+00)
483 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
484 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
485 ; EG-NEXT:    ALU clause starting at 31:
486 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
487 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
488 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
489 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
490 ; EG-NEXT:    ALU clause starting at 35:
491 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
492 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
493 entry:
494   %ld = load <8 x i64>, ptr addrspace(4) %in
495   store <8 x i64> %ld, ptr addrspace(1) %out
496   ret void
499 define amdgpu_kernel void @constant_load_v16i64(ptr addrspace(1) %out, ptr addrspace(4) %in) #0 {
500 ; GFX6-LABEL: constant_load_v16i64:
501 ; GFX6:       ; %bb.0: ; %entry
502 ; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[0:1], 0x9
503 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
504 ; GFX6-NEXT:    s_load_dwordx16 s[16:31], s[2:3], 0x10
505 ; GFX6-NEXT:    s_mov_b32 s39, 0xf000
506 ; GFX6-NEXT:    s_mov_b32 s38, -1
507 ; GFX6-NEXT:    s_mov_b32 s36, s0
508 ; GFX6-NEXT:    s_mov_b32 s37, s1
509 ; GFX6-NEXT:    s_load_dwordx16 s[0:15], s[2:3], 0x0
510 ; GFX6-NEXT:    s_waitcnt lgkmcnt(0)
511 ; GFX6-NEXT:    v_mov_b32_e32 v0, s28
512 ; GFX6-NEXT:    v_mov_b32_e32 v1, s29
513 ; GFX6-NEXT:    v_mov_b32_e32 v2, s30
514 ; GFX6-NEXT:    v_mov_b32_e32 v3, s31
515 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:112
516 ; GFX6-NEXT:    s_waitcnt expcnt(0)
517 ; GFX6-NEXT:    v_mov_b32_e32 v0, s24
518 ; GFX6-NEXT:    v_mov_b32_e32 v1, s25
519 ; GFX6-NEXT:    v_mov_b32_e32 v2, s26
520 ; GFX6-NEXT:    v_mov_b32_e32 v3, s27
521 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:96
522 ; GFX6-NEXT:    s_waitcnt expcnt(0)
523 ; GFX6-NEXT:    v_mov_b32_e32 v0, s20
524 ; GFX6-NEXT:    v_mov_b32_e32 v1, s21
525 ; GFX6-NEXT:    v_mov_b32_e32 v2, s22
526 ; GFX6-NEXT:    v_mov_b32_e32 v3, s23
527 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:80
528 ; GFX6-NEXT:    s_waitcnt expcnt(0)
529 ; GFX6-NEXT:    v_mov_b32_e32 v0, s16
530 ; GFX6-NEXT:    v_mov_b32_e32 v1, s17
531 ; GFX6-NEXT:    v_mov_b32_e32 v2, s18
532 ; GFX6-NEXT:    v_mov_b32_e32 v3, s19
533 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:64
534 ; GFX6-NEXT:    s_waitcnt expcnt(0)
535 ; GFX6-NEXT:    v_mov_b32_e32 v0, s12
536 ; GFX6-NEXT:    v_mov_b32_e32 v1, s13
537 ; GFX6-NEXT:    v_mov_b32_e32 v2, s14
538 ; GFX6-NEXT:    v_mov_b32_e32 v3, s15
539 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:48
540 ; GFX6-NEXT:    s_waitcnt expcnt(0)
541 ; GFX6-NEXT:    v_mov_b32_e32 v0, s8
542 ; GFX6-NEXT:    v_mov_b32_e32 v1, s9
543 ; GFX6-NEXT:    v_mov_b32_e32 v2, s10
544 ; GFX6-NEXT:    v_mov_b32_e32 v3, s11
545 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:32
546 ; GFX6-NEXT:    s_waitcnt expcnt(0)
547 ; GFX6-NEXT:    v_mov_b32_e32 v0, s4
548 ; GFX6-NEXT:    v_mov_b32_e32 v1, s5
549 ; GFX6-NEXT:    v_mov_b32_e32 v2, s6
550 ; GFX6-NEXT:    v_mov_b32_e32 v3, s7
551 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0 offset:16
552 ; GFX6-NEXT:    s_waitcnt expcnt(0)
553 ; GFX6-NEXT:    v_mov_b32_e32 v0, s0
554 ; GFX6-NEXT:    v_mov_b32_e32 v1, s1
555 ; GFX6-NEXT:    v_mov_b32_e32 v2, s2
556 ; GFX6-NEXT:    v_mov_b32_e32 v3, s3
557 ; GFX6-NEXT:    buffer_store_dwordx4 v[0:3], off, s[36:39], 0
558 ; GFX6-NEXT:    s_endpgm
560 ; GFX7-LABEL: constant_load_v16i64:
561 ; GFX7:       ; %bb.0: ; %entry
562 ; GFX7-NEXT:    s_load_dwordx4 s[36:39], s[4:5], 0x0
563 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
564 ; GFX7-NEXT:    s_load_dwordx16 s[16:31], s[38:39], 0x10
565 ; GFX7-NEXT:    s_load_dwordx16 s[0:15], s[38:39], 0x0
566 ; GFX7-NEXT:    s_add_u32 s34, s36, 0x70
567 ; GFX7-NEXT:    s_addc_u32 s35, s37, 0
568 ; GFX7-NEXT:    v_mov_b32_e32 v5, s34
569 ; GFX7-NEXT:    v_mov_b32_e32 v6, s35
570 ; GFX7-NEXT:    s_waitcnt lgkmcnt(0)
571 ; GFX7-NEXT:    v_mov_b32_e32 v0, s28
572 ; GFX7-NEXT:    v_mov_b32_e32 v1, s29
573 ; GFX7-NEXT:    v_mov_b32_e32 v2, s30
574 ; GFX7-NEXT:    v_mov_b32_e32 v3, s31
575 ; GFX7-NEXT:    v_mov_b32_e32 v4, s24
576 ; GFX7-NEXT:    s_add_u32 s24, s36, 0x60
577 ; GFX7-NEXT:    flat_store_dwordx4 v[5:6], v[0:3]
578 ; GFX7-NEXT:    v_mov_b32_e32 v5, s25
579 ; GFX7-NEXT:    s_addc_u32 s25, s37, 0
580 ; GFX7-NEXT:    v_mov_b32_e32 v0, s24
581 ; GFX7-NEXT:    v_mov_b32_e32 v6, s26
582 ; GFX7-NEXT:    v_mov_b32_e32 v7, s27
583 ; GFX7-NEXT:    v_mov_b32_e32 v1, s25
584 ; GFX7-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
585 ; GFX7-NEXT:    v_mov_b32_e32 v0, s20
586 ; GFX7-NEXT:    s_add_u32 s20, s36, 0x50
587 ; GFX7-NEXT:    v_mov_b32_e32 v1, s21
588 ; GFX7-NEXT:    s_addc_u32 s21, s37, 0
589 ; GFX7-NEXT:    v_mov_b32_e32 v4, s20
590 ; GFX7-NEXT:    v_mov_b32_e32 v2, s22
591 ; GFX7-NEXT:    v_mov_b32_e32 v3, s23
592 ; GFX7-NEXT:    v_mov_b32_e32 v5, s21
593 ; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
594 ; GFX7-NEXT:    s_nop 0
595 ; GFX7-NEXT:    v_mov_b32_e32 v0, s16
596 ; GFX7-NEXT:    s_add_u32 s16, s36, 64
597 ; GFX7-NEXT:    v_mov_b32_e32 v1, s17
598 ; GFX7-NEXT:    s_addc_u32 s17, s37, 0
599 ; GFX7-NEXT:    v_mov_b32_e32 v4, s16
600 ; GFX7-NEXT:    v_mov_b32_e32 v2, s18
601 ; GFX7-NEXT:    v_mov_b32_e32 v3, s19
602 ; GFX7-NEXT:    v_mov_b32_e32 v5, s17
603 ; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
604 ; GFX7-NEXT:    s_nop 0
605 ; GFX7-NEXT:    v_mov_b32_e32 v0, s12
606 ; GFX7-NEXT:    s_add_u32 s12, s36, 48
607 ; GFX7-NEXT:    v_mov_b32_e32 v1, s13
608 ; GFX7-NEXT:    s_addc_u32 s13, s37, 0
609 ; GFX7-NEXT:    v_mov_b32_e32 v4, s12
610 ; GFX7-NEXT:    v_mov_b32_e32 v2, s14
611 ; GFX7-NEXT:    v_mov_b32_e32 v3, s15
612 ; GFX7-NEXT:    v_mov_b32_e32 v5, s13
613 ; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
614 ; GFX7-NEXT:    s_nop 0
615 ; GFX7-NEXT:    v_mov_b32_e32 v0, s8
616 ; GFX7-NEXT:    s_add_u32 s8, s36, 32
617 ; GFX7-NEXT:    v_mov_b32_e32 v1, s9
618 ; GFX7-NEXT:    s_addc_u32 s9, s37, 0
619 ; GFX7-NEXT:    v_mov_b32_e32 v4, s8
620 ; GFX7-NEXT:    v_mov_b32_e32 v2, s10
621 ; GFX7-NEXT:    v_mov_b32_e32 v3, s11
622 ; GFX7-NEXT:    v_mov_b32_e32 v5, s9
623 ; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
624 ; GFX7-NEXT:    s_nop 0
625 ; GFX7-NEXT:    v_mov_b32_e32 v0, s4
626 ; GFX7-NEXT:    s_add_u32 s4, s36, 16
627 ; GFX7-NEXT:    v_mov_b32_e32 v1, s5
628 ; GFX7-NEXT:    s_addc_u32 s5, s37, 0
629 ; GFX7-NEXT:    v_mov_b32_e32 v4, s4
630 ; GFX7-NEXT:    v_mov_b32_e32 v2, s6
631 ; GFX7-NEXT:    v_mov_b32_e32 v3, s7
632 ; GFX7-NEXT:    v_mov_b32_e32 v5, s5
633 ; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
634 ; GFX7-NEXT:    v_mov_b32_e32 v4, s36
635 ; GFX7-NEXT:    v_mov_b32_e32 v0, s0
636 ; GFX7-NEXT:    v_mov_b32_e32 v1, s1
637 ; GFX7-NEXT:    v_mov_b32_e32 v2, s2
638 ; GFX7-NEXT:    v_mov_b32_e32 v3, s3
639 ; GFX7-NEXT:    v_mov_b32_e32 v5, s37
640 ; GFX7-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
641 ; GFX7-NEXT:    s_endpgm
643 ; GFX8-LABEL: constant_load_v16i64:
644 ; GFX8:       ; %bb.0: ; %entry
645 ; GFX8-NEXT:    s_load_dwordx4 s[36:39], s[0:1], 0x24
646 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
647 ; GFX8-NEXT:    s_load_dwordx16 s[16:31], s[38:39], 0x40
648 ; GFX8-NEXT:    s_load_dwordx16 s[0:15], s[38:39], 0x0
649 ; GFX8-NEXT:    s_add_u32 s34, s36, 0x70
650 ; GFX8-NEXT:    s_addc_u32 s35, s37, 0
651 ; GFX8-NEXT:    v_mov_b32_e32 v5, s34
652 ; GFX8-NEXT:    v_mov_b32_e32 v6, s35
653 ; GFX8-NEXT:    s_waitcnt lgkmcnt(0)
654 ; GFX8-NEXT:    v_mov_b32_e32 v0, s28
655 ; GFX8-NEXT:    v_mov_b32_e32 v1, s29
656 ; GFX8-NEXT:    v_mov_b32_e32 v2, s30
657 ; GFX8-NEXT:    v_mov_b32_e32 v3, s31
658 ; GFX8-NEXT:    v_mov_b32_e32 v4, s24
659 ; GFX8-NEXT:    s_add_u32 s24, s36, 0x60
660 ; GFX8-NEXT:    flat_store_dwordx4 v[5:6], v[0:3]
661 ; GFX8-NEXT:    v_mov_b32_e32 v5, s25
662 ; GFX8-NEXT:    s_addc_u32 s25, s37, 0
663 ; GFX8-NEXT:    v_mov_b32_e32 v0, s24
664 ; GFX8-NEXT:    v_mov_b32_e32 v6, s26
665 ; GFX8-NEXT:    v_mov_b32_e32 v7, s27
666 ; GFX8-NEXT:    v_mov_b32_e32 v1, s25
667 ; GFX8-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]
668 ; GFX8-NEXT:    v_mov_b32_e32 v0, s20
669 ; GFX8-NEXT:    s_add_u32 s20, s36, 0x50
670 ; GFX8-NEXT:    v_mov_b32_e32 v1, s21
671 ; GFX8-NEXT:    s_addc_u32 s21, s37, 0
672 ; GFX8-NEXT:    v_mov_b32_e32 v4, s20
673 ; GFX8-NEXT:    v_mov_b32_e32 v2, s22
674 ; GFX8-NEXT:    v_mov_b32_e32 v3, s23
675 ; GFX8-NEXT:    v_mov_b32_e32 v5, s21
676 ; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
677 ; GFX8-NEXT:    s_nop 0
678 ; GFX8-NEXT:    v_mov_b32_e32 v0, s16
679 ; GFX8-NEXT:    s_add_u32 s16, s36, 64
680 ; GFX8-NEXT:    v_mov_b32_e32 v1, s17
681 ; GFX8-NEXT:    s_addc_u32 s17, s37, 0
682 ; GFX8-NEXT:    v_mov_b32_e32 v4, s16
683 ; GFX8-NEXT:    v_mov_b32_e32 v2, s18
684 ; GFX8-NEXT:    v_mov_b32_e32 v3, s19
685 ; GFX8-NEXT:    v_mov_b32_e32 v5, s17
686 ; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
687 ; GFX8-NEXT:    s_nop 0
688 ; GFX8-NEXT:    v_mov_b32_e32 v0, s12
689 ; GFX8-NEXT:    s_add_u32 s12, s36, 48
690 ; GFX8-NEXT:    v_mov_b32_e32 v1, s13
691 ; GFX8-NEXT:    s_addc_u32 s13, s37, 0
692 ; GFX8-NEXT:    v_mov_b32_e32 v4, s12
693 ; GFX8-NEXT:    v_mov_b32_e32 v2, s14
694 ; GFX8-NEXT:    v_mov_b32_e32 v3, s15
695 ; GFX8-NEXT:    v_mov_b32_e32 v5, s13
696 ; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
697 ; GFX8-NEXT:    s_nop 0
698 ; GFX8-NEXT:    v_mov_b32_e32 v0, s8
699 ; GFX8-NEXT:    s_add_u32 s8, s36, 32
700 ; GFX8-NEXT:    v_mov_b32_e32 v1, s9
701 ; GFX8-NEXT:    s_addc_u32 s9, s37, 0
702 ; GFX8-NEXT:    v_mov_b32_e32 v4, s8
703 ; GFX8-NEXT:    v_mov_b32_e32 v2, s10
704 ; GFX8-NEXT:    v_mov_b32_e32 v3, s11
705 ; GFX8-NEXT:    v_mov_b32_e32 v5, s9
706 ; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
707 ; GFX8-NEXT:    s_nop 0
708 ; GFX8-NEXT:    v_mov_b32_e32 v0, s4
709 ; GFX8-NEXT:    s_add_u32 s4, s36, 16
710 ; GFX8-NEXT:    v_mov_b32_e32 v1, s5
711 ; GFX8-NEXT:    s_addc_u32 s5, s37, 0
712 ; GFX8-NEXT:    v_mov_b32_e32 v4, s4
713 ; GFX8-NEXT:    v_mov_b32_e32 v2, s6
714 ; GFX8-NEXT:    v_mov_b32_e32 v3, s7
715 ; GFX8-NEXT:    v_mov_b32_e32 v5, s5
716 ; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
717 ; GFX8-NEXT:    v_mov_b32_e32 v4, s36
718 ; GFX8-NEXT:    v_mov_b32_e32 v0, s0
719 ; GFX8-NEXT:    v_mov_b32_e32 v1, s1
720 ; GFX8-NEXT:    v_mov_b32_e32 v2, s2
721 ; GFX8-NEXT:    v_mov_b32_e32 v3, s3
722 ; GFX8-NEXT:    v_mov_b32_e32 v5, s37
723 ; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]
724 ; GFX8-NEXT:    s_endpgm
726 ; EG-LABEL: constant_load_v16i64:
727 ; EG:       ; %bb.0: ; %entry
728 ; EG-NEXT:    ALU 0, @42, KC0[CB0:0-32], KC1[]
729 ; EG-NEXT:    TEX 0 @26
730 ; EG-NEXT:    ALU 3, @43, KC0[CB0:0-32], KC1[]
731 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
732 ; EG-NEXT:    TEX 0 @28
733 ; EG-NEXT:    ALU 3, @47, KC0[CB0:0-32], KC1[]
734 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
735 ; EG-NEXT:    TEX 0 @30
736 ; EG-NEXT:    ALU 3, @51, KC0[CB0:0-32], KC1[]
737 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
738 ; EG-NEXT:    TEX 0 @32
739 ; EG-NEXT:    ALU 3, @55, KC0[CB0:0-32], KC1[]
740 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
741 ; EG-NEXT:    TEX 0 @34
742 ; EG-NEXT:    ALU 3, @59, KC0[CB0:0-32], KC1[]
743 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
744 ; EG-NEXT:    TEX 0 @36
745 ; EG-NEXT:    ALU 3, @63, KC0[CB0:0-32], KC1[]
746 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
747 ; EG-NEXT:    TEX 0 @38
748 ; EG-NEXT:    ALU 3, @67, KC0[CB0:0-32], KC1[]
749 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T1.XYZW, T2.X, 0
750 ; EG-NEXT:    TEX 0 @40
751 ; EG-NEXT:    ALU 1, @71, KC0[CB0:0-32], KC1[]
752 ; EG-NEXT:    MEM_RAT_CACHELESS STORE_RAW T0.XYZW, T1.X, 1
753 ; EG-NEXT:    CF_END
754 ; EG-NEXT:    Fetch clause starting at 26:
755 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 112, #1
756 ; EG-NEXT:    Fetch clause starting at 28:
757 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 96, #1
758 ; EG-NEXT:    Fetch clause starting at 30:
759 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 80, #1
760 ; EG-NEXT:    Fetch clause starting at 32:
761 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 64, #1
762 ; EG-NEXT:    Fetch clause starting at 34:
763 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 48, #1
764 ; EG-NEXT:    Fetch clause starting at 36:
765 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 32, #1
766 ; EG-NEXT:    Fetch clause starting at 38:
767 ; EG-NEXT:     VTX_READ_128 T1.XYZW, T0.X, 16, #1
768 ; EG-NEXT:    Fetch clause starting at 40:
769 ; EG-NEXT:     VTX_READ_128 T0.XYZW, T0.X, 0, #1
770 ; EG-NEXT:    ALU clause starting at 42:
771 ; EG-NEXT:     MOV * T0.X, KC0[2].Z,
772 ; EG-NEXT:    ALU clause starting at 43:
773 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
774 ; EG-NEXT:    112(1.569454e-43), 0(0.000000e+00)
775 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
776 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
777 ; EG-NEXT:    ALU clause starting at 47:
778 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
779 ; EG-NEXT:    96(1.345247e-43), 0(0.000000e+00)
780 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
781 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
782 ; EG-NEXT:    ALU clause starting at 51:
783 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
784 ; EG-NEXT:    80(1.121039e-43), 0(0.000000e+00)
785 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
786 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
787 ; EG-NEXT:    ALU clause starting at 55:
788 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
789 ; EG-NEXT:    64(8.968310e-44), 0(0.000000e+00)
790 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
791 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
792 ; EG-NEXT:    ALU clause starting at 59:
793 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
794 ; EG-NEXT:    48(6.726233e-44), 0(0.000000e+00)
795 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
796 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
797 ; EG-NEXT:    ALU clause starting at 63:
798 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
799 ; EG-NEXT:    32(4.484155e-44), 0(0.000000e+00)
800 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
801 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
802 ; EG-NEXT:    ALU clause starting at 67:
803 ; EG-NEXT:     ADD_INT * T0.W, KC0[2].Y, literal.x,
804 ; EG-NEXT:    16(2.242078e-44), 0(0.000000e+00)
805 ; EG-NEXT:     LSHR * T2.X, PV.W, literal.x,
806 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
807 ; EG-NEXT:    ALU clause starting at 71:
808 ; EG-NEXT:     LSHR * T1.X, KC0[2].Y, literal.x,
809 ; EG-NEXT:    2(2.802597e-45), 0(0.000000e+00)
810 entry:
811   %ld = load <16 x i64>, ptr addrspace(4) %in
812   store <16 x i64> %ld, ptr addrspace(1) %out
813   ret void
816 attributes #0 = { nounwind }