xref: /llvm-project/llvm/test/CodeGen/AMDGPU/vgpr-large-tuple-alloc-error.ll (revision 230c13d59d0843c3b738920b85c341cc78a61fa9)
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
6
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.
11
12define i32 @test_tuple(<16 x i64> %0) {
13; GFX900-LABEL: test_tuple:
14; GFX900:       ; %bb.0:
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]
215;
216; GFX906-LABEL: test_tuple:
217; GFX906:       ; %bb.0:
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]
418;
419; GFX908-LABEL: test_tuple:
420; GFX908:       ; %bb.0:
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]
623;
624; GFX90a-LABEL: test_tuple:
625; GFX90a:       ; %bb.0:
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>
827  ret i32 0
828}
829