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