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