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