1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2 ; RUN: llc -mtriple amdgcn-amd-amdhsa -mcpu=gfx900 -O0 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX900 %s
3 ; RUN: llc -mtriple amdgcn-amd-amdhsa -mcpu=gfx906 -O0 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX906 %s
4 ; RUN: llc -mtriple amdgcn-amd-amdhsa -mcpu=gfx908 -O0 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX908 %s
5 ; RUN: llc -mtriple amdgcn-amd-amdhsa -mcpu=gfx90a -O0 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX90a %s
7 ; This test used to crash for gfx908 while allocating the tuple. Compared to the other subtargets,
8 ; gfx908 marks an extra VGPR reserved for AGPR to VGPR copy that puts more register pressure.
9 ; To minimize the register pressure, the VGPRs used for CSR SGPR spilling has been picked from the
10 ; higher available range there by allowing more VGPRs available in the lowest range for allocation.
12 define i32 @test_tuple(<16 x i64> %0) {
13 ; GFX900-LABEL: test_tuple:
15 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16 ; GFX900-NEXT: s_or_saveexec_b64 s[4:5], -1
17 ; GFX900-NEXT: buffer_store_dword v63, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
18 ; GFX900-NEXT: s_mov_b64 exec, s[4:5]
19 ; GFX900-NEXT: buffer_store_dword v40, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
20 ; GFX900-NEXT: buffer_store_dword v41, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
21 ; GFX900-NEXT: buffer_store_dword v42, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill
22 ; GFX900-NEXT: buffer_store_dword v43, off, s[0:3], s32 offset:48 ; 4-byte Folded Spill
23 ; GFX900-NEXT: buffer_store_dword v44, off, s[0:3], s32 offset:44 ; 4-byte Folded Spill
24 ; GFX900-NEXT: buffer_store_dword v45, off, s[0:3], s32 offset:40 ; 4-byte Folded Spill
25 ; GFX900-NEXT: buffer_store_dword v46, off, s[0:3], s32 offset:36 ; 4-byte Folded Spill
26 ; GFX900-NEXT: buffer_store_dword v47, off, s[0:3], s32 offset:32 ; 4-byte Folded Spill
27 ; GFX900-NEXT: buffer_store_dword v56, off, s[0:3], s32 offset:28 ; 4-byte Folded Spill
28 ; GFX900-NEXT: buffer_store_dword v57, off, s[0:3], s32 offset:24 ; 4-byte Folded Spill
29 ; GFX900-NEXT: buffer_store_dword v58, off, s[0:3], s32 offset:20 ; 4-byte Folded Spill
30 ; GFX900-NEXT: buffer_store_dword v59, off, s[0:3], s32 offset:16 ; 4-byte Folded Spill
31 ; GFX900-NEXT: buffer_store_dword v60, off, s[0:3], s32 offset:12 ; 4-byte Folded Spill
32 ; GFX900-NEXT: buffer_store_dword v61, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
33 ; GFX900-NEXT: buffer_store_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
34 ; GFX900-NEXT: v_writelane_b32 v63, s36, 0
35 ; GFX900-NEXT: v_writelane_b32 v63, s37, 1
36 ; GFX900-NEXT: v_writelane_b32 v63, s38, 2
37 ; GFX900-NEXT: v_writelane_b32 v63, s39, 3
38 ; GFX900-NEXT: v_writelane_b32 v63, s40, 4
39 ; GFX900-NEXT: v_writelane_b32 v63, s41, 5
40 ; GFX900-NEXT: v_writelane_b32 v63, s42, 6
41 ; GFX900-NEXT: v_writelane_b32 v63, s43, 7
42 ; GFX900-NEXT: v_writelane_b32 v63, s44, 8
43 ; GFX900-NEXT: v_writelane_b32 v63, s45, 9
44 ; GFX900-NEXT: v_writelane_b32 v63, s46, 10
45 ; GFX900-NEXT: v_writelane_b32 v63, s47, 11
46 ; GFX900-NEXT: v_writelane_b32 v63, s48, 12
47 ; GFX900-NEXT: v_writelane_b32 v63, s49, 13
48 ; GFX900-NEXT: v_writelane_b32 v63, s50, 14
49 ; GFX900-NEXT: v_writelane_b32 v63, s51, 15
50 ; GFX900-NEXT: v_writelane_b32 v63, s52, 16
51 ; GFX900-NEXT: v_writelane_b32 v63, s53, 17
52 ; GFX900-NEXT: v_writelane_b32 v63, s54, 18
53 ; GFX900-NEXT: v_writelane_b32 v63, s55, 19
54 ; GFX900-NEXT: v_writelane_b32 v63, s56, 20
55 ; GFX900-NEXT: v_writelane_b32 v63, s57, 21
56 ; GFX900-NEXT: v_writelane_b32 v63, s58, 22
57 ; GFX900-NEXT: v_writelane_b32 v63, s59, 23
58 ; GFX900-NEXT: v_writelane_b32 v63, s60, 24
59 ; GFX900-NEXT: v_writelane_b32 v63, s61, 25
60 ; GFX900-NEXT: v_writelane_b32 v63, s62, 26
61 ; GFX900-NEXT: v_writelane_b32 v63, s63, 27
62 ; GFX900-NEXT: v_writelane_b32 v63, s64, 28
63 ; GFX900-NEXT: v_writelane_b32 v63, s65, 29
64 ; GFX900-NEXT: v_writelane_b32 v63, s66, 30
65 ; GFX900-NEXT: v_writelane_b32 v63, s67, 31
66 ; GFX900-NEXT: v_mov_b32_e32 v33, v30
67 ; GFX900-NEXT: v_mov_b32_e32 v34, v29
68 ; GFX900-NEXT: v_mov_b32_e32 v35, v28
69 ; GFX900-NEXT: v_mov_b32_e32 v36, v27
70 ; GFX900-NEXT: v_mov_b32_e32 v37, v26
71 ; GFX900-NEXT: v_mov_b32_e32 v38, v25
72 ; GFX900-NEXT: v_mov_b32_e32 v39, v24
73 ; GFX900-NEXT: v_mov_b32_e32 v48, v23
74 ; GFX900-NEXT: v_mov_b32_e32 v49, v22
75 ; GFX900-NEXT: v_mov_b32_e32 v50, v21
76 ; GFX900-NEXT: v_mov_b32_e32 v51, v20
77 ; GFX900-NEXT: v_mov_b32_e32 v52, v19
78 ; GFX900-NEXT: v_mov_b32_e32 v53, v18
79 ; GFX900-NEXT: v_mov_b32_e32 v54, v17
80 ; GFX900-NEXT: v_mov_b32_e32 v55, v16
81 ; GFX900-NEXT: v_mov_b32_e32 v40, v15
82 ; GFX900-NEXT: v_mov_b32_e32 v41, v14
83 ; GFX900-NEXT: v_mov_b32_e32 v42, v13
84 ; GFX900-NEXT: v_mov_b32_e32 v43, v12
85 ; GFX900-NEXT: v_mov_b32_e32 v44, v11
86 ; GFX900-NEXT: v_mov_b32_e32 v45, v10
87 ; GFX900-NEXT: v_mov_b32_e32 v46, v9
88 ; GFX900-NEXT: v_mov_b32_e32 v47, v8
89 ; GFX900-NEXT: v_mov_b32_e32 v56, v7
90 ; GFX900-NEXT: v_mov_b32_e32 v57, v6
91 ; GFX900-NEXT: v_mov_b32_e32 v58, v5
92 ; GFX900-NEXT: v_mov_b32_e32 v59, v4
93 ; GFX900-NEXT: v_mov_b32_e32 v60, v3
94 ; GFX900-NEXT: v_mov_b32_e32 v61, v2
95 ; GFX900-NEXT: v_mov_b32_e32 v62, v1
96 ; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32
97 ; GFX900-NEXT: ; implicit-def: $sgpr4
98 ; GFX900-NEXT: ; implicit-def: $sgpr4
99 ; GFX900-NEXT: ; implicit-def: $sgpr4
100 ; GFX900-NEXT: ; implicit-def: $sgpr4
101 ; GFX900-NEXT: ; implicit-def: $sgpr4
102 ; GFX900-NEXT: ; implicit-def: $sgpr4
103 ; GFX900-NEXT: ; implicit-def: $sgpr4
104 ; GFX900-NEXT: ; implicit-def: $sgpr4
105 ; GFX900-NEXT: ; implicit-def: $sgpr4
106 ; GFX900-NEXT: ; implicit-def: $sgpr4
107 ; GFX900-NEXT: ; implicit-def: $sgpr4
108 ; GFX900-NEXT: ; implicit-def: $sgpr4
109 ; GFX900-NEXT: ; implicit-def: $sgpr4
110 ; GFX900-NEXT: ; implicit-def: $sgpr4
111 ; GFX900-NEXT: ; implicit-def: $sgpr4
112 ; GFX900-NEXT: ; implicit-def: $sgpr4
113 ; GFX900-NEXT: ; implicit-def: $sgpr4
114 ; GFX900-NEXT: ; implicit-def: $sgpr4
115 ; GFX900-NEXT: ; implicit-def: $sgpr4
116 ; GFX900-NEXT: ; implicit-def: $sgpr4
117 ; GFX900-NEXT: ; implicit-def: $sgpr4
118 ; GFX900-NEXT: ; implicit-def: $sgpr4
119 ; GFX900-NEXT: ; implicit-def: $sgpr4
120 ; GFX900-NEXT: ; implicit-def: $sgpr4
121 ; GFX900-NEXT: ; implicit-def: $sgpr4
122 ; GFX900-NEXT: ; implicit-def: $sgpr4
123 ; GFX900-NEXT: ; implicit-def: $sgpr4
124 ; GFX900-NEXT: ; implicit-def: $sgpr4
125 ; GFX900-NEXT: ; implicit-def: $sgpr4
126 ; GFX900-NEXT: ; implicit-def: $sgpr4
127 ; GFX900-NEXT: ; implicit-def: $sgpr4
128 ; GFX900-NEXT: ; implicit-def: $sgpr4
129 ; GFX900-NEXT: ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 killed $exec
130 ; GFX900-NEXT: v_mov_b32_e32 v1, v62
131 ; GFX900-NEXT: v_mov_b32_e32 v2, v61
132 ; GFX900-NEXT: v_mov_b32_e32 v3, v60
133 ; GFX900-NEXT: v_mov_b32_e32 v4, v59
134 ; GFX900-NEXT: v_mov_b32_e32 v5, v58
135 ; GFX900-NEXT: v_mov_b32_e32 v6, v57
136 ; GFX900-NEXT: v_mov_b32_e32 v7, v56
137 ; GFX900-NEXT: v_mov_b32_e32 v8, v47
138 ; GFX900-NEXT: v_mov_b32_e32 v9, v46
139 ; GFX900-NEXT: v_mov_b32_e32 v10, v45
140 ; GFX900-NEXT: v_mov_b32_e32 v11, v44
141 ; GFX900-NEXT: v_mov_b32_e32 v12, v43
142 ; GFX900-NEXT: v_mov_b32_e32 v13, v42
143 ; GFX900-NEXT: v_mov_b32_e32 v14, v41
144 ; GFX900-NEXT: v_mov_b32_e32 v15, v40
145 ; GFX900-NEXT: v_mov_b32_e32 v16, v55
146 ; GFX900-NEXT: v_mov_b32_e32 v17, v54
147 ; GFX900-NEXT: v_mov_b32_e32 v18, v53
148 ; GFX900-NEXT: v_mov_b32_e32 v19, v52
149 ; GFX900-NEXT: v_mov_b32_e32 v20, v51
150 ; GFX900-NEXT: v_mov_b32_e32 v21, v50
151 ; GFX900-NEXT: v_mov_b32_e32 v22, v49
152 ; GFX900-NEXT: v_mov_b32_e32 v23, v48
153 ; GFX900-NEXT: v_mov_b32_e32 v24, v39
154 ; GFX900-NEXT: v_mov_b32_e32 v25, v38
155 ; GFX900-NEXT: v_mov_b32_e32 v26, v37
156 ; GFX900-NEXT: v_mov_b32_e32 v27, v36
157 ; GFX900-NEXT: v_mov_b32_e32 v28, v35
158 ; GFX900-NEXT: v_mov_b32_e32 v29, v34
159 ; GFX900-NEXT: v_mov_b32_e32 v30, v33
160 ; GFX900-NEXT: ; kill: def $vgpr31 killed $vgpr32 killed $exec
161 ; GFX900-NEXT: ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
162 ; GFX900-NEXT: v_mov_b32_e32 v0, 0
163 ; GFX900-NEXT: v_readlane_b32 s67, v63, 31
164 ; GFX900-NEXT: v_readlane_b32 s66, v63, 30
165 ; GFX900-NEXT: v_readlane_b32 s65, v63, 29
166 ; GFX900-NEXT: v_readlane_b32 s64, v63, 28
167 ; GFX900-NEXT: v_readlane_b32 s63, v63, 27
168 ; GFX900-NEXT: v_readlane_b32 s62, v63, 26
169 ; GFX900-NEXT: v_readlane_b32 s61, v63, 25
170 ; GFX900-NEXT: v_readlane_b32 s60, v63, 24
171 ; GFX900-NEXT: v_readlane_b32 s59, v63, 23
172 ; GFX900-NEXT: v_readlane_b32 s58, v63, 22
173 ; GFX900-NEXT: v_readlane_b32 s57, v63, 21
174 ; GFX900-NEXT: v_readlane_b32 s56, v63, 20
175 ; GFX900-NEXT: v_readlane_b32 s55, v63, 19
176 ; GFX900-NEXT: v_readlane_b32 s54, v63, 18
177 ; GFX900-NEXT: v_readlane_b32 s53, v63, 17
178 ; GFX900-NEXT: v_readlane_b32 s52, v63, 16
179 ; GFX900-NEXT: v_readlane_b32 s51, v63, 15
180 ; GFX900-NEXT: v_readlane_b32 s50, v63, 14
181 ; GFX900-NEXT: v_readlane_b32 s49, v63, 13
182 ; GFX900-NEXT: v_readlane_b32 s48, v63, 12
183 ; GFX900-NEXT: v_readlane_b32 s47, v63, 11
184 ; GFX900-NEXT: v_readlane_b32 s46, v63, 10
185 ; GFX900-NEXT: v_readlane_b32 s45, v63, 9
186 ; GFX900-NEXT: v_readlane_b32 s44, v63, 8
187 ; GFX900-NEXT: v_readlane_b32 s43, v63, 7
188 ; GFX900-NEXT: v_readlane_b32 s42, v63, 6
189 ; GFX900-NEXT: v_readlane_b32 s41, v63, 5
190 ; GFX900-NEXT: v_readlane_b32 s40, v63, 4
191 ; GFX900-NEXT: v_readlane_b32 s39, v63, 3
192 ; GFX900-NEXT: v_readlane_b32 s38, v63, 2
193 ; GFX900-NEXT: v_readlane_b32 s37, v63, 1
194 ; GFX900-NEXT: v_readlane_b32 s36, v63, 0
195 ; GFX900-NEXT: buffer_load_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
196 ; GFX900-NEXT: buffer_load_dword v61, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
197 ; GFX900-NEXT: buffer_load_dword v60, off, s[0:3], s32 offset:12 ; 4-byte Folded Reload
198 ; GFX900-NEXT: buffer_load_dword v59, off, s[0:3], s32 offset:16 ; 4-byte Folded Reload
199 ; GFX900-NEXT: buffer_load_dword v58, off, s[0:3], s32 offset:20 ; 4-byte Folded Reload
200 ; GFX900-NEXT: buffer_load_dword v57, off, s[0:3], s32 offset:24 ; 4-byte Folded Reload
201 ; GFX900-NEXT: buffer_load_dword v56, off, s[0:3], s32 offset:28 ; 4-byte Folded Reload
202 ; GFX900-NEXT: buffer_load_dword v47, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload
203 ; GFX900-NEXT: buffer_load_dword v46, off, s[0:3], s32 offset:36 ; 4-byte Folded Reload
204 ; GFX900-NEXT: buffer_load_dword v45, off, s[0:3], s32 offset:40 ; 4-byte Folded Reload
205 ; GFX900-NEXT: buffer_load_dword v44, off, s[0:3], s32 offset:44 ; 4-byte Folded Reload
206 ; GFX900-NEXT: buffer_load_dword v43, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
207 ; GFX900-NEXT: buffer_load_dword v42, off, s[0:3], s32 offset:52 ; 4-byte Folded Reload
208 ; GFX900-NEXT: buffer_load_dword v41, off, s[0:3], s32 offset:56 ; 4-byte Folded Reload
209 ; GFX900-NEXT: buffer_load_dword v40, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
210 ; GFX900-NEXT: s_or_saveexec_b64 s[4:5], -1
211 ; GFX900-NEXT: buffer_load_dword v63, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
212 ; GFX900-NEXT: s_mov_b64 exec, s[4:5]
213 ; GFX900-NEXT: s_waitcnt vmcnt(0)
214 ; GFX900-NEXT: s_setpc_b64 s[30:31]
216 ; GFX906-LABEL: test_tuple:
218 ; GFX906-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
219 ; GFX906-NEXT: s_or_saveexec_b64 s[4:5], -1
220 ; GFX906-NEXT: buffer_store_dword v63, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
221 ; GFX906-NEXT: s_mov_b64 exec, s[4:5]
222 ; GFX906-NEXT: buffer_store_dword v40, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill
223 ; GFX906-NEXT: buffer_store_dword v41, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
224 ; GFX906-NEXT: buffer_store_dword v42, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill
225 ; GFX906-NEXT: buffer_store_dword v43, off, s[0:3], s32 offset:48 ; 4-byte Folded Spill
226 ; GFX906-NEXT: buffer_store_dword v44, off, s[0:3], s32 offset:44 ; 4-byte Folded Spill
227 ; GFX906-NEXT: buffer_store_dword v45, off, s[0:3], s32 offset:40 ; 4-byte Folded Spill
228 ; GFX906-NEXT: buffer_store_dword v46, off, s[0:3], s32 offset:36 ; 4-byte Folded Spill
229 ; GFX906-NEXT: buffer_store_dword v47, off, s[0:3], s32 offset:32 ; 4-byte Folded Spill
230 ; GFX906-NEXT: buffer_store_dword v56, off, s[0:3], s32 offset:28 ; 4-byte Folded Spill
231 ; GFX906-NEXT: buffer_store_dword v57, off, s[0:3], s32 offset:24 ; 4-byte Folded Spill
232 ; GFX906-NEXT: buffer_store_dword v58, off, s[0:3], s32 offset:20 ; 4-byte Folded Spill
233 ; GFX906-NEXT: buffer_store_dword v59, off, s[0:3], s32 offset:16 ; 4-byte Folded Spill
234 ; GFX906-NEXT: buffer_store_dword v60, off, s[0:3], s32 offset:12 ; 4-byte Folded Spill
235 ; GFX906-NEXT: buffer_store_dword v61, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
236 ; GFX906-NEXT: buffer_store_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
237 ; GFX906-NEXT: v_writelane_b32 v63, s36, 0
238 ; GFX906-NEXT: v_writelane_b32 v63, s37, 1
239 ; GFX906-NEXT: v_writelane_b32 v63, s38, 2
240 ; GFX906-NEXT: v_writelane_b32 v63, s39, 3
241 ; GFX906-NEXT: v_writelane_b32 v63, s40, 4
242 ; GFX906-NEXT: v_writelane_b32 v63, s41, 5
243 ; GFX906-NEXT: v_writelane_b32 v63, s42, 6
244 ; GFX906-NEXT: v_writelane_b32 v63, s43, 7
245 ; GFX906-NEXT: v_writelane_b32 v63, s44, 8
246 ; GFX906-NEXT: v_writelane_b32 v63, s45, 9
247 ; GFX906-NEXT: v_writelane_b32 v63, s46, 10
248 ; GFX906-NEXT: v_writelane_b32 v63, s47, 11
249 ; GFX906-NEXT: v_writelane_b32 v63, s48, 12
250 ; GFX906-NEXT: v_writelane_b32 v63, s49, 13
251 ; GFX906-NEXT: v_writelane_b32 v63, s50, 14
252 ; GFX906-NEXT: v_writelane_b32 v63, s51, 15
253 ; GFX906-NEXT: v_writelane_b32 v63, s52, 16
254 ; GFX906-NEXT: v_writelane_b32 v63, s53, 17
255 ; GFX906-NEXT: v_writelane_b32 v63, s54, 18
256 ; GFX906-NEXT: v_writelane_b32 v63, s55, 19
257 ; GFX906-NEXT: v_writelane_b32 v63, s56, 20
258 ; GFX906-NEXT: v_writelane_b32 v63, s57, 21
259 ; GFX906-NEXT: v_writelane_b32 v63, s58, 22
260 ; GFX906-NEXT: v_writelane_b32 v63, s59, 23
261 ; GFX906-NEXT: v_writelane_b32 v63, s60, 24
262 ; GFX906-NEXT: v_writelane_b32 v63, s61, 25
263 ; GFX906-NEXT: v_writelane_b32 v63, s62, 26
264 ; GFX906-NEXT: v_writelane_b32 v63, s63, 27
265 ; GFX906-NEXT: v_writelane_b32 v63, s64, 28
266 ; GFX906-NEXT: v_writelane_b32 v63, s65, 29
267 ; GFX906-NEXT: v_writelane_b32 v63, s66, 30
268 ; GFX906-NEXT: v_writelane_b32 v63, s67, 31
269 ; GFX906-NEXT: v_mov_b32_e32 v33, v30
270 ; GFX906-NEXT: v_mov_b32_e32 v34, v29
271 ; GFX906-NEXT: v_mov_b32_e32 v35, v28
272 ; GFX906-NEXT: v_mov_b32_e32 v36, v27
273 ; GFX906-NEXT: v_mov_b32_e32 v37, v26
274 ; GFX906-NEXT: v_mov_b32_e32 v38, v25
275 ; GFX906-NEXT: v_mov_b32_e32 v39, v24
276 ; GFX906-NEXT: v_mov_b32_e32 v48, v23
277 ; GFX906-NEXT: v_mov_b32_e32 v49, v22
278 ; GFX906-NEXT: v_mov_b32_e32 v50, v21
279 ; GFX906-NEXT: v_mov_b32_e32 v51, v20
280 ; GFX906-NEXT: v_mov_b32_e32 v52, v19
281 ; GFX906-NEXT: v_mov_b32_e32 v53, v18
282 ; GFX906-NEXT: v_mov_b32_e32 v54, v17
283 ; GFX906-NEXT: v_mov_b32_e32 v55, v16
284 ; GFX906-NEXT: v_mov_b32_e32 v40, v15
285 ; GFX906-NEXT: v_mov_b32_e32 v41, v14
286 ; GFX906-NEXT: v_mov_b32_e32 v42, v13
287 ; GFX906-NEXT: v_mov_b32_e32 v43, v12
288 ; GFX906-NEXT: v_mov_b32_e32 v44, v11
289 ; GFX906-NEXT: v_mov_b32_e32 v45, v10
290 ; GFX906-NEXT: v_mov_b32_e32 v46, v9
291 ; GFX906-NEXT: v_mov_b32_e32 v47, v8
292 ; GFX906-NEXT: v_mov_b32_e32 v56, v7
293 ; GFX906-NEXT: v_mov_b32_e32 v57, v6
294 ; GFX906-NEXT: v_mov_b32_e32 v58, v5
295 ; GFX906-NEXT: v_mov_b32_e32 v59, v4
296 ; GFX906-NEXT: v_mov_b32_e32 v60, v3
297 ; GFX906-NEXT: v_mov_b32_e32 v61, v2
298 ; GFX906-NEXT: v_mov_b32_e32 v62, v1
299 ; GFX906-NEXT: buffer_load_dword v32, off, s[0:3], s32
300 ; GFX906-NEXT: ; implicit-def: $sgpr4
301 ; GFX906-NEXT: ; implicit-def: $sgpr4
302 ; GFX906-NEXT: ; implicit-def: $sgpr4
303 ; GFX906-NEXT: ; implicit-def: $sgpr4
304 ; GFX906-NEXT: ; implicit-def: $sgpr4
305 ; GFX906-NEXT: ; implicit-def: $sgpr4
306 ; GFX906-NEXT: ; implicit-def: $sgpr4
307 ; GFX906-NEXT: ; implicit-def: $sgpr4
308 ; GFX906-NEXT: ; implicit-def: $sgpr4
309 ; GFX906-NEXT: ; implicit-def: $sgpr4
310 ; GFX906-NEXT: ; implicit-def: $sgpr4
311 ; GFX906-NEXT: ; implicit-def: $sgpr4
312 ; GFX906-NEXT: ; implicit-def: $sgpr4
313 ; GFX906-NEXT: ; implicit-def: $sgpr4
314 ; GFX906-NEXT: ; implicit-def: $sgpr4
315 ; GFX906-NEXT: ; implicit-def: $sgpr4
316 ; GFX906-NEXT: ; implicit-def: $sgpr4
317 ; GFX906-NEXT: ; implicit-def: $sgpr4
318 ; GFX906-NEXT: ; implicit-def: $sgpr4
319 ; GFX906-NEXT: ; implicit-def: $sgpr4
320 ; GFX906-NEXT: ; implicit-def: $sgpr4
321 ; GFX906-NEXT: ; implicit-def: $sgpr4
322 ; GFX906-NEXT: ; implicit-def: $sgpr4
323 ; GFX906-NEXT: ; implicit-def: $sgpr4
324 ; GFX906-NEXT: ; implicit-def: $sgpr4
325 ; GFX906-NEXT: ; implicit-def: $sgpr4
326 ; GFX906-NEXT: ; implicit-def: $sgpr4
327 ; GFX906-NEXT: ; implicit-def: $sgpr4
328 ; GFX906-NEXT: ; implicit-def: $sgpr4
329 ; GFX906-NEXT: ; implicit-def: $sgpr4
330 ; GFX906-NEXT: ; implicit-def: $sgpr4
331 ; GFX906-NEXT: ; implicit-def: $sgpr4
332 ; GFX906-NEXT: ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 killed $exec
333 ; GFX906-NEXT: v_mov_b32_e32 v1, v62
334 ; GFX906-NEXT: v_mov_b32_e32 v2, v61
335 ; GFX906-NEXT: v_mov_b32_e32 v3, v60
336 ; GFX906-NEXT: v_mov_b32_e32 v4, v59
337 ; GFX906-NEXT: v_mov_b32_e32 v5, v58
338 ; GFX906-NEXT: v_mov_b32_e32 v6, v57
339 ; GFX906-NEXT: v_mov_b32_e32 v7, v56
340 ; GFX906-NEXT: v_mov_b32_e32 v8, v47
341 ; GFX906-NEXT: v_mov_b32_e32 v9, v46
342 ; GFX906-NEXT: v_mov_b32_e32 v10, v45
343 ; GFX906-NEXT: v_mov_b32_e32 v11, v44
344 ; GFX906-NEXT: v_mov_b32_e32 v12, v43
345 ; GFX906-NEXT: v_mov_b32_e32 v13, v42
346 ; GFX906-NEXT: v_mov_b32_e32 v14, v41
347 ; GFX906-NEXT: v_mov_b32_e32 v15, v40
348 ; GFX906-NEXT: v_mov_b32_e32 v16, v55
349 ; GFX906-NEXT: v_mov_b32_e32 v17, v54
350 ; GFX906-NEXT: v_mov_b32_e32 v18, v53
351 ; GFX906-NEXT: v_mov_b32_e32 v19, v52
352 ; GFX906-NEXT: v_mov_b32_e32 v20, v51
353 ; GFX906-NEXT: v_mov_b32_e32 v21, v50
354 ; GFX906-NEXT: v_mov_b32_e32 v22, v49
355 ; GFX906-NEXT: v_mov_b32_e32 v23, v48
356 ; GFX906-NEXT: v_mov_b32_e32 v24, v39
357 ; GFX906-NEXT: v_mov_b32_e32 v25, v38
358 ; GFX906-NEXT: v_mov_b32_e32 v26, v37
359 ; GFX906-NEXT: v_mov_b32_e32 v27, v36
360 ; GFX906-NEXT: v_mov_b32_e32 v28, v35
361 ; GFX906-NEXT: v_mov_b32_e32 v29, v34
362 ; GFX906-NEXT: v_mov_b32_e32 v30, v33
363 ; GFX906-NEXT: ; kill: def $vgpr31 killed $vgpr32 killed $exec
364 ; GFX906-NEXT: ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
365 ; GFX906-NEXT: v_mov_b32_e32 v0, 0
366 ; GFX906-NEXT: v_readlane_b32 s67, v63, 31
367 ; GFX906-NEXT: v_readlane_b32 s66, v63, 30
368 ; GFX906-NEXT: v_readlane_b32 s65, v63, 29
369 ; GFX906-NEXT: v_readlane_b32 s64, v63, 28
370 ; GFX906-NEXT: v_readlane_b32 s63, v63, 27
371 ; GFX906-NEXT: v_readlane_b32 s62, v63, 26
372 ; GFX906-NEXT: v_readlane_b32 s61, v63, 25
373 ; GFX906-NEXT: v_readlane_b32 s60, v63, 24
374 ; GFX906-NEXT: v_readlane_b32 s59, v63, 23
375 ; GFX906-NEXT: v_readlane_b32 s58, v63, 22
376 ; GFX906-NEXT: v_readlane_b32 s57, v63, 21
377 ; GFX906-NEXT: v_readlane_b32 s56, v63, 20
378 ; GFX906-NEXT: v_readlane_b32 s55, v63, 19
379 ; GFX906-NEXT: v_readlane_b32 s54, v63, 18
380 ; GFX906-NEXT: v_readlane_b32 s53, v63, 17
381 ; GFX906-NEXT: v_readlane_b32 s52, v63, 16
382 ; GFX906-NEXT: v_readlane_b32 s51, v63, 15
383 ; GFX906-NEXT: v_readlane_b32 s50, v63, 14
384 ; GFX906-NEXT: v_readlane_b32 s49, v63, 13
385 ; GFX906-NEXT: v_readlane_b32 s48, v63, 12
386 ; GFX906-NEXT: v_readlane_b32 s47, v63, 11
387 ; GFX906-NEXT: v_readlane_b32 s46, v63, 10
388 ; GFX906-NEXT: v_readlane_b32 s45, v63, 9
389 ; GFX906-NEXT: v_readlane_b32 s44, v63, 8
390 ; GFX906-NEXT: v_readlane_b32 s43, v63, 7
391 ; GFX906-NEXT: v_readlane_b32 s42, v63, 6
392 ; GFX906-NEXT: v_readlane_b32 s41, v63, 5
393 ; GFX906-NEXT: v_readlane_b32 s40, v63, 4
394 ; GFX906-NEXT: v_readlane_b32 s39, v63, 3
395 ; GFX906-NEXT: v_readlane_b32 s38, v63, 2
396 ; GFX906-NEXT: v_readlane_b32 s37, v63, 1
397 ; GFX906-NEXT: v_readlane_b32 s36, v63, 0
398 ; GFX906-NEXT: buffer_load_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
399 ; GFX906-NEXT: buffer_load_dword v61, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload
400 ; GFX906-NEXT: buffer_load_dword v60, off, s[0:3], s32 offset:12 ; 4-byte Folded Reload
401 ; GFX906-NEXT: buffer_load_dword v59, off, s[0:3], s32 offset:16 ; 4-byte Folded Reload
402 ; GFX906-NEXT: buffer_load_dword v58, off, s[0:3], s32 offset:20 ; 4-byte Folded Reload
403 ; GFX906-NEXT: buffer_load_dword v57, off, s[0:3], s32 offset:24 ; 4-byte Folded Reload
404 ; GFX906-NEXT: buffer_load_dword v56, off, s[0:3], s32 offset:28 ; 4-byte Folded Reload
405 ; GFX906-NEXT: buffer_load_dword v47, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload
406 ; GFX906-NEXT: buffer_load_dword v46, off, s[0:3], s32 offset:36 ; 4-byte Folded Reload
407 ; GFX906-NEXT: buffer_load_dword v45, off, s[0:3], s32 offset:40 ; 4-byte Folded Reload
408 ; GFX906-NEXT: buffer_load_dword v44, off, s[0:3], s32 offset:44 ; 4-byte Folded Reload
409 ; GFX906-NEXT: buffer_load_dword v43, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload
410 ; GFX906-NEXT: buffer_load_dword v42, off, s[0:3], s32 offset:52 ; 4-byte Folded Reload
411 ; GFX906-NEXT: buffer_load_dword v41, off, s[0:3], s32 offset:56 ; 4-byte Folded Reload
412 ; GFX906-NEXT: buffer_load_dword v40, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload
413 ; GFX906-NEXT: s_or_saveexec_b64 s[4:5], -1
414 ; GFX906-NEXT: buffer_load_dword v63, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload
415 ; GFX906-NEXT: s_mov_b64 exec, s[4:5]
416 ; GFX906-NEXT: s_waitcnt vmcnt(0)
417 ; GFX906-NEXT: s_setpc_b64 s[30:31]
419 ; GFX908-LABEL: test_tuple:
421 ; GFX908-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
422 ; GFX908-NEXT: s_or_saveexec_b64 s[4:5], -1
423 ; GFX908-NEXT: buffer_store_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
424 ; GFX908-NEXT: s_mov_b64 exec, s[4:5]
425 ; GFX908-NEXT: v_accvgpr_write_b32 a0, v40 ; Reload Reuse
426 ; GFX908-NEXT: v_accvgpr_write_b32 a1, v41 ; Reload Reuse
427 ; GFX908-NEXT: v_accvgpr_write_b32 a2, v42 ; Reload Reuse
428 ; GFX908-NEXT: v_accvgpr_write_b32 a3, v43 ; Reload Reuse
429 ; GFX908-NEXT: v_accvgpr_write_b32 a4, v44 ; Reload Reuse
430 ; GFX908-NEXT: v_accvgpr_write_b32 a5, v45 ; Reload Reuse
431 ; GFX908-NEXT: v_accvgpr_write_b32 a6, v46 ; Reload Reuse
432 ; GFX908-NEXT: v_accvgpr_write_b32 a7, v47 ; Reload Reuse
433 ; GFX908-NEXT: v_accvgpr_write_b32 a8, v56 ; Reload Reuse
434 ; GFX908-NEXT: v_accvgpr_write_b32 a9, v57 ; Reload Reuse
435 ; GFX908-NEXT: v_accvgpr_write_b32 a10, v58 ; Reload Reuse
436 ; GFX908-NEXT: v_accvgpr_write_b32 a11, v59 ; Reload Reuse
437 ; GFX908-NEXT: v_accvgpr_write_b32 a12, v60 ; Reload Reuse
438 ; GFX908-NEXT: v_accvgpr_write_b32 a13, v61 ; Reload Reuse
439 ; GFX908-NEXT: v_writelane_b32 v62, s36, 0
440 ; GFX908-NEXT: v_writelane_b32 v62, s37, 1
441 ; GFX908-NEXT: v_writelane_b32 v62, s38, 2
442 ; GFX908-NEXT: v_writelane_b32 v62, s39, 3
443 ; GFX908-NEXT: v_writelane_b32 v62, s40, 4
444 ; GFX908-NEXT: v_writelane_b32 v62, s41, 5
445 ; GFX908-NEXT: v_writelane_b32 v62, s42, 6
446 ; GFX908-NEXT: v_writelane_b32 v62, s43, 7
447 ; GFX908-NEXT: v_writelane_b32 v62, s44, 8
448 ; GFX908-NEXT: v_writelane_b32 v62, s45, 9
449 ; GFX908-NEXT: v_writelane_b32 v62, s46, 10
450 ; GFX908-NEXT: v_writelane_b32 v62, s47, 11
451 ; GFX908-NEXT: v_writelane_b32 v62, s48, 12
452 ; GFX908-NEXT: v_writelane_b32 v62, s49, 13
453 ; GFX908-NEXT: v_writelane_b32 v62, s50, 14
454 ; GFX908-NEXT: v_writelane_b32 v62, s51, 15
455 ; GFX908-NEXT: v_writelane_b32 v62, s52, 16
456 ; GFX908-NEXT: v_writelane_b32 v62, s53, 17
457 ; GFX908-NEXT: v_writelane_b32 v62, s54, 18
458 ; GFX908-NEXT: v_writelane_b32 v62, s55, 19
459 ; GFX908-NEXT: v_writelane_b32 v62, s56, 20
460 ; GFX908-NEXT: v_writelane_b32 v62, s57, 21
461 ; GFX908-NEXT: v_writelane_b32 v62, s58, 22
462 ; GFX908-NEXT: v_writelane_b32 v62, s59, 23
463 ; GFX908-NEXT: v_writelane_b32 v62, s60, 24
464 ; GFX908-NEXT: v_writelane_b32 v62, s61, 25
465 ; GFX908-NEXT: v_writelane_b32 v62, s62, 26
466 ; GFX908-NEXT: v_writelane_b32 v62, s63, 27
467 ; GFX908-NEXT: v_writelane_b32 v62, s64, 28
468 ; GFX908-NEXT: v_writelane_b32 v62, s65, 29
469 ; GFX908-NEXT: v_writelane_b32 v62, s66, 30
470 ; GFX908-NEXT: v_writelane_b32 v62, s67, 31
471 ; GFX908-NEXT: v_mov_b32_e32 v33, v30
472 ; GFX908-NEXT: v_mov_b32_e32 v34, v29
473 ; GFX908-NEXT: v_mov_b32_e32 v35, v28
474 ; GFX908-NEXT: v_mov_b32_e32 v36, v27
475 ; GFX908-NEXT: v_mov_b32_e32 v37, v26
476 ; GFX908-NEXT: v_mov_b32_e32 v38, v25
477 ; GFX908-NEXT: v_mov_b32_e32 v39, v24
478 ; GFX908-NEXT: v_mov_b32_e32 v48, v23
479 ; GFX908-NEXT: v_mov_b32_e32 v49, v22
480 ; GFX908-NEXT: v_mov_b32_e32 v50, v21
481 ; GFX908-NEXT: v_mov_b32_e32 v51, v20
482 ; GFX908-NEXT: v_mov_b32_e32 v52, v19
483 ; GFX908-NEXT: v_mov_b32_e32 v53, v18
484 ; GFX908-NEXT: v_mov_b32_e32 v54, v17
485 ; GFX908-NEXT: v_mov_b32_e32 v55, v16
486 ; GFX908-NEXT: v_mov_b32_e32 v40, v15
487 ; GFX908-NEXT: v_mov_b32_e32 v41, v14
488 ; GFX908-NEXT: v_mov_b32_e32 v42, v13
489 ; GFX908-NEXT: v_mov_b32_e32 v43, v12
490 ; GFX908-NEXT: v_mov_b32_e32 v44, v11
491 ; GFX908-NEXT: v_mov_b32_e32 v45, v10
492 ; GFX908-NEXT: v_mov_b32_e32 v46, v9
493 ; GFX908-NEXT: v_mov_b32_e32 v47, v8
494 ; GFX908-NEXT: v_mov_b32_e32 v56, v7
495 ; GFX908-NEXT: v_mov_b32_e32 v57, v6
496 ; GFX908-NEXT: v_mov_b32_e32 v58, v5
497 ; GFX908-NEXT: v_mov_b32_e32 v59, v4
498 ; GFX908-NEXT: v_mov_b32_e32 v60, v3
499 ; GFX908-NEXT: v_mov_b32_e32 v61, v2
500 ; GFX908-NEXT: v_mov_b32_e32 v32, v1
501 ; GFX908-NEXT: buffer_load_dword v1, off, s[0:3], s32
502 ; GFX908-NEXT: s_waitcnt vmcnt(0)
503 ; GFX908-NEXT: v_accvgpr_write_b32 a14, v1 ; Reload Reuse
504 ; GFX908-NEXT: ; implicit-def: $sgpr4
505 ; GFX908-NEXT: ; implicit-def: $sgpr4
506 ; GFX908-NEXT: ; implicit-def: $sgpr4
507 ; GFX908-NEXT: ; implicit-def: $sgpr4
508 ; GFX908-NEXT: ; implicit-def: $sgpr4
509 ; GFX908-NEXT: ; implicit-def: $sgpr4
510 ; GFX908-NEXT: ; implicit-def: $sgpr4
511 ; GFX908-NEXT: ; implicit-def: $sgpr4
512 ; GFX908-NEXT: ; implicit-def: $sgpr4
513 ; GFX908-NEXT: ; implicit-def: $sgpr4
514 ; GFX908-NEXT: ; implicit-def: $sgpr4
515 ; GFX908-NEXT: ; implicit-def: $sgpr4
516 ; GFX908-NEXT: ; implicit-def: $sgpr4
517 ; GFX908-NEXT: ; implicit-def: $sgpr4
518 ; GFX908-NEXT: ; implicit-def: $sgpr4
519 ; GFX908-NEXT: ; implicit-def: $sgpr4
520 ; GFX908-NEXT: ; implicit-def: $sgpr4
521 ; GFX908-NEXT: ; implicit-def: $sgpr4
522 ; GFX908-NEXT: ; implicit-def: $sgpr4
523 ; GFX908-NEXT: ; implicit-def: $sgpr4
524 ; GFX908-NEXT: ; implicit-def: $sgpr4
525 ; GFX908-NEXT: ; implicit-def: $sgpr4
526 ; GFX908-NEXT: ; implicit-def: $sgpr4
527 ; GFX908-NEXT: ; implicit-def: $sgpr4
528 ; GFX908-NEXT: ; implicit-def: $sgpr4
529 ; GFX908-NEXT: ; implicit-def: $sgpr4
530 ; GFX908-NEXT: ; implicit-def: $sgpr4
531 ; GFX908-NEXT: ; implicit-def: $sgpr4
532 ; GFX908-NEXT: ; implicit-def: $sgpr4
533 ; GFX908-NEXT: ; implicit-def: $sgpr4
534 ; GFX908-NEXT: ; implicit-def: $sgpr4
535 ; GFX908-NEXT: ; implicit-def: $sgpr4
536 ; GFX908-NEXT: ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 killed $exec
537 ; GFX908-NEXT: v_mov_b32_e32 v1, v32
538 ; GFX908-NEXT: s_nop 1
539 ; GFX908-NEXT: v_accvgpr_read_b32 v32, a14 ; Reload Reuse
540 ; GFX908-NEXT: v_mov_b32_e32 v2, v61
541 ; GFX908-NEXT: v_mov_b32_e32 v3, v60
542 ; GFX908-NEXT: v_mov_b32_e32 v4, v59
543 ; GFX908-NEXT: v_mov_b32_e32 v5, v58
544 ; GFX908-NEXT: v_mov_b32_e32 v6, v57
545 ; GFX908-NEXT: v_mov_b32_e32 v7, v56
546 ; GFX908-NEXT: v_mov_b32_e32 v8, v47
547 ; GFX908-NEXT: v_mov_b32_e32 v9, v46
548 ; GFX908-NEXT: v_mov_b32_e32 v10, v45
549 ; GFX908-NEXT: v_mov_b32_e32 v11, v44
550 ; GFX908-NEXT: v_mov_b32_e32 v12, v43
551 ; GFX908-NEXT: v_mov_b32_e32 v13, v42
552 ; GFX908-NEXT: v_mov_b32_e32 v14, v41
553 ; GFX908-NEXT: v_mov_b32_e32 v15, v40
554 ; GFX908-NEXT: v_mov_b32_e32 v16, v55
555 ; GFX908-NEXT: v_mov_b32_e32 v17, v54
556 ; GFX908-NEXT: v_mov_b32_e32 v18, v53
557 ; GFX908-NEXT: v_mov_b32_e32 v19, v52
558 ; GFX908-NEXT: v_mov_b32_e32 v20, v51
559 ; GFX908-NEXT: v_mov_b32_e32 v21, v50
560 ; GFX908-NEXT: v_mov_b32_e32 v22, v49
561 ; GFX908-NEXT: v_mov_b32_e32 v23, v48
562 ; GFX908-NEXT: v_mov_b32_e32 v24, v39
563 ; GFX908-NEXT: v_mov_b32_e32 v25, v38
564 ; GFX908-NEXT: v_mov_b32_e32 v26, v37
565 ; GFX908-NEXT: v_mov_b32_e32 v27, v36
566 ; GFX908-NEXT: v_mov_b32_e32 v28, v35
567 ; GFX908-NEXT: v_mov_b32_e32 v29, v34
568 ; GFX908-NEXT: v_mov_b32_e32 v30, v33
569 ; GFX908-NEXT: ; kill: def $vgpr31 killed $vgpr32 killed $exec
570 ; GFX908-NEXT: ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
571 ; GFX908-NEXT: v_mov_b32_e32 v0, 0
572 ; GFX908-NEXT: v_readlane_b32 s67, v62, 31
573 ; GFX908-NEXT: v_readlane_b32 s66, v62, 30
574 ; GFX908-NEXT: v_readlane_b32 s65, v62, 29
575 ; GFX908-NEXT: v_readlane_b32 s64, v62, 28
576 ; GFX908-NEXT: v_readlane_b32 s63, v62, 27
577 ; GFX908-NEXT: v_readlane_b32 s62, v62, 26
578 ; GFX908-NEXT: v_readlane_b32 s61, v62, 25
579 ; GFX908-NEXT: v_readlane_b32 s60, v62, 24
580 ; GFX908-NEXT: v_readlane_b32 s59, v62, 23
581 ; GFX908-NEXT: v_readlane_b32 s58, v62, 22
582 ; GFX908-NEXT: v_readlane_b32 s57, v62, 21
583 ; GFX908-NEXT: v_readlane_b32 s56, v62, 20
584 ; GFX908-NEXT: v_readlane_b32 s55, v62, 19
585 ; GFX908-NEXT: v_readlane_b32 s54, v62, 18
586 ; GFX908-NEXT: v_readlane_b32 s53, v62, 17
587 ; GFX908-NEXT: v_readlane_b32 s52, v62, 16
588 ; GFX908-NEXT: v_readlane_b32 s51, v62, 15
589 ; GFX908-NEXT: v_readlane_b32 s50, v62, 14
590 ; GFX908-NEXT: v_readlane_b32 s49, v62, 13
591 ; GFX908-NEXT: v_readlane_b32 s48, v62, 12
592 ; GFX908-NEXT: v_readlane_b32 s47, v62, 11
593 ; GFX908-NEXT: v_readlane_b32 s46, v62, 10
594 ; GFX908-NEXT: v_readlane_b32 s45, v62, 9
595 ; GFX908-NEXT: v_readlane_b32 s44, v62, 8
596 ; GFX908-NEXT: v_readlane_b32 s43, v62, 7
597 ; GFX908-NEXT: v_readlane_b32 s42, v62, 6
598 ; GFX908-NEXT: v_readlane_b32 s41, v62, 5
599 ; GFX908-NEXT: v_readlane_b32 s40, v62, 4
600 ; GFX908-NEXT: v_readlane_b32 s39, v62, 3
601 ; GFX908-NEXT: v_readlane_b32 s38, v62, 2
602 ; GFX908-NEXT: v_readlane_b32 s37, v62, 1
603 ; GFX908-NEXT: v_readlane_b32 s36, v62, 0
604 ; GFX908-NEXT: v_accvgpr_read_b32 v61, a13 ; Reload Reuse
605 ; GFX908-NEXT: v_accvgpr_read_b32 v60, a12 ; Reload Reuse
606 ; GFX908-NEXT: v_accvgpr_read_b32 v59, a11 ; Reload Reuse
607 ; GFX908-NEXT: v_accvgpr_read_b32 v58, a10 ; Reload Reuse
608 ; GFX908-NEXT: v_accvgpr_read_b32 v57, a9 ; Reload Reuse
609 ; GFX908-NEXT: v_accvgpr_read_b32 v56, a8 ; Reload Reuse
610 ; GFX908-NEXT: v_accvgpr_read_b32 v47, a7 ; Reload Reuse
611 ; GFX908-NEXT: v_accvgpr_read_b32 v46, a6 ; Reload Reuse
612 ; GFX908-NEXT: v_accvgpr_read_b32 v45, a5 ; Reload Reuse
613 ; GFX908-NEXT: v_accvgpr_read_b32 v44, a4 ; Reload Reuse
614 ; GFX908-NEXT: v_accvgpr_read_b32 v43, a3 ; Reload Reuse
615 ; GFX908-NEXT: v_accvgpr_read_b32 v42, a2 ; Reload Reuse
616 ; GFX908-NEXT: v_accvgpr_read_b32 v41, a1 ; Reload Reuse
617 ; GFX908-NEXT: v_accvgpr_read_b32 v40, a0 ; Reload Reuse
618 ; GFX908-NEXT: s_or_saveexec_b64 s[4:5], -1
619 ; GFX908-NEXT: buffer_load_dword v62, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
620 ; GFX908-NEXT: s_mov_b64 exec, s[4:5]
621 ; GFX908-NEXT: s_waitcnt vmcnt(0)
622 ; GFX908-NEXT: s_setpc_b64 s[30:31]
624 ; GFX90a-LABEL: test_tuple:
626 ; GFX90a-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
627 ; GFX90a-NEXT: s_or_saveexec_b64 s[4:5], -1
628 ; GFX90a-NEXT: buffer_store_dword v63, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
629 ; GFX90a-NEXT: s_mov_b64 exec, s[4:5]
630 ; GFX90a-NEXT: v_accvgpr_write_b32 a0, v40 ; Reload Reuse
631 ; GFX90a-NEXT: v_accvgpr_write_b32 a1, v41 ; Reload Reuse
632 ; GFX90a-NEXT: v_accvgpr_write_b32 a2, v42 ; Reload Reuse
633 ; GFX90a-NEXT: v_accvgpr_write_b32 a3, v43 ; Reload Reuse
634 ; GFX90a-NEXT: v_accvgpr_write_b32 a4, v44 ; Reload Reuse
635 ; GFX90a-NEXT: v_accvgpr_write_b32 a5, v45 ; Reload Reuse
636 ; GFX90a-NEXT: v_accvgpr_write_b32 a6, v46 ; Reload Reuse
637 ; GFX90a-NEXT: v_accvgpr_write_b32 a7, v47 ; Reload Reuse
638 ; GFX90a-NEXT: v_accvgpr_write_b32 a8, v56 ; Reload Reuse
639 ; GFX90a-NEXT: v_accvgpr_write_b32 a9, v57 ; Reload Reuse
640 ; GFX90a-NEXT: v_accvgpr_write_b32 a10, v58 ; Reload Reuse
641 ; GFX90a-NEXT: v_accvgpr_write_b32 a11, v59 ; Reload Reuse
642 ; GFX90a-NEXT: v_accvgpr_write_b32 a12, v60 ; Reload Reuse
643 ; GFX90a-NEXT: v_accvgpr_write_b32 a13, v61 ; Reload Reuse
644 ; GFX90a-NEXT: v_accvgpr_write_b32 a14, v62 ; Reload Reuse
645 ; GFX90a-NEXT: v_writelane_b32 v63, s36, 0
646 ; GFX90a-NEXT: v_writelane_b32 v63, s37, 1
647 ; GFX90a-NEXT: v_writelane_b32 v63, s38, 2
648 ; GFX90a-NEXT: v_writelane_b32 v63, s39, 3
649 ; GFX90a-NEXT: v_writelane_b32 v63, s40, 4
650 ; GFX90a-NEXT: v_writelane_b32 v63, s41, 5
651 ; GFX90a-NEXT: v_writelane_b32 v63, s42, 6
652 ; GFX90a-NEXT: v_writelane_b32 v63, s43, 7
653 ; GFX90a-NEXT: v_writelane_b32 v63, s44, 8
654 ; GFX90a-NEXT: v_writelane_b32 v63, s45, 9
655 ; GFX90a-NEXT: v_writelane_b32 v63, s46, 10
656 ; GFX90a-NEXT: v_writelane_b32 v63, s47, 11
657 ; GFX90a-NEXT: v_writelane_b32 v63, s48, 12
658 ; GFX90a-NEXT: v_writelane_b32 v63, s49, 13
659 ; GFX90a-NEXT: v_writelane_b32 v63, s50, 14
660 ; GFX90a-NEXT: v_writelane_b32 v63, s51, 15
661 ; GFX90a-NEXT: v_writelane_b32 v63, s52, 16
662 ; GFX90a-NEXT: v_writelane_b32 v63, s53, 17
663 ; GFX90a-NEXT: v_writelane_b32 v63, s54, 18
664 ; GFX90a-NEXT: v_writelane_b32 v63, s55, 19
665 ; GFX90a-NEXT: v_writelane_b32 v63, s56, 20
666 ; GFX90a-NEXT: v_writelane_b32 v63, s57, 21
667 ; GFX90a-NEXT: v_writelane_b32 v63, s58, 22
668 ; GFX90a-NEXT: v_writelane_b32 v63, s59, 23
669 ; GFX90a-NEXT: v_writelane_b32 v63, s60, 24
670 ; GFX90a-NEXT: v_writelane_b32 v63, s61, 25
671 ; GFX90a-NEXT: v_writelane_b32 v63, s62, 26
672 ; GFX90a-NEXT: v_writelane_b32 v63, s63, 27
673 ; GFX90a-NEXT: v_writelane_b32 v63, s64, 28
674 ; GFX90a-NEXT: v_writelane_b32 v63, s65, 29
675 ; GFX90a-NEXT: v_writelane_b32 v63, s66, 30
676 ; GFX90a-NEXT: v_writelane_b32 v63, s67, 31
677 ; GFX90a-NEXT: v_mov_b32_e32 v33, v30
678 ; GFX90a-NEXT: v_mov_b32_e32 v34, v29
679 ; GFX90a-NEXT: v_mov_b32_e32 v35, v28
680 ; GFX90a-NEXT: v_mov_b32_e32 v36, v27
681 ; GFX90a-NEXT: v_mov_b32_e32 v37, v26
682 ; GFX90a-NEXT: v_mov_b32_e32 v38, v25
683 ; GFX90a-NEXT: v_mov_b32_e32 v39, v24
684 ; GFX90a-NEXT: v_mov_b32_e32 v48, v23
685 ; GFX90a-NEXT: v_mov_b32_e32 v49, v22
686 ; GFX90a-NEXT: v_mov_b32_e32 v50, v21
687 ; GFX90a-NEXT: v_mov_b32_e32 v51, v20
688 ; GFX90a-NEXT: v_mov_b32_e32 v52, v19
689 ; GFX90a-NEXT: v_mov_b32_e32 v53, v18
690 ; GFX90a-NEXT: v_mov_b32_e32 v54, v17
691 ; GFX90a-NEXT: v_mov_b32_e32 v55, v16
692 ; GFX90a-NEXT: v_mov_b32_e32 v40, v15
693 ; GFX90a-NEXT: v_mov_b32_e32 v41, v14
694 ; GFX90a-NEXT: v_mov_b32_e32 v42, v13
695 ; GFX90a-NEXT: v_mov_b32_e32 v43, v12
696 ; GFX90a-NEXT: v_mov_b32_e32 v44, v11
697 ; GFX90a-NEXT: v_mov_b32_e32 v45, v10
698 ; GFX90a-NEXT: v_mov_b32_e32 v46, v9
699 ; GFX90a-NEXT: v_mov_b32_e32 v47, v8
700 ; GFX90a-NEXT: v_mov_b32_e32 v56, v7
701 ; GFX90a-NEXT: v_mov_b32_e32 v57, v6
702 ; GFX90a-NEXT: v_mov_b32_e32 v58, v5
703 ; GFX90a-NEXT: v_mov_b32_e32 v59, v4
704 ; GFX90a-NEXT: v_mov_b32_e32 v60, v3
705 ; GFX90a-NEXT: v_mov_b32_e32 v61, v2
706 ; GFX90a-NEXT: v_mov_b32_e32 v62, v1
707 ; GFX90a-NEXT: buffer_load_dword v32, off, s[0:3], s32
708 ; GFX90a-NEXT: ; implicit-def: $sgpr4
709 ; GFX90a-NEXT: ; implicit-def: $sgpr4
710 ; GFX90a-NEXT: ; implicit-def: $sgpr4
711 ; GFX90a-NEXT: ; implicit-def: $sgpr4
712 ; GFX90a-NEXT: ; implicit-def: $sgpr4
713 ; GFX90a-NEXT: ; implicit-def: $sgpr4
714 ; GFX90a-NEXT: ; implicit-def: $sgpr4
715 ; GFX90a-NEXT: ; implicit-def: $sgpr4
716 ; GFX90a-NEXT: ; implicit-def: $sgpr4
717 ; GFX90a-NEXT: ; implicit-def: $sgpr4
718 ; GFX90a-NEXT: ; implicit-def: $sgpr4
719 ; GFX90a-NEXT: ; implicit-def: $sgpr4
720 ; GFX90a-NEXT: ; implicit-def: $sgpr4
721 ; GFX90a-NEXT: ; implicit-def: $sgpr4
722 ; GFX90a-NEXT: ; implicit-def: $sgpr4
723 ; GFX90a-NEXT: ; implicit-def: $sgpr4
724 ; GFX90a-NEXT: ; implicit-def: $sgpr4
725 ; GFX90a-NEXT: ; implicit-def: $sgpr4
726 ; GFX90a-NEXT: ; implicit-def: $sgpr4
727 ; GFX90a-NEXT: ; implicit-def: $sgpr4
728 ; GFX90a-NEXT: ; implicit-def: $sgpr4
729 ; GFX90a-NEXT: ; implicit-def: $sgpr4
730 ; GFX90a-NEXT: ; implicit-def: $sgpr4
731 ; GFX90a-NEXT: ; implicit-def: $sgpr4
732 ; GFX90a-NEXT: ; implicit-def: $sgpr4
733 ; GFX90a-NEXT: ; implicit-def: $sgpr4
734 ; GFX90a-NEXT: ; implicit-def: $sgpr4
735 ; GFX90a-NEXT: ; implicit-def: $sgpr4
736 ; GFX90a-NEXT: ; implicit-def: $sgpr4
737 ; GFX90a-NEXT: ; implicit-def: $sgpr4
738 ; GFX90a-NEXT: ; implicit-def: $sgpr4
739 ; GFX90a-NEXT: ; implicit-def: $sgpr4
740 ; GFX90a-NEXT: ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 killed $exec
741 ; GFX90a-NEXT: v_mov_b32_e32 v1, v62
742 ; GFX90a-NEXT: v_mov_b32_e32 v2, v61
743 ; GFX90a-NEXT: v_mov_b32_e32 v3, v60
744 ; GFX90a-NEXT: v_mov_b32_e32 v4, v59
745 ; GFX90a-NEXT: v_mov_b32_e32 v5, v58
746 ; GFX90a-NEXT: v_mov_b32_e32 v6, v57
747 ; GFX90a-NEXT: v_mov_b32_e32 v7, v56
748 ; GFX90a-NEXT: v_mov_b32_e32 v8, v47
749 ; GFX90a-NEXT: v_mov_b32_e32 v9, v46
750 ; GFX90a-NEXT: v_mov_b32_e32 v10, v45
751 ; GFX90a-NEXT: v_mov_b32_e32 v11, v44
752 ; GFX90a-NEXT: v_mov_b32_e32 v12, v43
753 ; GFX90a-NEXT: v_mov_b32_e32 v13, v42
754 ; GFX90a-NEXT: v_mov_b32_e32 v14, v41
755 ; GFX90a-NEXT: v_mov_b32_e32 v15, v40
756 ; GFX90a-NEXT: v_mov_b32_e32 v16, v55
757 ; GFX90a-NEXT: v_mov_b32_e32 v17, v54
758 ; GFX90a-NEXT: v_mov_b32_e32 v18, v53
759 ; GFX90a-NEXT: v_mov_b32_e32 v19, v52
760 ; GFX90a-NEXT: v_mov_b32_e32 v20, v51
761 ; GFX90a-NEXT: v_mov_b32_e32 v21, v50
762 ; GFX90a-NEXT: v_mov_b32_e32 v22, v49
763 ; GFX90a-NEXT: v_mov_b32_e32 v23, v48
764 ; GFX90a-NEXT: v_mov_b32_e32 v24, v39
765 ; GFX90a-NEXT: v_mov_b32_e32 v25, v38
766 ; GFX90a-NEXT: v_mov_b32_e32 v26, v37
767 ; GFX90a-NEXT: v_mov_b32_e32 v27, v36
768 ; GFX90a-NEXT: v_mov_b32_e32 v28, v35
769 ; GFX90a-NEXT: v_mov_b32_e32 v29, v34
770 ; GFX90a-NEXT: v_mov_b32_e32 v30, v33
771 ; GFX90a-NEXT: ; kill: def $vgpr31 killed $vgpr32 killed $exec
772 ; GFX90a-NEXT: ; implicit-def: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67
773 ; GFX90a-NEXT: v_mov_b32_e32 v0, 0
774 ; GFX90a-NEXT: v_readlane_b32 s67, v63, 31
775 ; GFX90a-NEXT: v_readlane_b32 s66, v63, 30
776 ; GFX90a-NEXT: v_readlane_b32 s65, v63, 29
777 ; GFX90a-NEXT: v_readlane_b32 s64, v63, 28
778 ; GFX90a-NEXT: v_readlane_b32 s63, v63, 27
779 ; GFX90a-NEXT: v_readlane_b32 s62, v63, 26
780 ; GFX90a-NEXT: v_readlane_b32 s61, v63, 25
781 ; GFX90a-NEXT: v_readlane_b32 s60, v63, 24
782 ; GFX90a-NEXT: v_readlane_b32 s59, v63, 23
783 ; GFX90a-NEXT: v_readlane_b32 s58, v63, 22
784 ; GFX90a-NEXT: v_readlane_b32 s57, v63, 21
785 ; GFX90a-NEXT: v_readlane_b32 s56, v63, 20
786 ; GFX90a-NEXT: v_readlane_b32 s55, v63, 19
787 ; GFX90a-NEXT: v_readlane_b32 s54, v63, 18
788 ; GFX90a-NEXT: v_readlane_b32 s53, v63, 17
789 ; GFX90a-NEXT: v_readlane_b32 s52, v63, 16
790 ; GFX90a-NEXT: v_readlane_b32 s51, v63, 15
791 ; GFX90a-NEXT: v_readlane_b32 s50, v63, 14
792 ; GFX90a-NEXT: v_readlane_b32 s49, v63, 13
793 ; GFX90a-NEXT: v_readlane_b32 s48, v63, 12
794 ; GFX90a-NEXT: v_readlane_b32 s47, v63, 11
795 ; GFX90a-NEXT: v_readlane_b32 s46, v63, 10
796 ; GFX90a-NEXT: v_readlane_b32 s45, v63, 9
797 ; GFX90a-NEXT: v_readlane_b32 s44, v63, 8
798 ; GFX90a-NEXT: v_readlane_b32 s43, v63, 7
799 ; GFX90a-NEXT: v_readlane_b32 s42, v63, 6
800 ; GFX90a-NEXT: v_readlane_b32 s41, v63, 5
801 ; GFX90a-NEXT: v_readlane_b32 s40, v63, 4
802 ; GFX90a-NEXT: v_readlane_b32 s39, v63, 3
803 ; GFX90a-NEXT: v_readlane_b32 s38, v63, 2
804 ; GFX90a-NEXT: v_readlane_b32 s37, v63, 1
805 ; GFX90a-NEXT: v_readlane_b32 s36, v63, 0
806 ; GFX90a-NEXT: v_accvgpr_read_b32 v62, a14 ; Reload Reuse
807 ; GFX90a-NEXT: v_accvgpr_read_b32 v61, a13 ; Reload Reuse
808 ; GFX90a-NEXT: v_accvgpr_read_b32 v60, a12 ; Reload Reuse
809 ; GFX90a-NEXT: v_accvgpr_read_b32 v59, a11 ; Reload Reuse
810 ; GFX90a-NEXT: v_accvgpr_read_b32 v58, a10 ; Reload Reuse
811 ; GFX90a-NEXT: v_accvgpr_read_b32 v57, a9 ; Reload Reuse
812 ; GFX90a-NEXT: v_accvgpr_read_b32 v56, a8 ; Reload Reuse
813 ; GFX90a-NEXT: v_accvgpr_read_b32 v47, a7 ; Reload Reuse
814 ; GFX90a-NEXT: v_accvgpr_read_b32 v46, a6 ; Reload Reuse
815 ; GFX90a-NEXT: v_accvgpr_read_b32 v45, a5 ; Reload Reuse
816 ; GFX90a-NEXT: v_accvgpr_read_b32 v44, a4 ; Reload Reuse
817 ; GFX90a-NEXT: v_accvgpr_read_b32 v43, a3 ; Reload Reuse
818 ; GFX90a-NEXT: v_accvgpr_read_b32 v42, a2 ; Reload Reuse
819 ; GFX90a-NEXT: v_accvgpr_read_b32 v41, a1 ; Reload Reuse
820 ; GFX90a-NEXT: v_accvgpr_read_b32 v40, a0 ; Reload Reuse
821 ; GFX90a-NEXT: s_or_saveexec_b64 s[4:5], -1
822 ; GFX90a-NEXT: buffer_load_dword v63, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload
823 ; GFX90a-NEXT: s_mov_b64 exec, s[4:5]
824 ; GFX90a-NEXT: s_waitcnt vmcnt(0)
825 ; GFX90a-NEXT: s_setpc_b64 s[30:31]
826 %2 = shufflevector <16 x i64> %0, <16 x i64> zeroinitializer, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>