1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -mattr=-xnack -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN %s
3
4; Check lowering of some large extractelement that use the stack
5; instead of register indexing.
6
7define i32 @v_extract_v64i32_varidx(<64 x i32> addrspace(1)* %ptr, i32 %idx) {
8; GCN-LABEL: v_extract_v64i32_varidx:
9; GCN:       ; %bb.0:
10; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11; GCN-NEXT:    s_mov_b32 s6, s33
12; GCN-NEXT:    s_add_i32 s33, s32, 0x3fc0
13; GCN-NEXT:    s_and_b32 s33, s33, 0xffffc000
14; GCN-NEXT:    v_add_co_u32_e32 v3, vcc, 64, v0
15; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:60 ; 4-byte Folded Spill
16; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:56 ; 4-byte Folded Spill
17; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:52 ; 4-byte Folded Spill
18; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:48 ; 4-byte Folded Spill
19; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:44 ; 4-byte Folded Spill
20; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:40 ; 4-byte Folded Spill
21; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:36 ; 4-byte Folded Spill
22; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:32 ; 4-byte Folded Spill
23; GCN-NEXT:    buffer_store_dword v56, off, s[0:3], s33 offset:28 ; 4-byte Folded Spill
24; GCN-NEXT:    buffer_store_dword v57, off, s[0:3], s33 offset:24 ; 4-byte Folded Spill
25; GCN-NEXT:    buffer_store_dword v58, off, s[0:3], s33 offset:20 ; 4-byte Folded Spill
26; GCN-NEXT:    buffer_store_dword v59, off, s[0:3], s33 offset:16 ; 4-byte Folded Spill
27; GCN-NEXT:    buffer_store_dword v60, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill
28; GCN-NEXT:    buffer_store_dword v61, off, s[0:3], s33 offset:8 ; 4-byte Folded Spill
29; GCN-NEXT:    buffer_store_dword v62, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
30; GCN-NEXT:    buffer_store_dword v63, off, s[0:3], s33 ; 4-byte Folded Spill
31; GCN-NEXT:    v_addc_co_u32_e32 v4, vcc, 0, v1, vcc
32; GCN-NEXT:    s_movk_i32 s4, 0x80
33; GCN-NEXT:    global_load_dwordx4 v[8:11], v[3:4], off offset:16
34; GCN-NEXT:    global_load_dwordx4 v[12:15], v[3:4], off offset:32
35; GCN-NEXT:    global_load_dwordx4 v[56:59], v[3:4], off offset:48
36; GCN-NEXT:    s_mov_b32 s5, 0
37; GCN-NEXT:    v_mov_b32_e32 v3, s4
38; GCN-NEXT:    v_mov_b32_e32 v4, s5
39; GCN-NEXT:    v_add_co_u32_e32 v3, vcc, v0, v3
40; GCN-NEXT:    v_addc_co_u32_e32 v4, vcc, v1, v4, vcc
41; GCN-NEXT:    global_load_dwordx4 v[16:19], v[0:1], off
42; GCN-NEXT:    global_load_dwordx4 v[20:23], v[0:1], off offset:16
43; GCN-NEXT:    global_load_dwordx4 v[24:27], v[0:1], off offset:32
44; GCN-NEXT:    global_load_dwordx4 v[28:31], v[0:1], off offset:48
45; GCN-NEXT:    global_load_dwordx4 v[32:35], v[0:1], off offset:64
46; GCN-NEXT:    global_load_dwordx4 v[36:39], v[0:1], off offset:128
47; GCN-NEXT:    global_load_dwordx4 v[40:43], v[0:1], off offset:192
48; GCN-NEXT:    global_load_dwordx4 v[44:47], v[3:4], off offset:16
49; GCN-NEXT:    global_load_dwordx4 v[52:55], v[3:4], off offset:32
50; GCN-NEXT:    global_load_dwordx4 v[48:51], v[3:4], off offset:48
51; GCN-NEXT:    s_movk_i32 s4, 0xc0
52; GCN-NEXT:    v_mov_b32_e32 v6, s5
53; GCN-NEXT:    v_mov_b32_e32 v5, s4
54; GCN-NEXT:    v_add_co_u32_e32 v60, vcc, v0, v5
55; GCN-NEXT:    v_addc_co_u32_e32 v61, vcc, v1, v6, vcc
56; GCN-NEXT:    v_and_b32_e32 v0, 63, v2
57; GCN-NEXT:    v_lshrrev_b32_e64 v1, 6, s33
58; GCN-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
59; GCN-NEXT:    v_add_u32_e32 v1, 0x100, v1
60; GCN-NEXT:    v_add_u32_e32 v0, v1, v0
61; GCN-NEXT:    s_add_i32 s32, s32, 0x10000
62; GCN-NEXT:    s_add_i32 s32, s32, 0xffff0000
63; GCN-NEXT:    s_waitcnt vmcnt(0)
64; GCN-NEXT:    buffer_store_dword v36, off, s[0:3], s33 offset:576 ; 4-byte Folded Spill
65; GCN-NEXT:    s_waitcnt vmcnt(0)
66; GCN-NEXT:    buffer_store_dword v37, off, s[0:3], s33 offset:580 ; 4-byte Folded Spill
67; GCN-NEXT:    buffer_store_dword v38, off, s[0:3], s33 offset:584 ; 4-byte Folded Spill
68; GCN-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:588 ; 4-byte Folded Spill
69; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:592 ; 4-byte Folded Spill
70; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:596 ; 4-byte Folded Spill
71; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:600 ; 4-byte Folded Spill
72; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:604 ; 4-byte Folded Spill
73; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:608 ; 4-byte Folded Spill
74; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:612 ; 4-byte Folded Spill
75; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:616 ; 4-byte Folded Spill
76; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:620 ; 4-byte Folded Spill
77; GCN-NEXT:    buffer_store_dword v48, off, s[0:3], s33 offset:624 ; 4-byte Folded Spill
78; GCN-NEXT:    buffer_store_dword v49, off, s[0:3], s33 offset:628 ; 4-byte Folded Spill
79; GCN-NEXT:    buffer_store_dword v50, off, s[0:3], s33 offset:632 ; 4-byte Folded Spill
80; GCN-NEXT:    buffer_store_dword v51, off, s[0:3], s33 offset:636 ; 4-byte Folded Spill
81; GCN-NEXT:    global_load_dwordx4 v[4:7], v[60:61], off offset:16
82; GCN-NEXT:    global_load_dwordx4 v[48:51], v[60:61], off offset:32
83; GCN-NEXT:    s_waitcnt vmcnt(0)
84; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:512 ; 4-byte Folded Spill
85; GCN-NEXT:    s_waitcnt vmcnt(0)
86; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:516 ; 4-byte Folded Spill
87; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:520 ; 4-byte Folded Spill
88; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:524 ; 4-byte Folded Spill
89; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:528 ; 4-byte Folded Spill
90; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:532 ; 4-byte Folded Spill
91; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:536 ; 4-byte Folded Spill
92; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:540 ; 4-byte Folded Spill
93; GCN-NEXT:    buffer_store_dword v48, off, s[0:3], s33 offset:544 ; 4-byte Folded Spill
94; GCN-NEXT:    buffer_store_dword v49, off, s[0:3], s33 offset:548 ; 4-byte Folded Spill
95; GCN-NEXT:    buffer_store_dword v50, off, s[0:3], s33 offset:552 ; 4-byte Folded Spill
96; GCN-NEXT:    buffer_store_dword v51, off, s[0:3], s33 offset:556 ; 4-byte Folded Spill
97; GCN-NEXT:    buffer_store_dword v52, off, s[0:3], s33 offset:560 ; 4-byte Folded Spill
98; GCN-NEXT:    buffer_store_dword v53, off, s[0:3], s33 offset:564 ; 4-byte Folded Spill
99; GCN-NEXT:    buffer_store_dword v54, off, s[0:3], s33 offset:568 ; 4-byte Folded Spill
100; GCN-NEXT:    buffer_store_dword v55, off, s[0:3], s33 offset:572 ; 4-byte Folded Spill
101; GCN-NEXT:    global_load_dwordx4 v[60:63], v[60:61], off offset:48
102; GCN-NEXT:    buffer_store_dword v16, off, s[0:3], s33 offset:256
103; GCN-NEXT:    buffer_store_dword v17, off, s[0:3], s33 offset:260
104; GCN-NEXT:    buffer_store_dword v18, off, s[0:3], s33 offset:264
105; GCN-NEXT:    buffer_store_dword v19, off, s[0:3], s33 offset:268
106; GCN-NEXT:    buffer_store_dword v20, off, s[0:3], s33 offset:272
107; GCN-NEXT:    buffer_store_dword v21, off, s[0:3], s33 offset:276
108; GCN-NEXT:    buffer_store_dword v22, off, s[0:3], s33 offset:280
109; GCN-NEXT:    buffer_store_dword v23, off, s[0:3], s33 offset:284
110; GCN-NEXT:    buffer_store_dword v24, off, s[0:3], s33 offset:288
111; GCN-NEXT:    buffer_store_dword v25, off, s[0:3], s33 offset:292
112; GCN-NEXT:    buffer_store_dword v26, off, s[0:3], s33 offset:296
113; GCN-NEXT:    buffer_store_dword v27, off, s[0:3], s33 offset:300
114; GCN-NEXT:    buffer_store_dword v28, off, s[0:3], s33 offset:304
115; GCN-NEXT:    buffer_store_dword v29, off, s[0:3], s33 offset:308
116; GCN-NEXT:    buffer_store_dword v30, off, s[0:3], s33 offset:312
117; GCN-NEXT:    buffer_store_dword v31, off, s[0:3], s33 offset:316
118; GCN-NEXT:    buffer_store_dword v32, off, s[0:3], s33 offset:320
119; GCN-NEXT:    buffer_store_dword v33, off, s[0:3], s33 offset:324
120; GCN-NEXT:    buffer_store_dword v34, off, s[0:3], s33 offset:328
121; GCN-NEXT:    buffer_store_dword v35, off, s[0:3], s33 offset:332
122; GCN-NEXT:    buffer_store_dword v36, off, s[0:3], s33 offset:384
123; GCN-NEXT:    buffer_store_dword v37, off, s[0:3], s33 offset:388
124; GCN-NEXT:    buffer_store_dword v38, off, s[0:3], s33 offset:392
125; GCN-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:396
126; GCN-NEXT:    buffer_store_dword v8, off, s[0:3], s33 offset:336
127; GCN-NEXT:    buffer_store_dword v9, off, s[0:3], s33 offset:340
128; GCN-NEXT:    buffer_store_dword v10, off, s[0:3], s33 offset:344
129; GCN-NEXT:    buffer_store_dword v11, off, s[0:3], s33 offset:348
130; GCN-NEXT:    buffer_store_dword v12, off, s[0:3], s33 offset:352
131; GCN-NEXT:    buffer_store_dword v13, off, s[0:3], s33 offset:356
132; GCN-NEXT:    buffer_store_dword v14, off, s[0:3], s33 offset:360
133; GCN-NEXT:    buffer_store_dword v15, off, s[0:3], s33 offset:364
134; GCN-NEXT:    buffer_store_dword v56, off, s[0:3], s33 offset:368
135; GCN-NEXT:    buffer_store_dword v57, off, s[0:3], s33 offset:372
136; GCN-NEXT:    buffer_store_dword v58, off, s[0:3], s33 offset:376
137; GCN-NEXT:    buffer_store_dword v59, off, s[0:3], s33 offset:380
138; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:400
139; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:404
140; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:408
141; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:412
142; GCN-NEXT:    buffer_store_dword v52, off, s[0:3], s33 offset:416
143; GCN-NEXT:    buffer_store_dword v53, off, s[0:3], s33 offset:420
144; GCN-NEXT:    buffer_store_dword v54, off, s[0:3], s33 offset:424
145; GCN-NEXT:    buffer_store_dword v55, off, s[0:3], s33 offset:428
146; GCN-NEXT:    buffer_load_dword v8, off, s[0:3], s33 offset:576 ; 4-byte Folded Reload
147; GCN-NEXT:    buffer_load_dword v9, off, s[0:3], s33 offset:580 ; 4-byte Folded Reload
148; GCN-NEXT:    buffer_load_dword v10, off, s[0:3], s33 offset:584 ; 4-byte Folded Reload
149; GCN-NEXT:    buffer_load_dword v11, off, s[0:3], s33 offset:588 ; 4-byte Folded Reload
150; GCN-NEXT:    buffer_load_dword v12, off, s[0:3], s33 offset:592 ; 4-byte Folded Reload
151; GCN-NEXT:    buffer_load_dword v13, off, s[0:3], s33 offset:596 ; 4-byte Folded Reload
152; GCN-NEXT:    buffer_load_dword v14, off, s[0:3], s33 offset:600 ; 4-byte Folded Reload
153; GCN-NEXT:    buffer_load_dword v15, off, s[0:3], s33 offset:604 ; 4-byte Folded Reload
154; GCN-NEXT:    buffer_load_dword v16, off, s[0:3], s33 offset:608 ; 4-byte Folded Reload
155; GCN-NEXT:    buffer_load_dword v17, off, s[0:3], s33 offset:612 ; 4-byte Folded Reload
156; GCN-NEXT:    buffer_load_dword v18, off, s[0:3], s33 offset:616 ; 4-byte Folded Reload
157; GCN-NEXT:    buffer_load_dword v19, off, s[0:3], s33 offset:620 ; 4-byte Folded Reload
158; GCN-NEXT:    buffer_load_dword v20, off, s[0:3], s33 offset:624 ; 4-byte Folded Reload
159; GCN-NEXT:    buffer_load_dword v21, off, s[0:3], s33 offset:628 ; 4-byte Folded Reload
160; GCN-NEXT:    buffer_load_dword v22, off, s[0:3], s33 offset:632 ; 4-byte Folded Reload
161; GCN-NEXT:    buffer_load_dword v23, off, s[0:3], s33 offset:636 ; 4-byte Folded Reload
162; GCN-NEXT:    s_waitcnt vmcnt(0)
163; GCN-NEXT:    v_mov_b32_e32 v12, v20
164; GCN-NEXT:    v_mov_b32_e32 v13, v21
165; GCN-NEXT:    v_mov_b32_e32 v14, v22
166; GCN-NEXT:    v_mov_b32_e32 v15, v23
167; GCN-NEXT:    buffer_store_dword v12, off, s[0:3], s33 offset:432
168; GCN-NEXT:    buffer_store_dword v13, off, s[0:3], s33 offset:436
169; GCN-NEXT:    buffer_store_dword v14, off, s[0:3], s33 offset:440
170; GCN-NEXT:    buffer_store_dword v15, off, s[0:3], s33 offset:444
171; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:448
172; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:452
173; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:456
174; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:460
175; GCN-NEXT:    buffer_store_dword v4, off, s[0:3], s33 offset:464
176; GCN-NEXT:    buffer_store_dword v5, off, s[0:3], s33 offset:468
177; GCN-NEXT:    buffer_store_dword v6, off, s[0:3], s33 offset:472
178; GCN-NEXT:    buffer_store_dword v7, off, s[0:3], s33 offset:476
179; GCN-NEXT:    buffer_load_dword v3, off, s[0:3], s33 offset:512 ; 4-byte Folded Reload
180; GCN-NEXT:    buffer_load_dword v4, off, s[0:3], s33 offset:516 ; 4-byte Folded Reload
181; GCN-NEXT:    buffer_load_dword v5, off, s[0:3], s33 offset:520 ; 4-byte Folded Reload
182; GCN-NEXT:    buffer_load_dword v6, off, s[0:3], s33 offset:524 ; 4-byte Folded Reload
183; GCN-NEXT:    buffer_load_dword v7, off, s[0:3], s33 offset:528 ; 4-byte Folded Reload
184; GCN-NEXT:    buffer_load_dword v8, off, s[0:3], s33 offset:532 ; 4-byte Folded Reload
185; GCN-NEXT:    buffer_load_dword v9, off, s[0:3], s33 offset:536 ; 4-byte Folded Reload
186; GCN-NEXT:    buffer_load_dword v10, off, s[0:3], s33 offset:540 ; 4-byte Folded Reload
187; GCN-NEXT:    buffer_load_dword v11, off, s[0:3], s33 offset:544 ; 4-byte Folded Reload
188; GCN-NEXT:    buffer_load_dword v12, off, s[0:3], s33 offset:548 ; 4-byte Folded Reload
189; GCN-NEXT:    buffer_load_dword v13, off, s[0:3], s33 offset:552 ; 4-byte Folded Reload
190; GCN-NEXT:    buffer_load_dword v14, off, s[0:3], s33 offset:556 ; 4-byte Folded Reload
191; GCN-NEXT:    buffer_load_dword v15, off, s[0:3], s33 offset:560 ; 4-byte Folded Reload
192; GCN-NEXT:    buffer_load_dword v16, off, s[0:3], s33 offset:564 ; 4-byte Folded Reload
193; GCN-NEXT:    buffer_load_dword v17, off, s[0:3], s33 offset:568 ; 4-byte Folded Reload
194; GCN-NEXT:    buffer_load_dword v18, off, s[0:3], s33 offset:572 ; 4-byte Folded Reload
195; GCN-NEXT:    s_waitcnt vmcnt(0)
196; GCN-NEXT:    v_mov_b32_e32 v8, v11
197; GCN-NEXT:    v_mov_b32_e32 v9, v12
198; GCN-NEXT:    v_mov_b32_e32 v10, v13
199; GCN-NEXT:    v_mov_b32_e32 v11, v14
200; GCN-NEXT:    buffer_store_dword v8, off, s[0:3], s33 offset:480
201; GCN-NEXT:    buffer_store_dword v9, off, s[0:3], s33 offset:484
202; GCN-NEXT:    buffer_store_dword v10, off, s[0:3], s33 offset:488
203; GCN-NEXT:    buffer_store_dword v11, off, s[0:3], s33 offset:492
204; GCN-NEXT:    buffer_store_dword v60, off, s[0:3], s33 offset:496
205; GCN-NEXT:    buffer_store_dword v61, off, s[0:3], s33 offset:500
206; GCN-NEXT:    buffer_store_dword v62, off, s[0:3], s33 offset:504
207; GCN-NEXT:    buffer_store_dword v63, off, s[0:3], s33 offset:508
208; GCN-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen
209; GCN-NEXT:    buffer_load_dword v63, off, s[0:3], s33 ; 4-byte Folded Reload
210; GCN-NEXT:    buffer_load_dword v62, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload
211; GCN-NEXT:    buffer_load_dword v61, off, s[0:3], s33 offset:8 ; 4-byte Folded Reload
212; GCN-NEXT:    buffer_load_dword v60, off, s[0:3], s33 offset:12 ; 4-byte Folded Reload
213; GCN-NEXT:    buffer_load_dword v59, off, s[0:3], s33 offset:16 ; 4-byte Folded Reload
214; GCN-NEXT:    buffer_load_dword v58, off, s[0:3], s33 offset:20 ; 4-byte Folded Reload
215; GCN-NEXT:    buffer_load_dword v57, off, s[0:3], s33 offset:24 ; 4-byte Folded Reload
216; GCN-NEXT:    buffer_load_dword v56, off, s[0:3], s33 offset:28 ; 4-byte Folded Reload
217; GCN-NEXT:    buffer_load_dword v47, off, s[0:3], s33 offset:32 ; 4-byte Folded Reload
218; GCN-NEXT:    buffer_load_dword v46, off, s[0:3], s33 offset:36 ; 4-byte Folded Reload
219; GCN-NEXT:    buffer_load_dword v45, off, s[0:3], s33 offset:40 ; 4-byte Folded Reload
220; GCN-NEXT:    buffer_load_dword v44, off, s[0:3], s33 offset:44 ; 4-byte Folded Reload
221; GCN-NEXT:    buffer_load_dword v43, off, s[0:3], s33 offset:48 ; 4-byte Folded Reload
222; GCN-NEXT:    buffer_load_dword v42, off, s[0:3], s33 offset:52 ; 4-byte Folded Reload
223; GCN-NEXT:    buffer_load_dword v41, off, s[0:3], s33 offset:56 ; 4-byte Folded Reload
224; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 offset:60 ; 4-byte Folded Reload
225; GCN-NEXT:    s_mov_b32 s33, s6
226; GCN-NEXT:    s_waitcnt vmcnt(0)
227; GCN-NEXT:    s_setpc_b64 s[30:31]
228  %vec = load <64 x i32>, <64 x i32> addrspace(1)* %ptr
229  %elt = extractelement <64 x i32> %vec, i32 %idx
230  ret i32 %elt
231}
232
233define i16 @v_extract_v128i16_varidx(<128 x i16> addrspace(1)* %ptr, i32 %idx) {
234; GCN-LABEL: v_extract_v128i16_varidx:
235; GCN:       ; %bb.0:
236; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
237; GCN-NEXT:    s_mov_b32 s6, s33
238; GCN-NEXT:    s_add_i32 s33, s32, 0x3fc0
239; GCN-NEXT:    s_and_b32 s33, s33, 0xffffc000
240; GCN-NEXT:    v_add_co_u32_e32 v3, vcc, 64, v0
241; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:60 ; 4-byte Folded Spill
242; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:56 ; 4-byte Folded Spill
243; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:52 ; 4-byte Folded Spill
244; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:48 ; 4-byte Folded Spill
245; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:44 ; 4-byte Folded Spill
246; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:40 ; 4-byte Folded Spill
247; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:36 ; 4-byte Folded Spill
248; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:32 ; 4-byte Folded Spill
249; GCN-NEXT:    buffer_store_dword v56, off, s[0:3], s33 offset:28 ; 4-byte Folded Spill
250; GCN-NEXT:    buffer_store_dword v57, off, s[0:3], s33 offset:24 ; 4-byte Folded Spill
251; GCN-NEXT:    buffer_store_dword v58, off, s[0:3], s33 offset:20 ; 4-byte Folded Spill
252; GCN-NEXT:    buffer_store_dword v59, off, s[0:3], s33 offset:16 ; 4-byte Folded Spill
253; GCN-NEXT:    buffer_store_dword v60, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill
254; GCN-NEXT:    buffer_store_dword v61, off, s[0:3], s33 offset:8 ; 4-byte Folded Spill
255; GCN-NEXT:    buffer_store_dword v62, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
256; GCN-NEXT:    buffer_store_dword v63, off, s[0:3], s33 ; 4-byte Folded Spill
257; GCN-NEXT:    v_addc_co_u32_e32 v4, vcc, 0, v1, vcc
258; GCN-NEXT:    s_movk_i32 s4, 0x80
259; GCN-NEXT:    global_load_dwordx4 v[8:11], v[3:4], off offset:16
260; GCN-NEXT:    global_load_dwordx4 v[12:15], v[3:4], off offset:32
261; GCN-NEXT:    global_load_dwordx4 v[56:59], v[3:4], off offset:48
262; GCN-NEXT:    s_mov_b32 s5, 0
263; GCN-NEXT:    v_mov_b32_e32 v3, s4
264; GCN-NEXT:    v_mov_b32_e32 v4, s5
265; GCN-NEXT:    v_add_co_u32_e32 v3, vcc, v0, v3
266; GCN-NEXT:    v_addc_co_u32_e32 v4, vcc, v1, v4, vcc
267; GCN-NEXT:    global_load_dwordx4 v[16:19], v[0:1], off
268; GCN-NEXT:    global_load_dwordx4 v[20:23], v[0:1], off offset:16
269; GCN-NEXT:    global_load_dwordx4 v[24:27], v[0:1], off offset:32
270; GCN-NEXT:    global_load_dwordx4 v[28:31], v[0:1], off offset:48
271; GCN-NEXT:    global_load_dwordx4 v[32:35], v[0:1], off offset:64
272; GCN-NEXT:    global_load_dwordx4 v[36:39], v[0:1], off offset:128
273; GCN-NEXT:    global_load_dwordx4 v[40:43], v[0:1], off offset:192
274; GCN-NEXT:    global_load_dwordx4 v[44:47], v[3:4], off offset:16
275; GCN-NEXT:    global_load_dwordx4 v[52:55], v[3:4], off offset:32
276; GCN-NEXT:    global_load_dwordx4 v[48:51], v[3:4], off offset:48
277; GCN-NEXT:    s_movk_i32 s4, 0xc0
278; GCN-NEXT:    v_mov_b32_e32 v6, s5
279; GCN-NEXT:    v_mov_b32_e32 v5, s4
280; GCN-NEXT:    v_add_co_u32_e32 v60, vcc, v0, v5
281; GCN-NEXT:    v_addc_co_u32_e32 v61, vcc, v1, v6, vcc
282; GCN-NEXT:    v_bfe_u32 v0, v2, 1, 6
283; GCN-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
284; GCN-NEXT:    v_and_b32_e32 v1, 1, v2
285; GCN-NEXT:    v_lshlrev_b32_e32 v1, 4, v1
286; GCN-NEXT:    s_add_i32 s32, s32, 0x10000
287; GCN-NEXT:    s_add_i32 s32, s32, 0xffff0000
288; GCN-NEXT:    s_waitcnt vmcnt(0)
289; GCN-NEXT:    buffer_store_dword v36, off, s[0:3], s33 offset:576 ; 4-byte Folded Spill
290; GCN-NEXT:    s_waitcnt vmcnt(0)
291; GCN-NEXT:    buffer_store_dword v37, off, s[0:3], s33 offset:580 ; 4-byte Folded Spill
292; GCN-NEXT:    buffer_store_dword v38, off, s[0:3], s33 offset:584 ; 4-byte Folded Spill
293; GCN-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:588 ; 4-byte Folded Spill
294; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:592 ; 4-byte Folded Spill
295; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:596 ; 4-byte Folded Spill
296; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:600 ; 4-byte Folded Spill
297; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:604 ; 4-byte Folded Spill
298; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:608 ; 4-byte Folded Spill
299; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:612 ; 4-byte Folded Spill
300; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:616 ; 4-byte Folded Spill
301; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:620 ; 4-byte Folded Spill
302; GCN-NEXT:    buffer_store_dword v48, off, s[0:3], s33 offset:624 ; 4-byte Folded Spill
303; GCN-NEXT:    buffer_store_dword v49, off, s[0:3], s33 offset:628 ; 4-byte Folded Spill
304; GCN-NEXT:    buffer_store_dword v50, off, s[0:3], s33 offset:632 ; 4-byte Folded Spill
305; GCN-NEXT:    buffer_store_dword v51, off, s[0:3], s33 offset:636 ; 4-byte Folded Spill
306; GCN-NEXT:    global_load_dwordx4 v[4:7], v[60:61], off offset:16
307; GCN-NEXT:    global_load_dwordx4 v[48:51], v[60:61], off offset:32
308; GCN-NEXT:    s_waitcnt vmcnt(0)
309; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:512 ; 4-byte Folded Spill
310; GCN-NEXT:    s_waitcnt vmcnt(0)
311; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:516 ; 4-byte Folded Spill
312; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:520 ; 4-byte Folded Spill
313; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:524 ; 4-byte Folded Spill
314; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:528 ; 4-byte Folded Spill
315; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:532 ; 4-byte Folded Spill
316; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:536 ; 4-byte Folded Spill
317; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:540 ; 4-byte Folded Spill
318; GCN-NEXT:    buffer_store_dword v48, off, s[0:3], s33 offset:544 ; 4-byte Folded Spill
319; GCN-NEXT:    buffer_store_dword v49, off, s[0:3], s33 offset:548 ; 4-byte Folded Spill
320; GCN-NEXT:    buffer_store_dword v50, off, s[0:3], s33 offset:552 ; 4-byte Folded Spill
321; GCN-NEXT:    buffer_store_dword v51, off, s[0:3], s33 offset:556 ; 4-byte Folded Spill
322; GCN-NEXT:    buffer_store_dword v52, off, s[0:3], s33 offset:560 ; 4-byte Folded Spill
323; GCN-NEXT:    buffer_store_dword v53, off, s[0:3], s33 offset:564 ; 4-byte Folded Spill
324; GCN-NEXT:    buffer_store_dword v54, off, s[0:3], s33 offset:568 ; 4-byte Folded Spill
325; GCN-NEXT:    buffer_store_dword v55, off, s[0:3], s33 offset:572 ; 4-byte Folded Spill
326; GCN-NEXT:    global_load_dwordx4 v[60:63], v[60:61], off offset:48
327; GCN-NEXT:    buffer_store_dword v16, off, s[0:3], s33 offset:256
328; GCN-NEXT:    buffer_store_dword v17, off, s[0:3], s33 offset:260
329; GCN-NEXT:    buffer_store_dword v18, off, s[0:3], s33 offset:264
330; GCN-NEXT:    buffer_store_dword v19, off, s[0:3], s33 offset:268
331; GCN-NEXT:    buffer_store_dword v20, off, s[0:3], s33 offset:272
332; GCN-NEXT:    buffer_store_dword v21, off, s[0:3], s33 offset:276
333; GCN-NEXT:    buffer_store_dword v22, off, s[0:3], s33 offset:280
334; GCN-NEXT:    buffer_store_dword v23, off, s[0:3], s33 offset:284
335; GCN-NEXT:    buffer_store_dword v24, off, s[0:3], s33 offset:288
336; GCN-NEXT:    buffer_store_dword v25, off, s[0:3], s33 offset:292
337; GCN-NEXT:    buffer_store_dword v26, off, s[0:3], s33 offset:296
338; GCN-NEXT:    buffer_store_dword v27, off, s[0:3], s33 offset:300
339; GCN-NEXT:    buffer_store_dword v28, off, s[0:3], s33 offset:304
340; GCN-NEXT:    buffer_store_dword v29, off, s[0:3], s33 offset:308
341; GCN-NEXT:    buffer_store_dword v30, off, s[0:3], s33 offset:312
342; GCN-NEXT:    buffer_store_dword v31, off, s[0:3], s33 offset:316
343; GCN-NEXT:    buffer_store_dword v32, off, s[0:3], s33 offset:320
344; GCN-NEXT:    buffer_store_dword v33, off, s[0:3], s33 offset:324
345; GCN-NEXT:    buffer_store_dword v34, off, s[0:3], s33 offset:328
346; GCN-NEXT:    buffer_store_dword v35, off, s[0:3], s33 offset:332
347; GCN-NEXT:    buffer_store_dword v36, off, s[0:3], s33 offset:384
348; GCN-NEXT:    buffer_store_dword v37, off, s[0:3], s33 offset:388
349; GCN-NEXT:    buffer_store_dword v38, off, s[0:3], s33 offset:392
350; GCN-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:396
351; GCN-NEXT:    buffer_store_dword v8, off, s[0:3], s33 offset:336
352; GCN-NEXT:    buffer_store_dword v9, off, s[0:3], s33 offset:340
353; GCN-NEXT:    buffer_store_dword v10, off, s[0:3], s33 offset:344
354; GCN-NEXT:    buffer_store_dword v11, off, s[0:3], s33 offset:348
355; GCN-NEXT:    buffer_store_dword v12, off, s[0:3], s33 offset:352
356; GCN-NEXT:    buffer_store_dword v13, off, s[0:3], s33 offset:356
357; GCN-NEXT:    buffer_store_dword v14, off, s[0:3], s33 offset:360
358; GCN-NEXT:    buffer_store_dword v15, off, s[0:3], s33 offset:364
359; GCN-NEXT:    buffer_store_dword v56, off, s[0:3], s33 offset:368
360; GCN-NEXT:    buffer_store_dword v57, off, s[0:3], s33 offset:372
361; GCN-NEXT:    buffer_store_dword v58, off, s[0:3], s33 offset:376
362; GCN-NEXT:    buffer_store_dword v59, off, s[0:3], s33 offset:380
363; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:400
364; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:404
365; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:408
366; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:412
367; GCN-NEXT:    buffer_store_dword v52, off, s[0:3], s33 offset:416
368; GCN-NEXT:    buffer_store_dword v53, off, s[0:3], s33 offset:420
369; GCN-NEXT:    buffer_store_dword v54, off, s[0:3], s33 offset:424
370; GCN-NEXT:    buffer_store_dword v55, off, s[0:3], s33 offset:428
371; GCN-NEXT:    buffer_load_dword v8, off, s[0:3], s33 offset:576 ; 4-byte Folded Reload
372; GCN-NEXT:    buffer_load_dword v9, off, s[0:3], s33 offset:580 ; 4-byte Folded Reload
373; GCN-NEXT:    buffer_load_dword v10, off, s[0:3], s33 offset:584 ; 4-byte Folded Reload
374; GCN-NEXT:    buffer_load_dword v11, off, s[0:3], s33 offset:588 ; 4-byte Folded Reload
375; GCN-NEXT:    buffer_load_dword v12, off, s[0:3], s33 offset:592 ; 4-byte Folded Reload
376; GCN-NEXT:    buffer_load_dword v13, off, s[0:3], s33 offset:596 ; 4-byte Folded Reload
377; GCN-NEXT:    buffer_load_dword v14, off, s[0:3], s33 offset:600 ; 4-byte Folded Reload
378; GCN-NEXT:    buffer_load_dword v15, off, s[0:3], s33 offset:604 ; 4-byte Folded Reload
379; GCN-NEXT:    buffer_load_dword v16, off, s[0:3], s33 offset:608 ; 4-byte Folded Reload
380; GCN-NEXT:    buffer_load_dword v17, off, s[0:3], s33 offset:612 ; 4-byte Folded Reload
381; GCN-NEXT:    buffer_load_dword v18, off, s[0:3], s33 offset:616 ; 4-byte Folded Reload
382; GCN-NEXT:    buffer_load_dword v19, off, s[0:3], s33 offset:620 ; 4-byte Folded Reload
383; GCN-NEXT:    buffer_load_dword v20, off, s[0:3], s33 offset:624 ; 4-byte Folded Reload
384; GCN-NEXT:    buffer_load_dword v21, off, s[0:3], s33 offset:628 ; 4-byte Folded Reload
385; GCN-NEXT:    buffer_load_dword v22, off, s[0:3], s33 offset:632 ; 4-byte Folded Reload
386; GCN-NEXT:    buffer_load_dword v23, off, s[0:3], s33 offset:636 ; 4-byte Folded Reload
387; GCN-NEXT:    s_waitcnt vmcnt(0)
388; GCN-NEXT:    v_mov_b32_e32 v12, v20
389; GCN-NEXT:    v_mov_b32_e32 v13, v21
390; GCN-NEXT:    v_mov_b32_e32 v14, v22
391; GCN-NEXT:    v_mov_b32_e32 v15, v23
392; GCN-NEXT:    buffer_store_dword v12, off, s[0:3], s33 offset:432
393; GCN-NEXT:    buffer_store_dword v13, off, s[0:3], s33 offset:436
394; GCN-NEXT:    buffer_store_dword v14, off, s[0:3], s33 offset:440
395; GCN-NEXT:    buffer_store_dword v15, off, s[0:3], s33 offset:444
396; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:448
397; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:452
398; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:456
399; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:460
400; GCN-NEXT:    buffer_store_dword v4, off, s[0:3], s33 offset:464
401; GCN-NEXT:    buffer_store_dword v5, off, s[0:3], s33 offset:468
402; GCN-NEXT:    buffer_store_dword v6, off, s[0:3], s33 offset:472
403; GCN-NEXT:    buffer_store_dword v7, off, s[0:3], s33 offset:476
404; GCN-NEXT:    buffer_load_dword v3, off, s[0:3], s33 offset:512 ; 4-byte Folded Reload
405; GCN-NEXT:    buffer_load_dword v4, off, s[0:3], s33 offset:516 ; 4-byte Folded Reload
406; GCN-NEXT:    buffer_load_dword v5, off, s[0:3], s33 offset:520 ; 4-byte Folded Reload
407; GCN-NEXT:    buffer_load_dword v6, off, s[0:3], s33 offset:524 ; 4-byte Folded Reload
408; GCN-NEXT:    buffer_load_dword v7, off, s[0:3], s33 offset:528 ; 4-byte Folded Reload
409; GCN-NEXT:    buffer_load_dword v8, off, s[0:3], s33 offset:532 ; 4-byte Folded Reload
410; GCN-NEXT:    buffer_load_dword v9, off, s[0:3], s33 offset:536 ; 4-byte Folded Reload
411; GCN-NEXT:    buffer_load_dword v10, off, s[0:3], s33 offset:540 ; 4-byte Folded Reload
412; GCN-NEXT:    buffer_load_dword v11, off, s[0:3], s33 offset:544 ; 4-byte Folded Reload
413; GCN-NEXT:    buffer_load_dword v12, off, s[0:3], s33 offset:548 ; 4-byte Folded Reload
414; GCN-NEXT:    buffer_load_dword v13, off, s[0:3], s33 offset:552 ; 4-byte Folded Reload
415; GCN-NEXT:    buffer_load_dword v14, off, s[0:3], s33 offset:556 ; 4-byte Folded Reload
416; GCN-NEXT:    buffer_load_dword v15, off, s[0:3], s33 offset:560 ; 4-byte Folded Reload
417; GCN-NEXT:    buffer_load_dword v16, off, s[0:3], s33 offset:564 ; 4-byte Folded Reload
418; GCN-NEXT:    buffer_load_dword v17, off, s[0:3], s33 offset:568 ; 4-byte Folded Reload
419; GCN-NEXT:    buffer_load_dword v18, off, s[0:3], s33 offset:572 ; 4-byte Folded Reload
420; GCN-NEXT:    s_waitcnt vmcnt(0)
421; GCN-NEXT:    v_mov_b32_e32 v8, v11
422; GCN-NEXT:    v_mov_b32_e32 v9, v12
423; GCN-NEXT:    v_mov_b32_e32 v10, v13
424; GCN-NEXT:    v_mov_b32_e32 v11, v14
425; GCN-NEXT:    buffer_store_dword v8, off, s[0:3], s33 offset:480
426; GCN-NEXT:    buffer_store_dword v9, off, s[0:3], s33 offset:484
427; GCN-NEXT:    buffer_store_dword v10, off, s[0:3], s33 offset:488
428; GCN-NEXT:    buffer_store_dword v11, off, s[0:3], s33 offset:492
429; GCN-NEXT:    buffer_store_dword v60, off, s[0:3], s33 offset:496
430; GCN-NEXT:    buffer_store_dword v61, off, s[0:3], s33 offset:500
431; GCN-NEXT:    buffer_store_dword v62, off, s[0:3], s33 offset:504
432; GCN-NEXT:    buffer_store_dword v63, off, s[0:3], s33 offset:508
433; GCN-NEXT:    v_lshrrev_b32_e64 v11, 6, s33
434; GCN-NEXT:    v_add_u32_e32 v11, 0x100, v11
435; GCN-NEXT:    v_add_u32_e32 v0, v11, v0
436; GCN-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen
437; GCN-NEXT:    buffer_load_dword v63, off, s[0:3], s33 ; 4-byte Folded Reload
438; GCN-NEXT:    buffer_load_dword v62, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload
439; GCN-NEXT:    buffer_load_dword v61, off, s[0:3], s33 offset:8 ; 4-byte Folded Reload
440; GCN-NEXT:    buffer_load_dword v60, off, s[0:3], s33 offset:12 ; 4-byte Folded Reload
441; GCN-NEXT:    buffer_load_dword v59, off, s[0:3], s33 offset:16 ; 4-byte Folded Reload
442; GCN-NEXT:    buffer_load_dword v58, off, s[0:3], s33 offset:20 ; 4-byte Folded Reload
443; GCN-NEXT:    buffer_load_dword v57, off, s[0:3], s33 offset:24 ; 4-byte Folded Reload
444; GCN-NEXT:    buffer_load_dword v56, off, s[0:3], s33 offset:28 ; 4-byte Folded Reload
445; GCN-NEXT:    buffer_load_dword v47, off, s[0:3], s33 offset:32 ; 4-byte Folded Reload
446; GCN-NEXT:    buffer_load_dword v46, off, s[0:3], s33 offset:36 ; 4-byte Folded Reload
447; GCN-NEXT:    buffer_load_dword v45, off, s[0:3], s33 offset:40 ; 4-byte Folded Reload
448; GCN-NEXT:    buffer_load_dword v44, off, s[0:3], s33 offset:44 ; 4-byte Folded Reload
449; GCN-NEXT:    buffer_load_dword v43, off, s[0:3], s33 offset:48 ; 4-byte Folded Reload
450; GCN-NEXT:    buffer_load_dword v42, off, s[0:3], s33 offset:52 ; 4-byte Folded Reload
451; GCN-NEXT:    buffer_load_dword v41, off, s[0:3], s33 offset:56 ; 4-byte Folded Reload
452; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 offset:60 ; 4-byte Folded Reload
453; GCN-NEXT:    s_mov_b32 s33, s6
454; GCN-NEXT:    s_waitcnt vmcnt(16)
455; GCN-NEXT:    v_lshrrev_b32_e32 v0, v1, v0
456; GCN-NEXT:    s_waitcnt vmcnt(0)
457; GCN-NEXT:    s_setpc_b64 s[30:31]
458  %vec = load <128 x i16>, <128 x i16> addrspace(1)* %ptr
459  %elt = extractelement <128 x i16> %vec, i32 %idx
460  ret i16 %elt
461}
462
463define i64 @v_extract_v32i64_varidx(<32 x i64> addrspace(1)* %ptr, i32 %idx) {
464; GCN-LABEL: v_extract_v32i64_varidx:
465; GCN:       ; %bb.0:
466; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
467; GCN-NEXT:    s_mov_b32 s6, s33
468; GCN-NEXT:    s_add_i32 s33, s32, 0x3fc0
469; GCN-NEXT:    s_and_b32 s33, s33, 0xffffc000
470; GCN-NEXT:    v_add_co_u32_e32 v3, vcc, 64, v0
471; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:60 ; 4-byte Folded Spill
472; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:56 ; 4-byte Folded Spill
473; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:52 ; 4-byte Folded Spill
474; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:48 ; 4-byte Folded Spill
475; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:44 ; 4-byte Folded Spill
476; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:40 ; 4-byte Folded Spill
477; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:36 ; 4-byte Folded Spill
478; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:32 ; 4-byte Folded Spill
479; GCN-NEXT:    buffer_store_dword v56, off, s[0:3], s33 offset:28 ; 4-byte Folded Spill
480; GCN-NEXT:    buffer_store_dword v57, off, s[0:3], s33 offset:24 ; 4-byte Folded Spill
481; GCN-NEXT:    buffer_store_dword v58, off, s[0:3], s33 offset:20 ; 4-byte Folded Spill
482; GCN-NEXT:    buffer_store_dword v59, off, s[0:3], s33 offset:16 ; 4-byte Folded Spill
483; GCN-NEXT:    buffer_store_dword v60, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill
484; GCN-NEXT:    buffer_store_dword v61, off, s[0:3], s33 offset:8 ; 4-byte Folded Spill
485; GCN-NEXT:    buffer_store_dword v62, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
486; GCN-NEXT:    buffer_store_dword v63, off, s[0:3], s33 ; 4-byte Folded Spill
487; GCN-NEXT:    v_addc_co_u32_e32 v4, vcc, 0, v1, vcc
488; GCN-NEXT:    s_movk_i32 s4, 0x80
489; GCN-NEXT:    global_load_dwordx4 v[8:11], v[3:4], off offset:16
490; GCN-NEXT:    global_load_dwordx4 v[12:15], v[3:4], off offset:32
491; GCN-NEXT:    global_load_dwordx4 v[56:59], v[3:4], off offset:48
492; GCN-NEXT:    s_mov_b32 s5, 0
493; GCN-NEXT:    v_mov_b32_e32 v3, s4
494; GCN-NEXT:    v_mov_b32_e32 v4, s5
495; GCN-NEXT:    v_add_co_u32_e32 v3, vcc, v0, v3
496; GCN-NEXT:    v_addc_co_u32_e32 v4, vcc, v1, v4, vcc
497; GCN-NEXT:    global_load_dwordx4 v[16:19], v[0:1], off
498; GCN-NEXT:    global_load_dwordx4 v[20:23], v[0:1], off offset:16
499; GCN-NEXT:    global_load_dwordx4 v[24:27], v[0:1], off offset:32
500; GCN-NEXT:    global_load_dwordx4 v[28:31], v[0:1], off offset:48
501; GCN-NEXT:    global_load_dwordx4 v[32:35], v[0:1], off offset:64
502; GCN-NEXT:    global_load_dwordx4 v[36:39], v[0:1], off offset:128
503; GCN-NEXT:    global_load_dwordx4 v[40:43], v[0:1], off offset:192
504; GCN-NEXT:    global_load_dwordx4 v[44:47], v[3:4], off offset:16
505; GCN-NEXT:    global_load_dwordx4 v[52:55], v[3:4], off offset:32
506; GCN-NEXT:    global_load_dwordx4 v[48:51], v[3:4], off offset:48
507; GCN-NEXT:    s_movk_i32 s4, 0xc0
508; GCN-NEXT:    v_mov_b32_e32 v6, s5
509; GCN-NEXT:    v_mov_b32_e32 v5, s4
510; GCN-NEXT:    v_add_co_u32_e32 v60, vcc, v0, v5
511; GCN-NEXT:    v_addc_co_u32_e32 v61, vcc, v1, v6, vcc
512; GCN-NEXT:    v_and_b32_e32 v0, 31, v2
513; GCN-NEXT:    v_lshrrev_b32_e64 v2, 6, s33
514; GCN-NEXT:    v_lshlrev_b32_e32 v0, 3, v0
515; GCN-NEXT:    v_add_u32_e32 v2, 0x100, v2
516; GCN-NEXT:    v_add_u32_e32 v1, v2, v0
517; GCN-NEXT:    s_add_i32 s32, s32, 0x10000
518; GCN-NEXT:    s_add_i32 s32, s32, 0xffff0000
519; GCN-NEXT:    s_waitcnt vmcnt(0)
520; GCN-NEXT:    buffer_store_dword v36, off, s[0:3], s33 offset:576 ; 4-byte Folded Spill
521; GCN-NEXT:    s_waitcnt vmcnt(0)
522; GCN-NEXT:    buffer_store_dword v37, off, s[0:3], s33 offset:580 ; 4-byte Folded Spill
523; GCN-NEXT:    buffer_store_dword v38, off, s[0:3], s33 offset:584 ; 4-byte Folded Spill
524; GCN-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:588 ; 4-byte Folded Spill
525; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:592 ; 4-byte Folded Spill
526; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:596 ; 4-byte Folded Spill
527; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:600 ; 4-byte Folded Spill
528; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:604 ; 4-byte Folded Spill
529; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:608 ; 4-byte Folded Spill
530; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:612 ; 4-byte Folded Spill
531; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:616 ; 4-byte Folded Spill
532; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:620 ; 4-byte Folded Spill
533; GCN-NEXT:    buffer_store_dword v48, off, s[0:3], s33 offset:624 ; 4-byte Folded Spill
534; GCN-NEXT:    buffer_store_dword v49, off, s[0:3], s33 offset:628 ; 4-byte Folded Spill
535; GCN-NEXT:    buffer_store_dword v50, off, s[0:3], s33 offset:632 ; 4-byte Folded Spill
536; GCN-NEXT:    buffer_store_dword v51, off, s[0:3], s33 offset:636 ; 4-byte Folded Spill
537; GCN-NEXT:    global_load_dwordx4 v[4:7], v[60:61], off offset:16
538; GCN-NEXT:    global_load_dwordx4 v[48:51], v[60:61], off offset:32
539; GCN-NEXT:    s_waitcnt vmcnt(0)
540; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:512 ; 4-byte Folded Spill
541; GCN-NEXT:    s_waitcnt vmcnt(0)
542; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:516 ; 4-byte Folded Spill
543; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:520 ; 4-byte Folded Spill
544; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:524 ; 4-byte Folded Spill
545; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:528 ; 4-byte Folded Spill
546; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:532 ; 4-byte Folded Spill
547; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:536 ; 4-byte Folded Spill
548; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:540 ; 4-byte Folded Spill
549; GCN-NEXT:    buffer_store_dword v48, off, s[0:3], s33 offset:544 ; 4-byte Folded Spill
550; GCN-NEXT:    buffer_store_dword v49, off, s[0:3], s33 offset:548 ; 4-byte Folded Spill
551; GCN-NEXT:    buffer_store_dword v50, off, s[0:3], s33 offset:552 ; 4-byte Folded Spill
552; GCN-NEXT:    buffer_store_dword v51, off, s[0:3], s33 offset:556 ; 4-byte Folded Spill
553; GCN-NEXT:    buffer_store_dword v52, off, s[0:3], s33 offset:560 ; 4-byte Folded Spill
554; GCN-NEXT:    buffer_store_dword v53, off, s[0:3], s33 offset:564 ; 4-byte Folded Spill
555; GCN-NEXT:    buffer_store_dword v54, off, s[0:3], s33 offset:568 ; 4-byte Folded Spill
556; GCN-NEXT:    buffer_store_dword v55, off, s[0:3], s33 offset:572 ; 4-byte Folded Spill
557; GCN-NEXT:    global_load_dwordx4 v[60:63], v[60:61], off offset:48
558; GCN-NEXT:    buffer_store_dword v16, off, s[0:3], s33 offset:256
559; GCN-NEXT:    buffer_store_dword v17, off, s[0:3], s33 offset:260
560; GCN-NEXT:    buffer_store_dword v18, off, s[0:3], s33 offset:264
561; GCN-NEXT:    buffer_store_dword v19, off, s[0:3], s33 offset:268
562; GCN-NEXT:    buffer_store_dword v20, off, s[0:3], s33 offset:272
563; GCN-NEXT:    buffer_store_dword v21, off, s[0:3], s33 offset:276
564; GCN-NEXT:    buffer_store_dword v22, off, s[0:3], s33 offset:280
565; GCN-NEXT:    buffer_store_dword v23, off, s[0:3], s33 offset:284
566; GCN-NEXT:    buffer_store_dword v24, off, s[0:3], s33 offset:288
567; GCN-NEXT:    buffer_store_dword v25, off, s[0:3], s33 offset:292
568; GCN-NEXT:    buffer_store_dword v26, off, s[0:3], s33 offset:296
569; GCN-NEXT:    buffer_store_dword v27, off, s[0:3], s33 offset:300
570; GCN-NEXT:    buffer_store_dword v28, off, s[0:3], s33 offset:304
571; GCN-NEXT:    buffer_store_dword v29, off, s[0:3], s33 offset:308
572; GCN-NEXT:    buffer_store_dword v30, off, s[0:3], s33 offset:312
573; GCN-NEXT:    buffer_store_dword v31, off, s[0:3], s33 offset:316
574; GCN-NEXT:    buffer_store_dword v32, off, s[0:3], s33 offset:320
575; GCN-NEXT:    buffer_store_dword v33, off, s[0:3], s33 offset:324
576; GCN-NEXT:    buffer_store_dword v34, off, s[0:3], s33 offset:328
577; GCN-NEXT:    buffer_store_dword v35, off, s[0:3], s33 offset:332
578; GCN-NEXT:    buffer_store_dword v36, off, s[0:3], s33 offset:384
579; GCN-NEXT:    buffer_store_dword v37, off, s[0:3], s33 offset:388
580; GCN-NEXT:    buffer_store_dword v38, off, s[0:3], s33 offset:392
581; GCN-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:396
582; GCN-NEXT:    buffer_store_dword v8, off, s[0:3], s33 offset:336
583; GCN-NEXT:    buffer_store_dword v9, off, s[0:3], s33 offset:340
584; GCN-NEXT:    buffer_store_dword v10, off, s[0:3], s33 offset:344
585; GCN-NEXT:    buffer_store_dword v11, off, s[0:3], s33 offset:348
586; GCN-NEXT:    buffer_store_dword v12, off, s[0:3], s33 offset:352
587; GCN-NEXT:    buffer_store_dword v13, off, s[0:3], s33 offset:356
588; GCN-NEXT:    buffer_store_dword v14, off, s[0:3], s33 offset:360
589; GCN-NEXT:    buffer_store_dword v15, off, s[0:3], s33 offset:364
590; GCN-NEXT:    buffer_store_dword v56, off, s[0:3], s33 offset:368
591; GCN-NEXT:    buffer_store_dword v57, off, s[0:3], s33 offset:372
592; GCN-NEXT:    buffer_store_dword v58, off, s[0:3], s33 offset:376
593; GCN-NEXT:    buffer_store_dword v59, off, s[0:3], s33 offset:380
594; GCN-NEXT:    buffer_store_dword v44, off, s[0:3], s33 offset:400
595; GCN-NEXT:    buffer_store_dword v45, off, s[0:3], s33 offset:404
596; GCN-NEXT:    buffer_store_dword v46, off, s[0:3], s33 offset:408
597; GCN-NEXT:    buffer_store_dword v47, off, s[0:3], s33 offset:412
598; GCN-NEXT:    buffer_store_dword v52, off, s[0:3], s33 offset:416
599; GCN-NEXT:    buffer_store_dword v53, off, s[0:3], s33 offset:420
600; GCN-NEXT:    buffer_store_dword v54, off, s[0:3], s33 offset:424
601; GCN-NEXT:    buffer_store_dword v55, off, s[0:3], s33 offset:428
602; GCN-NEXT:    buffer_load_dword v8, off, s[0:3], s33 offset:576 ; 4-byte Folded Reload
603; GCN-NEXT:    buffer_load_dword v9, off, s[0:3], s33 offset:580 ; 4-byte Folded Reload
604; GCN-NEXT:    buffer_load_dword v10, off, s[0:3], s33 offset:584 ; 4-byte Folded Reload
605; GCN-NEXT:    buffer_load_dword v11, off, s[0:3], s33 offset:588 ; 4-byte Folded Reload
606; GCN-NEXT:    buffer_load_dword v12, off, s[0:3], s33 offset:592 ; 4-byte Folded Reload
607; GCN-NEXT:    buffer_load_dword v13, off, s[0:3], s33 offset:596 ; 4-byte Folded Reload
608; GCN-NEXT:    buffer_load_dword v14, off, s[0:3], s33 offset:600 ; 4-byte Folded Reload
609; GCN-NEXT:    buffer_load_dword v15, off, s[0:3], s33 offset:604 ; 4-byte Folded Reload
610; GCN-NEXT:    buffer_load_dword v16, off, s[0:3], s33 offset:608 ; 4-byte Folded Reload
611; GCN-NEXT:    buffer_load_dword v17, off, s[0:3], s33 offset:612 ; 4-byte Folded Reload
612; GCN-NEXT:    buffer_load_dword v18, off, s[0:3], s33 offset:616 ; 4-byte Folded Reload
613; GCN-NEXT:    buffer_load_dword v19, off, s[0:3], s33 offset:620 ; 4-byte Folded Reload
614; GCN-NEXT:    buffer_load_dword v20, off, s[0:3], s33 offset:624 ; 4-byte Folded Reload
615; GCN-NEXT:    buffer_load_dword v21, off, s[0:3], s33 offset:628 ; 4-byte Folded Reload
616; GCN-NEXT:    buffer_load_dword v22, off, s[0:3], s33 offset:632 ; 4-byte Folded Reload
617; GCN-NEXT:    buffer_load_dword v23, off, s[0:3], s33 offset:636 ; 4-byte Folded Reload
618; GCN-NEXT:    s_waitcnt vmcnt(0)
619; GCN-NEXT:    v_mov_b32_e32 v12, v20
620; GCN-NEXT:    v_mov_b32_e32 v13, v21
621; GCN-NEXT:    v_mov_b32_e32 v14, v22
622; GCN-NEXT:    v_mov_b32_e32 v15, v23
623; GCN-NEXT:    buffer_store_dword v12, off, s[0:3], s33 offset:432
624; GCN-NEXT:    buffer_store_dword v13, off, s[0:3], s33 offset:436
625; GCN-NEXT:    buffer_store_dword v14, off, s[0:3], s33 offset:440
626; GCN-NEXT:    buffer_store_dword v15, off, s[0:3], s33 offset:444
627; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:448
628; GCN-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:452
629; GCN-NEXT:    buffer_store_dword v42, off, s[0:3], s33 offset:456
630; GCN-NEXT:    buffer_store_dword v43, off, s[0:3], s33 offset:460
631; GCN-NEXT:    buffer_store_dword v4, off, s[0:3], s33 offset:464
632; GCN-NEXT:    buffer_store_dword v5, off, s[0:3], s33 offset:468
633; GCN-NEXT:    buffer_store_dword v6, off, s[0:3], s33 offset:472
634; GCN-NEXT:    buffer_store_dword v7, off, s[0:3], s33 offset:476
635; GCN-NEXT:    buffer_load_dword v3, off, s[0:3], s33 offset:512 ; 4-byte Folded Reload
636; GCN-NEXT:    buffer_load_dword v4, off, s[0:3], s33 offset:516 ; 4-byte Folded Reload
637; GCN-NEXT:    buffer_load_dword v5, off, s[0:3], s33 offset:520 ; 4-byte Folded Reload
638; GCN-NEXT:    buffer_load_dword v6, off, s[0:3], s33 offset:524 ; 4-byte Folded Reload
639; GCN-NEXT:    buffer_load_dword v7, off, s[0:3], s33 offset:528 ; 4-byte Folded Reload
640; GCN-NEXT:    buffer_load_dword v8, off, s[0:3], s33 offset:532 ; 4-byte Folded Reload
641; GCN-NEXT:    buffer_load_dword v9, off, s[0:3], s33 offset:536 ; 4-byte Folded Reload
642; GCN-NEXT:    buffer_load_dword v10, off, s[0:3], s33 offset:540 ; 4-byte Folded Reload
643; GCN-NEXT:    buffer_load_dword v11, off, s[0:3], s33 offset:544 ; 4-byte Folded Reload
644; GCN-NEXT:    buffer_load_dword v12, off, s[0:3], s33 offset:548 ; 4-byte Folded Reload
645; GCN-NEXT:    buffer_load_dword v13, off, s[0:3], s33 offset:552 ; 4-byte Folded Reload
646; GCN-NEXT:    buffer_load_dword v14, off, s[0:3], s33 offset:556 ; 4-byte Folded Reload
647; GCN-NEXT:    buffer_load_dword v15, off, s[0:3], s33 offset:560 ; 4-byte Folded Reload
648; GCN-NEXT:    buffer_load_dword v16, off, s[0:3], s33 offset:564 ; 4-byte Folded Reload
649; GCN-NEXT:    buffer_load_dword v17, off, s[0:3], s33 offset:568 ; 4-byte Folded Reload
650; GCN-NEXT:    buffer_load_dword v18, off, s[0:3], s33 offset:572 ; 4-byte Folded Reload
651; GCN-NEXT:    s_waitcnt vmcnt(0)
652; GCN-NEXT:    v_mov_b32_e32 v8, v11
653; GCN-NEXT:    v_mov_b32_e32 v9, v12
654; GCN-NEXT:    v_mov_b32_e32 v10, v13
655; GCN-NEXT:    v_mov_b32_e32 v11, v14
656; GCN-NEXT:    buffer_store_dword v8, off, s[0:3], s33 offset:480
657; GCN-NEXT:    buffer_store_dword v9, off, s[0:3], s33 offset:484
658; GCN-NEXT:    buffer_store_dword v10, off, s[0:3], s33 offset:488
659; GCN-NEXT:    buffer_store_dword v11, off, s[0:3], s33 offset:492
660; GCN-NEXT:    buffer_store_dword v60, off, s[0:3], s33 offset:496
661; GCN-NEXT:    buffer_store_dword v61, off, s[0:3], s33 offset:500
662; GCN-NEXT:    buffer_store_dword v62, off, s[0:3], s33 offset:504
663; GCN-NEXT:    buffer_store_dword v63, off, s[0:3], s33 offset:508
664; GCN-NEXT:    buffer_load_dword v0, v1, s[0:3], 0 offen
665; GCN-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:4
666; GCN-NEXT:    buffer_load_dword v63, off, s[0:3], s33 ; 4-byte Folded Reload
667; GCN-NEXT:    buffer_load_dword v62, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload
668; GCN-NEXT:    buffer_load_dword v61, off, s[0:3], s33 offset:8 ; 4-byte Folded Reload
669; GCN-NEXT:    buffer_load_dword v60, off, s[0:3], s33 offset:12 ; 4-byte Folded Reload
670; GCN-NEXT:    buffer_load_dword v59, off, s[0:3], s33 offset:16 ; 4-byte Folded Reload
671; GCN-NEXT:    buffer_load_dword v58, off, s[0:3], s33 offset:20 ; 4-byte Folded Reload
672; GCN-NEXT:    buffer_load_dword v57, off, s[0:3], s33 offset:24 ; 4-byte Folded Reload
673; GCN-NEXT:    buffer_load_dword v56, off, s[0:3], s33 offset:28 ; 4-byte Folded Reload
674; GCN-NEXT:    buffer_load_dword v47, off, s[0:3], s33 offset:32 ; 4-byte Folded Reload
675; GCN-NEXT:    buffer_load_dword v46, off, s[0:3], s33 offset:36 ; 4-byte Folded Reload
676; GCN-NEXT:    buffer_load_dword v45, off, s[0:3], s33 offset:40 ; 4-byte Folded Reload
677; GCN-NEXT:    buffer_load_dword v44, off, s[0:3], s33 offset:44 ; 4-byte Folded Reload
678; GCN-NEXT:    buffer_load_dword v43, off, s[0:3], s33 offset:48 ; 4-byte Folded Reload
679; GCN-NEXT:    buffer_load_dword v42, off, s[0:3], s33 offset:52 ; 4-byte Folded Reload
680; GCN-NEXT:    buffer_load_dword v41, off, s[0:3], s33 offset:56 ; 4-byte Folded Reload
681; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 offset:60 ; 4-byte Folded Reload
682; GCN-NEXT:    s_mov_b32 s33, s6
683; GCN-NEXT:    s_waitcnt vmcnt(0)
684; GCN-NEXT:    s_setpc_b64 s[30:31]
685  %vec = load <32 x i64>, <32 x i64> addrspace(1)* %ptr
686  %elt = extractelement <32 x i64> %vec, i32 %idx
687  ret i64 %elt
688}
689