xref: /llvm-project/llvm/test/CodeGen/AMDGPU/tuple-allocation-failure.ll (revision eeac0ffaf46cf9f9b0f680b9940cc4b68a0286d8)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -greedy-regclass-priority-trumps-globalness=1 -o - %s | FileCheck -check-prefixes=GFX90A,GLOBALNESS1 %s
3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -greedy-regclass-priority-trumps-globalness=0 -o - %s | FileCheck -check-prefixes=GFX90A,GLOBALNESS0 %s
4
5declare void @wobble()
6
7define internal fastcc void @widget() {
8; GFX90A-LABEL: widget:
9; GFX90A:       ; %bb.0: ; %bb
10; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11; GFX90A-NEXT:    s_mov_b32 s16, s33
12; GFX90A-NEXT:    s_mov_b32 s33, s32
13; GFX90A-NEXT:    s_or_saveexec_b64 s[18:19], -1
14; GFX90A-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill
15; GFX90A-NEXT:    s_mov_b64 exec, s[18:19]
16; GFX90A-NEXT:    s_addk_i32 s32, 0x400
17; GFX90A-NEXT:    v_writelane_b32 v40, s16, 2
18; GFX90A-NEXT:    s_getpc_b64 s[16:17]
19; GFX90A-NEXT:    s_add_u32 s16, s16, wobble@gotpcrel32@lo+4
20; GFX90A-NEXT:    s_addc_u32 s17, s17, wobble@gotpcrel32@hi+12
21; GFX90A-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0
22; GFX90A-NEXT:    v_writelane_b32 v40, s30, 0
23; GFX90A-NEXT:    v_writelane_b32 v40, s31, 1
24; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)
25; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[16:17]
26bb:
27  tail call void @wobble()
28  unreachable
29}
30
31define amdgpu_kernel void @kernel(ptr addrspace(1) %arg1.global, i1 %tmp3.i.i, i32 %tmp5.i.i, i32 %tmp427.i, i1 %tmp438.i, double %tmp27.i, i1 %tmp48.i) {
32; GLOBALNESS1-LABEL: kernel:
33; GLOBALNESS1:       ; %bb.0: ; %bb
34; GLOBALNESS1-NEXT:    s_mov_b64 s[36:37], s[6:7]
35; GLOBALNESS1-NEXT:    s_load_dwordx4 s[76:79], s[8:9], 0x0
36; GLOBALNESS1-NEXT:    s_load_dword s6, s[8:9], 0x14
37; GLOBALNESS1-NEXT:    v_mov_b32_e32 v41, v0
38; GLOBALNESS1-NEXT:    v_mov_b32_e32 v42, 0
39; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[0:1], 0, 0
40; GLOBALNESS1-NEXT:    global_store_dword v[0:1], v42, off
41; GLOBALNESS1-NEXT:    s_waitcnt lgkmcnt(0)
42; GLOBALNESS1-NEXT:    global_load_dword v2, v42, s[76:77]
43; GLOBALNESS1-NEXT:    s_mov_b64 s[40:41], s[4:5]
44; GLOBALNESS1-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x18
45; GLOBALNESS1-NEXT:    s_load_dword s7, s[8:9], 0x20
46; GLOBALNESS1-NEXT:    s_add_u32 flat_scratch_lo, s12, s17
47; GLOBALNESS1-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0
48; GLOBALNESS1-NEXT:    s_add_u32 s0, s0, s17
49; GLOBALNESS1-NEXT:    v_mov_b32_e32 v0, 0
50; GLOBALNESS1-NEXT:    s_addc_u32 s1, s1, 0
51; GLOBALNESS1-NEXT:    v_mov_b32_e32 v1, 0x40994400
52; GLOBALNESS1-NEXT:    s_bitcmp1_b32 s78, 0
53; GLOBALNESS1-NEXT:    s_waitcnt lgkmcnt(0)
54; GLOBALNESS1-NEXT:    v_cmp_ngt_f64_e32 vcc, s[4:5], v[0:1]
55; GLOBALNESS1-NEXT:    v_cmp_ngt_f64_e64 s[4:5], s[4:5], 0
56; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]
57; GLOBALNESS1-NEXT:    s_cselect_b64 s[4:5], -1, 0
58; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]
59; GLOBALNESS1-NEXT:    s_xor_b64 s[4:5], s[4:5], -1
60; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
61; GLOBALNESS1-NEXT:    s_bitcmp1_b32 s6, 0
62; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[42:43], 1, v0
63; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
64; GLOBALNESS1-NEXT:    s_cselect_b64 s[4:5], -1, 0
65; GLOBALNESS1-NEXT:    s_xor_b64 s[4:5], s[4:5], -1
66; GLOBALNESS1-NEXT:    s_bitcmp1_b32 s7, 0
67; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[48:49], 1, v0
68; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
69; GLOBALNESS1-NEXT:    s_cselect_b64 s[4:5], -1, 0
70; GLOBALNESS1-NEXT:    s_xor_b64 s[4:5], s[4:5], -1
71; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[50:51], 1, v0
72; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
73; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[52:53], 1, v0
74; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[44:45], 1, v1
75; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[46:47], 1, v3
76; GLOBALNESS1-NEXT:    s_mov_b32 s70, s16
77; GLOBALNESS1-NEXT:    s_mov_b64 s[38:39], s[8:9]
78; GLOBALNESS1-NEXT:    s_mov_b32 s71, s15
79; GLOBALNESS1-NEXT:    s_mov_b32 s72, s14
80; GLOBALNESS1-NEXT:    s_mov_b64 s[34:35], s[10:11]
81; GLOBALNESS1-NEXT:    s_mov_b32 s32, 0
82; GLOBALNESS1-NEXT:    ; implicit-def: $vgpr44_vgpr45
83; GLOBALNESS1-NEXT:    s_waitcnt vmcnt(0)
84; GLOBALNESS1-NEXT:    v_cmp_gt_i32_e32 vcc, 0, v2
85; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
86; GLOBALNESS1-NEXT:    v_cmp_gt_i32_e32 vcc, 1, v2
87; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
88; GLOBALNESS1-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v2
89; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
90; GLOBALNESS1-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v2
91; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
92; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[54:55], 1, v0
93; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[56:57], 1, v1
94; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[58:59], 1, v3
95; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[60:61], 1, v2
96; GLOBALNESS1-NEXT:    s_branch .LBB1_4
97; GLOBALNESS1-NEXT:  .LBB1_1: ; %bb70.i
98; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
99; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[60:61]
100; GLOBALNESS1-NEXT:    s_cbranch_vccz .LBB1_29
101; GLOBALNESS1-NEXT:  .LBB1_2: ; %Flow15
102; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
103; GLOBALNESS1-NEXT:    s_or_b64 exec, exec, s[4:5]
104; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], 0
105; GLOBALNESS1-NEXT:    ; implicit-def: $sgpr4_sgpr5
106; GLOBALNESS1-NEXT:  .LBB1_3: ; %Flow28
107; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
108; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[6:7]
109; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[44:45], v[0:1], v[0:1] op_sel:[0,1]
110; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_30
111; GLOBALNESS1-NEXT:  .LBB1_4: ; %bb5
112; GLOBALNESS1-NEXT:    ; =>This Loop Header: Depth=1
113; GLOBALNESS1-NEXT:    ; Child Loop BB1_16 Depth 2
114; GLOBALNESS1-NEXT:    v_mov_b32_e32 v0, 0x80
115; GLOBALNESS1-NEXT:    v_mov_b32_e32 v1, 0
116; GLOBALNESS1-NEXT:    flat_load_dword v40, v[0:1]
117; GLOBALNESS1-NEXT:    s_add_u32 s8, s38, 40
118; GLOBALNESS1-NEXT:    buffer_store_dword v42, off, s[0:3], 0
119; GLOBALNESS1-NEXT:    flat_load_dword v46, v[0:1]
120; GLOBALNESS1-NEXT:    s_addc_u32 s9, s39, 0
121; GLOBALNESS1-NEXT:    s_getpc_b64 s[4:5]
122; GLOBALNESS1-NEXT:    s_add_u32 s4, s4, wobble@gotpcrel32@lo+4
123; GLOBALNESS1-NEXT:    s_addc_u32 s5, s5, wobble@gotpcrel32@hi+12
124; GLOBALNESS1-NEXT:    s_load_dwordx2 s[16:17], s[4:5], 0x0
125; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], s[40:41]
126; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], s[36:37]
127; GLOBALNESS1-NEXT:    s_mov_b64 s[10:11], s[34:35]
128; GLOBALNESS1-NEXT:    s_mov_b32 s12, s72
129; GLOBALNESS1-NEXT:    s_mov_b32 s13, s71
130; GLOBALNESS1-NEXT:    s_mov_b32 s14, s70
131; GLOBALNESS1-NEXT:    v_mov_b32_e32 v31, v41
132; GLOBALNESS1-NEXT:    s_waitcnt lgkmcnt(0)
133; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[16:17]
134; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[46:47]
135; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], -1
136; GLOBALNESS1-NEXT:    ; implicit-def: $sgpr4_sgpr5
137; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_9
138; GLOBALNESS1-NEXT:  ; %bb.5: ; %NodeBlock
139; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
140; GLOBALNESS1-NEXT:    s_cmp_lt_i32 s79, 1
141; GLOBALNESS1-NEXT:    s_cbranch_scc1 .LBB1_7
142; GLOBALNESS1-NEXT:  ; %bb.6: ; %LeafBlock12
143; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
144; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s79, 1
145; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], -1
146; GLOBALNESS1-NEXT:    s_cselect_b64 s[6:7], -1, 0
147; GLOBALNESS1-NEXT:    s_cbranch_execz .LBB1_8
148; GLOBALNESS1-NEXT:    s_branch .LBB1_9
149; GLOBALNESS1-NEXT:  .LBB1_7: ; in Loop: Header=BB1_4 Depth=1
150; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], 0
151; GLOBALNESS1-NEXT:    ; implicit-def: $sgpr4_sgpr5
152; GLOBALNESS1-NEXT:  .LBB1_8: ; %LeafBlock
153; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
154; GLOBALNESS1-NEXT:    s_cmp_lg_u32 s79, 0
155; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], 0
156; GLOBALNESS1-NEXT:    s_cselect_b64 s[6:7], -1, 0
157; GLOBALNESS1-NEXT:  .LBB1_9: ; %Flow25
158; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
159; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[6:7]
160; GLOBALNESS1-NEXT:    s_cbranch_vccz .LBB1_24
161; GLOBALNESS1-NEXT:  ; %bb.10: ; %baz.exit.i
162; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
163; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[2:3], 0, 0
164; GLOBALNESS1-NEXT:    flat_load_dword v0, v[2:3]
165; GLOBALNESS1-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
166; GLOBALNESS1-NEXT:    v_cmp_gt_i32_e64 s[62:63], 0, v0
167; GLOBALNESS1-NEXT:    v_mov_b32_e32 v0, 0
168; GLOBALNESS1-NEXT:    v_mov_b32_e32 v1, 0x3ff00000
169; GLOBALNESS1-NEXT:    s_and_saveexec_b64 s[74:75], s[62:63]
170; GLOBALNESS1-NEXT:    s_cbranch_execz .LBB1_26
171; GLOBALNESS1-NEXT:  ; %bb.11: ; %bb33.i
172; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
173; GLOBALNESS1-NEXT:    global_load_dwordx2 v[0:1], v[2:3], off
174; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[54:55]
175; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_13
176; GLOBALNESS1-NEXT:  ; %bb.12: ; %bb39.i
177; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
178; GLOBALNESS1-NEXT:    v_mov_b32_e32 v43, v42
179; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[2:3], 0, 0
180; GLOBALNESS1-NEXT:    global_store_dwordx2 v[2:3], v[42:43], off
181; GLOBALNESS1-NEXT:  .LBB1_13: ; %bb44.lr.ph.i
182; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
183; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v46
184; GLOBALNESS1-NEXT:    v_cndmask_b32_e32 v2, 0, v40, vcc
185; GLOBALNESS1-NEXT:    s_waitcnt vmcnt(0)
186; GLOBALNESS1-NEXT:    v_cmp_nlt_f64_e32 vcc, 0, v[0:1]
187; GLOBALNESS1-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
188; GLOBALNESS1-NEXT:    v_cmp_eq_u32_e64 s[64:65], 0, v2
189; GLOBALNESS1-NEXT:    v_cmp_ne_u32_e64 s[66:67], 1, v0
190; GLOBALNESS1-NEXT:    s_branch .LBB1_16
191; GLOBALNESS1-NEXT:  .LBB1_14: ; %Flow16
192; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
193; GLOBALNESS1-NEXT:    s_or_b64 exec, exec, s[4:5]
194; GLOBALNESS1-NEXT:  .LBB1_15: ; %bb63.i
195; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
196; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[52:53]
197; GLOBALNESS1-NEXT:    s_cbranch_vccz .LBB1_25
198; GLOBALNESS1-NEXT:  .LBB1_16: ; %bb44.i
199; GLOBALNESS1-NEXT:    ; Parent Loop BB1_4 Depth=1
200; GLOBALNESS1-NEXT:    ; => This Inner Loop Header: Depth=2
201; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[48:49]
202; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_15
203; GLOBALNESS1-NEXT:  ; %bb.17: ; %bb46.i
204; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
205; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[50:51]
206; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_15
207; GLOBALNESS1-NEXT:  ; %bb.18: ; %bb50.i
208; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
209; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[42:43]
210; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_21
211; GLOBALNESS1-NEXT:  ; %bb.19: ; %bb3.i.i
212; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
213; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[44:45]
214; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_21
215; GLOBALNESS1-NEXT:  ; %bb.20: ; %bb6.i.i
216; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
217; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[66:67]
218; GLOBALNESS1-NEXT:  .LBB1_21: ; %spam.exit.i
219; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
220; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[56:57]
221; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_15
222; GLOBALNESS1-NEXT:  ; %bb.22: ; %bb55.i
223; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
224; GLOBALNESS1-NEXT:    s_add_u32 s68, s38, 40
225; GLOBALNESS1-NEXT:    s_addc_u32 s69, s39, 0
226; GLOBALNESS1-NEXT:    s_getpc_b64 s[4:5]
227; GLOBALNESS1-NEXT:    s_add_u32 s4, s4, wobble@gotpcrel32@lo+4
228; GLOBALNESS1-NEXT:    s_addc_u32 s5, s5, wobble@gotpcrel32@hi+12
229; GLOBALNESS1-NEXT:    s_load_dwordx2 s[76:77], s[4:5], 0x0
230; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], s[40:41]
231; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], s[36:37]
232; GLOBALNESS1-NEXT:    s_mov_b64 s[8:9], s[68:69]
233; GLOBALNESS1-NEXT:    s_mov_b64 s[10:11], s[34:35]
234; GLOBALNESS1-NEXT:    s_mov_b32 s12, s72
235; GLOBALNESS1-NEXT:    s_mov_b32 s13, s71
236; GLOBALNESS1-NEXT:    s_mov_b32 s14, s70
237; GLOBALNESS1-NEXT:    v_mov_b32_e32 v31, v41
238; GLOBALNESS1-NEXT:    s_waitcnt lgkmcnt(0)
239; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[76:77]
240; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[46:47], 0, 0
241; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], s[40:41]
242; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], s[36:37]
243; GLOBALNESS1-NEXT:    s_mov_b64 s[8:9], s[68:69]
244; GLOBALNESS1-NEXT:    s_mov_b64 s[10:11], s[34:35]
245; GLOBALNESS1-NEXT:    s_mov_b32 s12, s72
246; GLOBALNESS1-NEXT:    s_mov_b32 s13, s71
247; GLOBALNESS1-NEXT:    s_mov_b32 s14, s70
248; GLOBALNESS1-NEXT:    v_mov_b32_e32 v31, v41
249; GLOBALNESS1-NEXT:    global_store_dwordx2 v[46:47], v[44:45], off
250; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[76:77]
251; GLOBALNESS1-NEXT:    s_and_saveexec_b64 s[4:5], s[64:65]
252; GLOBALNESS1-NEXT:    s_cbranch_execz .LBB1_14
253; GLOBALNESS1-NEXT:  ; %bb.23: ; %bb62.i
254; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_16 Depth=2
255; GLOBALNESS1-NEXT:    v_mov_b32_e32 v43, v42
256; GLOBALNESS1-NEXT:    global_store_dwordx2 v[46:47], v[42:43], off
257; GLOBALNESS1-NEXT:    s_branch .LBB1_14
258; GLOBALNESS1-NEXT:  .LBB1_24: ; in Loop: Header=BB1_4 Depth=1
259; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], -1
260; GLOBALNESS1-NEXT:    ; implicit-def: $vgpr0_vgpr1
261; GLOBALNESS1-NEXT:    s_branch .LBB1_3
262; GLOBALNESS1-NEXT:  .LBB1_25: ; %Flow23
263; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
264; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[0:1], 0, 0
265; GLOBALNESS1-NEXT:  .LBB1_26: ; %Flow24
266; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
267; GLOBALNESS1-NEXT:    s_or_b64 exec, exec, s[74:75]
268; GLOBALNESS1-NEXT:    s_and_saveexec_b64 s[4:5], s[62:63]
269; GLOBALNESS1-NEXT:    s_cbranch_execz .LBB1_2
270; GLOBALNESS1-NEXT:  ; %bb.27: ; %bb67.i
271; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
272; GLOBALNESS1-NEXT:    s_and_b64 vcc, exec, s[58:59]
273; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_1
274; GLOBALNESS1-NEXT:  ; %bb.28: ; %bb69.i
275; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
276; GLOBALNESS1-NEXT:    v_mov_b32_e32 v43, v42
277; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[2:3], 0, 0
278; GLOBALNESS1-NEXT:    global_store_dwordx2 v[2:3], v[42:43], off
279; GLOBALNESS1-NEXT:    s_branch .LBB1_1
280; GLOBALNESS1-NEXT:  .LBB1_29: ; %bb73.i
281; GLOBALNESS1-NEXT:    ; in Loop: Header=BB1_4 Depth=1
282; GLOBALNESS1-NEXT:    v_mov_b32_e32 v43, v42
283; GLOBALNESS1-NEXT:    v_pk_mov_b32 v[2:3], 0, 0
284; GLOBALNESS1-NEXT:    global_store_dwordx2 v[2:3], v[42:43], off
285; GLOBALNESS1-NEXT:    s_branch .LBB1_2
286; GLOBALNESS1-NEXT:  .LBB1_30: ; %loop.exit.guard
287; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
288; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], -1
289; GLOBALNESS1-NEXT:    s_cbranch_vccz .LBB1_32
290; GLOBALNESS1-NEXT:  ; %bb.31: ; %bb7.i.i
291; GLOBALNESS1-NEXT:    s_add_u32 s8, s38, 40
292; GLOBALNESS1-NEXT:    s_addc_u32 s9, s39, 0
293; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], s[40:41]
294; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], s[36:37]
295; GLOBALNESS1-NEXT:    s_mov_b64 s[10:11], s[34:35]
296; GLOBALNESS1-NEXT:    s_mov_b32 s12, s72
297; GLOBALNESS1-NEXT:    s_mov_b32 s13, s71
298; GLOBALNESS1-NEXT:    s_mov_b32 s14, s70
299; GLOBALNESS1-NEXT:    v_mov_b32_e32 v31, v41
300; GLOBALNESS1-NEXT:    s_getpc_b64 s[16:17]
301; GLOBALNESS1-NEXT:    s_add_u32 s16, s16, widget@rel32@lo+4
302; GLOBALNESS1-NEXT:    s_addc_u32 s17, s17, widget@rel32@hi+12
303; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[16:17]
304; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], 0
305; GLOBALNESS1-NEXT:  .LBB1_32: ; %Flow
306; GLOBALNESS1-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
307; GLOBALNESS1-NEXT:    s_cbranch_vccnz .LBB1_34
308; GLOBALNESS1-NEXT:  ; %bb.33: ; %bb11.i.i
309; GLOBALNESS1-NEXT:    s_add_u32 s8, s38, 40
310; GLOBALNESS1-NEXT:    s_addc_u32 s9, s39, 0
311; GLOBALNESS1-NEXT:    s_mov_b64 s[4:5], s[40:41]
312; GLOBALNESS1-NEXT:    s_mov_b64 s[6:7], s[36:37]
313; GLOBALNESS1-NEXT:    s_mov_b64 s[10:11], s[34:35]
314; GLOBALNESS1-NEXT:    s_mov_b32 s12, s72
315; GLOBALNESS1-NEXT:    s_mov_b32 s13, s71
316; GLOBALNESS1-NEXT:    s_mov_b32 s14, s70
317; GLOBALNESS1-NEXT:    v_mov_b32_e32 v31, v41
318; GLOBALNESS1-NEXT:    s_getpc_b64 s[16:17]
319; GLOBALNESS1-NEXT:    s_add_u32 s16, s16, widget@rel32@lo+4
320; GLOBALNESS1-NEXT:    s_addc_u32 s17, s17, widget@rel32@hi+12
321; GLOBALNESS1-NEXT:    s_swappc_b64 s[30:31], s[16:17]
322; GLOBALNESS1-NEXT:  .LBB1_34: ; %UnifiedUnreachableBlock
323;
324; GLOBALNESS0-LABEL: kernel:
325; GLOBALNESS0:       ; %bb.0: ; %bb
326; GLOBALNESS0-NEXT:    s_mov_b64 s[36:37], s[6:7]
327; GLOBALNESS0-NEXT:    s_load_dwordx4 s[72:75], s[8:9], 0x0
328; GLOBALNESS0-NEXT:    s_load_dword s6, s[8:9], 0x14
329; GLOBALNESS0-NEXT:    v_mov_b32_e32 v41, v0
330; GLOBALNESS0-NEXT:    v_mov_b32_e32 v42, 0
331; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[0:1], 0, 0
332; GLOBALNESS0-NEXT:    global_store_dword v[0:1], v42, off
333; GLOBALNESS0-NEXT:    s_waitcnt lgkmcnt(0)
334; GLOBALNESS0-NEXT:    global_load_dword v2, v42, s[72:73]
335; GLOBALNESS0-NEXT:    s_mov_b64 s[40:41], s[4:5]
336; GLOBALNESS0-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x18
337; GLOBALNESS0-NEXT:    s_load_dword s7, s[8:9], 0x20
338; GLOBALNESS0-NEXT:    s_add_u32 flat_scratch_lo, s12, s17
339; GLOBALNESS0-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0
340; GLOBALNESS0-NEXT:    s_add_u32 s0, s0, s17
341; GLOBALNESS0-NEXT:    v_mov_b32_e32 v0, 0
342; GLOBALNESS0-NEXT:    s_addc_u32 s1, s1, 0
343; GLOBALNESS0-NEXT:    v_mov_b32_e32 v1, 0x40994400
344; GLOBALNESS0-NEXT:    s_bitcmp1_b32 s74, 0
345; GLOBALNESS0-NEXT:    s_waitcnt lgkmcnt(0)
346; GLOBALNESS0-NEXT:    v_cmp_ngt_f64_e32 vcc, s[4:5], v[0:1]
347; GLOBALNESS0-NEXT:    v_cmp_ngt_f64_e64 s[4:5], s[4:5], 0
348; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]
349; GLOBALNESS0-NEXT:    s_cselect_b64 s[4:5], -1, 0
350; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]
351; GLOBALNESS0-NEXT:    s_xor_b64 s[4:5], s[4:5], -1
352; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
353; GLOBALNESS0-NEXT:    s_bitcmp1_b32 s6, 0
354; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[42:43], 1, v0
355; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
356; GLOBALNESS0-NEXT:    s_cselect_b64 s[4:5], -1, 0
357; GLOBALNESS0-NEXT:    s_xor_b64 s[4:5], s[4:5], -1
358; GLOBALNESS0-NEXT:    s_bitcmp1_b32 s7, 0
359; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[48:49], 1, v0
360; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
361; GLOBALNESS0-NEXT:    s_cselect_b64 s[4:5], -1, 0
362; GLOBALNESS0-NEXT:    s_xor_b64 s[4:5], s[4:5], -1
363; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[50:51], 1, v0
364; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]
365; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[52:53], 1, v0
366; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[44:45], 1, v1
367; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[46:47], 1, v3
368; GLOBALNESS0-NEXT:    s_mov_b32 s68, s16
369; GLOBALNESS0-NEXT:    s_mov_b64 s[38:39], s[8:9]
370; GLOBALNESS0-NEXT:    s_mov_b32 s69, s15
371; GLOBALNESS0-NEXT:    s_mov_b32 s70, s14
372; GLOBALNESS0-NEXT:    s_mov_b64 s[34:35], s[10:11]
373; GLOBALNESS0-NEXT:    s_mov_b32 s32, 0
374; GLOBALNESS0-NEXT:    ; implicit-def: $vgpr44_vgpr45
375; GLOBALNESS0-NEXT:    s_waitcnt vmcnt(0)
376; GLOBALNESS0-NEXT:    v_cmp_gt_i32_e32 vcc, 0, v2
377; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
378; GLOBALNESS0-NEXT:    v_cmp_gt_i32_e32 vcc, 1, v2
379; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc
380; GLOBALNESS0-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v2
381; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc
382; GLOBALNESS0-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v2
383; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc
384; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[54:55], 1, v0
385; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[56:57], 1, v1
386; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[58:59], 1, v3
387; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[60:61], 1, v2
388; GLOBALNESS0-NEXT:    s_branch .LBB1_4
389; GLOBALNESS0-NEXT:  .LBB1_1: ; %bb70.i
390; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
391; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[60:61]
392; GLOBALNESS0-NEXT:    s_cbranch_vccz .LBB1_29
393; GLOBALNESS0-NEXT:  .LBB1_2: ; %Flow15
394; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
395; GLOBALNESS0-NEXT:    s_or_b64 exec, exec, s[4:5]
396; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], 0
397; GLOBALNESS0-NEXT:    ; implicit-def: $sgpr4_sgpr5
398; GLOBALNESS0-NEXT:  .LBB1_3: ; %Flow28
399; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
400; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[6:7]
401; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[44:45], v[0:1], v[0:1] op_sel:[0,1]
402; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_30
403; GLOBALNESS0-NEXT:  .LBB1_4: ; %bb5
404; GLOBALNESS0-NEXT:    ; =>This Loop Header: Depth=1
405; GLOBALNESS0-NEXT:    ; Child Loop BB1_16 Depth 2
406; GLOBALNESS0-NEXT:    v_mov_b32_e32 v0, 0x80
407; GLOBALNESS0-NEXT:    v_mov_b32_e32 v1, 0
408; GLOBALNESS0-NEXT:    flat_load_dword v40, v[0:1]
409; GLOBALNESS0-NEXT:    s_add_u32 s8, s38, 40
410; GLOBALNESS0-NEXT:    buffer_store_dword v42, off, s[0:3], 0
411; GLOBALNESS0-NEXT:    flat_load_dword v46, v[0:1]
412; GLOBALNESS0-NEXT:    s_addc_u32 s9, s39, 0
413; GLOBALNESS0-NEXT:    s_getpc_b64 s[4:5]
414; GLOBALNESS0-NEXT:    s_add_u32 s4, s4, wobble@gotpcrel32@lo+4
415; GLOBALNESS0-NEXT:    s_addc_u32 s5, s5, wobble@gotpcrel32@hi+12
416; GLOBALNESS0-NEXT:    s_load_dwordx2 s[16:17], s[4:5], 0x0
417; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], s[40:41]
418; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], s[36:37]
419; GLOBALNESS0-NEXT:    s_mov_b64 s[10:11], s[34:35]
420; GLOBALNESS0-NEXT:    s_mov_b32 s12, s70
421; GLOBALNESS0-NEXT:    s_mov_b32 s13, s69
422; GLOBALNESS0-NEXT:    s_mov_b32 s14, s68
423; GLOBALNESS0-NEXT:    v_mov_b32_e32 v31, v41
424; GLOBALNESS0-NEXT:    s_waitcnt lgkmcnt(0)
425; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[16:17]
426; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[46:47]
427; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], -1
428; GLOBALNESS0-NEXT:    ; implicit-def: $sgpr4_sgpr5
429; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_9
430; GLOBALNESS0-NEXT:  ; %bb.5: ; %NodeBlock
431; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
432; GLOBALNESS0-NEXT:    s_cmp_lt_i32 s75, 1
433; GLOBALNESS0-NEXT:    s_cbranch_scc1 .LBB1_7
434; GLOBALNESS0-NEXT:  ; %bb.6: ; %LeafBlock12
435; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
436; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s75, 1
437; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], -1
438; GLOBALNESS0-NEXT:    s_cselect_b64 s[6:7], -1, 0
439; GLOBALNESS0-NEXT:    s_cbranch_execz .LBB1_8
440; GLOBALNESS0-NEXT:    s_branch .LBB1_9
441; GLOBALNESS0-NEXT:  .LBB1_7: ; in Loop: Header=BB1_4 Depth=1
442; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], 0
443; GLOBALNESS0-NEXT:    ; implicit-def: $sgpr4_sgpr5
444; GLOBALNESS0-NEXT:  .LBB1_8: ; %LeafBlock
445; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
446; GLOBALNESS0-NEXT:    s_cmp_lg_u32 s75, 0
447; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], 0
448; GLOBALNESS0-NEXT:    s_cselect_b64 s[6:7], -1, 0
449; GLOBALNESS0-NEXT:  .LBB1_9: ; %Flow25
450; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
451; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[6:7]
452; GLOBALNESS0-NEXT:    s_cbranch_vccz .LBB1_24
453; GLOBALNESS0-NEXT:  ; %bb.10: ; %baz.exit.i
454; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
455; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[2:3], 0, 0
456; GLOBALNESS0-NEXT:    flat_load_dword v0, v[2:3]
457; GLOBALNESS0-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)
458; GLOBALNESS0-NEXT:    v_cmp_gt_i32_e64 s[62:63], 0, v0
459; GLOBALNESS0-NEXT:    v_mov_b32_e32 v0, 0
460; GLOBALNESS0-NEXT:    v_mov_b32_e32 v1, 0x3ff00000
461; GLOBALNESS0-NEXT:    s_and_saveexec_b64 s[76:77], s[62:63]
462; GLOBALNESS0-NEXT:    s_cbranch_execz .LBB1_26
463; GLOBALNESS0-NEXT:  ; %bb.11: ; %bb33.i
464; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
465; GLOBALNESS0-NEXT:    global_load_dwordx2 v[0:1], v[2:3], off
466; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[54:55]
467; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_13
468; GLOBALNESS0-NEXT:  ; %bb.12: ; %bb39.i
469; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
470; GLOBALNESS0-NEXT:    v_mov_b32_e32 v43, v42
471; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[2:3], 0, 0
472; GLOBALNESS0-NEXT:    global_store_dwordx2 v[2:3], v[42:43], off
473; GLOBALNESS0-NEXT:  .LBB1_13: ; %bb44.lr.ph.i
474; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
475; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v46
476; GLOBALNESS0-NEXT:    v_cndmask_b32_e32 v2, 0, v40, vcc
477; GLOBALNESS0-NEXT:    s_waitcnt vmcnt(0)
478; GLOBALNESS0-NEXT:    v_cmp_nlt_f64_e32 vcc, 0, v[0:1]
479; GLOBALNESS0-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc
480; GLOBALNESS0-NEXT:    v_cmp_eq_u32_e64 s[64:65], 0, v2
481; GLOBALNESS0-NEXT:    v_cmp_ne_u32_e64 s[66:67], 1, v0
482; GLOBALNESS0-NEXT:    s_branch .LBB1_16
483; GLOBALNESS0-NEXT:  .LBB1_14: ; %Flow16
484; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
485; GLOBALNESS0-NEXT:    s_or_b64 exec, exec, s[4:5]
486; GLOBALNESS0-NEXT:  .LBB1_15: ; %bb63.i
487; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
488; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[52:53]
489; GLOBALNESS0-NEXT:    s_cbranch_vccz .LBB1_25
490; GLOBALNESS0-NEXT:  .LBB1_16: ; %bb44.i
491; GLOBALNESS0-NEXT:    ; Parent Loop BB1_4 Depth=1
492; GLOBALNESS0-NEXT:    ; => This Inner Loop Header: Depth=2
493; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[48:49]
494; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_15
495; GLOBALNESS0-NEXT:  ; %bb.17: ; %bb46.i
496; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
497; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[50:51]
498; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_15
499; GLOBALNESS0-NEXT:  ; %bb.18: ; %bb50.i
500; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
501; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[42:43]
502; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_21
503; GLOBALNESS0-NEXT:  ; %bb.19: ; %bb3.i.i
504; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
505; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[44:45]
506; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_21
507; GLOBALNESS0-NEXT:  ; %bb.20: ; %bb6.i.i
508; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
509; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[66:67]
510; GLOBALNESS0-NEXT:  .LBB1_21: ; %spam.exit.i
511; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
512; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[56:57]
513; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_15
514; GLOBALNESS0-NEXT:  ; %bb.22: ; %bb55.i
515; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
516; GLOBALNESS0-NEXT:    s_add_u32 s72, s38, 40
517; GLOBALNESS0-NEXT:    s_addc_u32 s73, s39, 0
518; GLOBALNESS0-NEXT:    s_getpc_b64 s[4:5]
519; GLOBALNESS0-NEXT:    s_add_u32 s4, s4, wobble@gotpcrel32@lo+4
520; GLOBALNESS0-NEXT:    s_addc_u32 s5, s5, wobble@gotpcrel32@hi+12
521; GLOBALNESS0-NEXT:    s_load_dwordx2 s[78:79], s[4:5], 0x0
522; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], s[40:41]
523; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], s[36:37]
524; GLOBALNESS0-NEXT:    s_mov_b64 s[8:9], s[72:73]
525; GLOBALNESS0-NEXT:    s_mov_b64 s[10:11], s[34:35]
526; GLOBALNESS0-NEXT:    s_mov_b32 s12, s70
527; GLOBALNESS0-NEXT:    s_mov_b32 s13, s69
528; GLOBALNESS0-NEXT:    s_mov_b32 s14, s68
529; GLOBALNESS0-NEXT:    v_mov_b32_e32 v31, v41
530; GLOBALNESS0-NEXT:    s_waitcnt lgkmcnt(0)
531; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[78:79]
532; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[46:47], 0, 0
533; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], s[40:41]
534; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], s[36:37]
535; GLOBALNESS0-NEXT:    s_mov_b64 s[8:9], s[72:73]
536; GLOBALNESS0-NEXT:    s_mov_b64 s[10:11], s[34:35]
537; GLOBALNESS0-NEXT:    s_mov_b32 s12, s70
538; GLOBALNESS0-NEXT:    s_mov_b32 s13, s69
539; GLOBALNESS0-NEXT:    s_mov_b32 s14, s68
540; GLOBALNESS0-NEXT:    v_mov_b32_e32 v31, v41
541; GLOBALNESS0-NEXT:    global_store_dwordx2 v[46:47], v[44:45], off
542; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[78:79]
543; GLOBALNESS0-NEXT:    s_and_saveexec_b64 s[4:5], s[64:65]
544; GLOBALNESS0-NEXT:    s_cbranch_execz .LBB1_14
545; GLOBALNESS0-NEXT:  ; %bb.23: ; %bb62.i
546; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_16 Depth=2
547; GLOBALNESS0-NEXT:    v_mov_b32_e32 v43, v42
548; GLOBALNESS0-NEXT:    global_store_dwordx2 v[46:47], v[42:43], off
549; GLOBALNESS0-NEXT:    s_branch .LBB1_14
550; GLOBALNESS0-NEXT:  .LBB1_24: ; in Loop: Header=BB1_4 Depth=1
551; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], -1
552; GLOBALNESS0-NEXT:    ; implicit-def: $vgpr0_vgpr1
553; GLOBALNESS0-NEXT:    s_branch .LBB1_3
554; GLOBALNESS0-NEXT:  .LBB1_25: ; %Flow23
555; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
556; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[0:1], 0, 0
557; GLOBALNESS0-NEXT:  .LBB1_26: ; %Flow24
558; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
559; GLOBALNESS0-NEXT:    s_or_b64 exec, exec, s[76:77]
560; GLOBALNESS0-NEXT:    s_and_saveexec_b64 s[4:5], s[62:63]
561; GLOBALNESS0-NEXT:    s_cbranch_execz .LBB1_2
562; GLOBALNESS0-NEXT:  ; %bb.27: ; %bb67.i
563; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
564; GLOBALNESS0-NEXT:    s_and_b64 vcc, exec, s[58:59]
565; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_1
566; GLOBALNESS0-NEXT:  ; %bb.28: ; %bb69.i
567; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
568; GLOBALNESS0-NEXT:    v_mov_b32_e32 v43, v42
569; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[2:3], 0, 0
570; GLOBALNESS0-NEXT:    global_store_dwordx2 v[2:3], v[42:43], off
571; GLOBALNESS0-NEXT:    s_branch .LBB1_1
572; GLOBALNESS0-NEXT:  .LBB1_29: ; %bb73.i
573; GLOBALNESS0-NEXT:    ; in Loop: Header=BB1_4 Depth=1
574; GLOBALNESS0-NEXT:    v_mov_b32_e32 v43, v42
575; GLOBALNESS0-NEXT:    v_pk_mov_b32 v[2:3], 0, 0
576; GLOBALNESS0-NEXT:    global_store_dwordx2 v[2:3], v[42:43], off
577; GLOBALNESS0-NEXT:    s_branch .LBB1_2
578; GLOBALNESS0-NEXT:  .LBB1_30: ; %loop.exit.guard
579; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
580; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], -1
581; GLOBALNESS0-NEXT:    s_cbranch_vccz .LBB1_32
582; GLOBALNESS0-NEXT:  ; %bb.31: ; %bb7.i.i
583; GLOBALNESS0-NEXT:    s_add_u32 s8, s38, 40
584; GLOBALNESS0-NEXT:    s_addc_u32 s9, s39, 0
585; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], s[40:41]
586; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], s[36:37]
587; GLOBALNESS0-NEXT:    s_mov_b64 s[10:11], s[34:35]
588; GLOBALNESS0-NEXT:    s_mov_b32 s12, s70
589; GLOBALNESS0-NEXT:    s_mov_b32 s13, s69
590; GLOBALNESS0-NEXT:    s_mov_b32 s14, s68
591; GLOBALNESS0-NEXT:    v_mov_b32_e32 v31, v41
592; GLOBALNESS0-NEXT:    s_getpc_b64 s[16:17]
593; GLOBALNESS0-NEXT:    s_add_u32 s16, s16, widget@rel32@lo+4
594; GLOBALNESS0-NEXT:    s_addc_u32 s17, s17, widget@rel32@hi+12
595; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[16:17]
596; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], 0
597; GLOBALNESS0-NEXT:  .LBB1_32: ; %Flow
598; GLOBALNESS0-NEXT:    s_andn2_b64 vcc, exec, s[4:5]
599; GLOBALNESS0-NEXT:    s_cbranch_vccnz .LBB1_34
600; GLOBALNESS0-NEXT:  ; %bb.33: ; %bb11.i.i
601; GLOBALNESS0-NEXT:    s_add_u32 s8, s38, 40
602; GLOBALNESS0-NEXT:    s_addc_u32 s9, s39, 0
603; GLOBALNESS0-NEXT:    s_mov_b64 s[4:5], s[40:41]
604; GLOBALNESS0-NEXT:    s_mov_b64 s[6:7], s[36:37]
605; GLOBALNESS0-NEXT:    s_mov_b64 s[10:11], s[34:35]
606; GLOBALNESS0-NEXT:    s_mov_b32 s12, s70
607; GLOBALNESS0-NEXT:    s_mov_b32 s13, s69
608; GLOBALNESS0-NEXT:    s_mov_b32 s14, s68
609; GLOBALNESS0-NEXT:    v_mov_b32_e32 v31, v41
610; GLOBALNESS0-NEXT:    s_getpc_b64 s[16:17]
611; GLOBALNESS0-NEXT:    s_add_u32 s16, s16, widget@rel32@lo+4
612; GLOBALNESS0-NEXT:    s_addc_u32 s17, s17, widget@rel32@hi+12
613; GLOBALNESS0-NEXT:    s_swappc_b64 s[30:31], s[16:17]
614; GLOBALNESS0-NEXT:  .LBB1_34: ; %UnifiedUnreachableBlock
615bb:
616  store i32 0, ptr addrspace(1) null, align 4
617  %tmp4 = load i32, ptr addrspace(1) %arg1.global, align 4
618  br label %bb5
619
620bb5:                                              ; preds = %bb5.backedge, %bb
621  %tmp4.i.sroa.0.0 = phi <9 x double> [ undef, %bb ], [ %tmp4.i.sroa.0.1, %bb5.backedge ]
622  %tmp14.1.i = load i32, ptr inttoptr (i64 128 to ptr), align 128
623  store i32 0, ptr addrspace(5) null, align 4
624  %tmp14.2.i = load i32, ptr inttoptr (i64 128 to ptr), align 128
625  %tmp15.2.i = icmp eq i32 %tmp14.2.i, 0
626  %spec.select.2.i = select i1 %tmp15.2.i, i32 0, i32 %tmp14.1.i
627  tail call void @wobble()
628  br i1 %tmp3.i.i, label %bb4.i.i, label %baz.exit.i
629
630bb4.i.i:                                          ; preds = %bb5
631  switch i32 %tmp5.i.i, label %baz.exit.i [
632    i32 0, label %bb7.i.i
633    i32 1, label %bb11.i.i
634  ]
635
636bb7.i.i:                                          ; preds = %bb4.i.i
637  tail call fastcc void @widget()
638  unreachable
639
640bb11.i.i:                                         ; preds = %bb4.i.i
641  tail call fastcc void @widget()
642  unreachable
643
644baz.exit.i:                                       ; preds = %bb4.i.i, %bb5
645  %tmp26.i = load i32, ptr null, align 4
646  %tmp27.i4 = load double, ptr addrspace(1) null, align 8
647  %tmp31.i = icmp slt i32 %tmp26.i, 0
648  br i1 %tmp31.i, label %bb33.i, label %bb64.i
649
650bb33.i:                                           ; preds = %baz.exit.i
651  %tmp38.i = icmp slt i32 %tmp4, 0
652  br i1 %tmp38.i, label %bb39.i, label %bb44.lr.ph.i
653
654bb39.i:                                           ; preds = %bb33.i
655  store double 0.000000e+00, ptr addrspace(1) null, align 8
656  br label %bb44.lr.ph.i
657
658bb44.lr.ph.i:                                     ; preds = %bb39.i, %bb33.i
659  br label %bb44.i
660
661bb44.i:                                           ; preds = %bb63.i, %bb44.lr.ph.i
662  br i1 %tmp3.i.i, label %bb63.i, label %bb46.i
663
664bb46.i:                                           ; preds = %bb44.i
665  br i1 %tmp438.i, label %bb63.i, label %bb50.i
666
667bb50.i:                                           ; preds = %bb46.i
668  switch i32 0, label %spam.exit.i [
669    i32 0, label %bb1.i.i
670  ]
671
672bb1.i.i:                                          ; preds = %bb50.i
673  %tmp2.i.i = fcmp ogt double %tmp27.i, 1.617000e+03
674  br i1 %tmp2.i.i, label %spam.exit.i, label %bb3.i.i
675
676bb3.i.i:                                          ; preds = %bb1.i.i
677  %tmp4.i.i = fcmp ogt double %tmp27.i, 0.000000e+00
678  br i1 %tmp4.i.i, label %spam.exit.i, label %bb6.i.i
679
680bb6.i.i:                                          ; preds = %bb3.i.i
681  %tmp7.i.i = fcmp ogt double %tmp27.i4, 0.000000e+00
682  br i1 %tmp7.i.i, label %spam.exit.i, label %bb8.i.i
683
684bb8.i.i:                                          ; preds = %bb6.i.i
685  tail call void null()
686  br label %spam.exit.i
687
688spam.exit.i:                                      ; preds = %bb8.i.i, %bb6.i.i, %bb3.i.i, %bb1.i.i, %bb50.i
689  %tmp22.i = icmp sgt i32 %tmp4, 0
690  br i1 %tmp22.i, label %bb63.i, label %bb55.i
691
692bb55.i:                                           ; preds = %spam.exit.i
693  tail call void @wobble()
694  %tmp0 = extractelement <9 x double> %tmp4.i.sroa.0.0, i32 0
695  store double %tmp0, ptr addrspace(1) null, align 8
696  tail call void @wobble()
697  %tmp61.i = icmp eq i32 %spec.select.2.i, 0
698  br i1 %tmp61.i, label %bb62.i, label %bb63.i
699
700bb62.i:                                           ; preds = %bb55.i
701  store double 0.000000e+00, ptr addrspace(1) null, align 8
702  br label %bb63.i
703
704bb63.i:                                           ; preds = %bb62.i, %bb55.i, %spam.exit.i, %bb46.i, %bb44.i
705  br i1 %tmp48.i, label %bb44.i, label %bb64.i
706
707bb64.i:                                           ; preds = %bb63.i, %baz.exit.i
708  %tmp4.i.sroa.0.1 = phi <9 x double> [ <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %baz.exit.i ], [ zeroinitializer, %bb63.i ]
709  br i1 %tmp31.i, label %bb67.i, label %bb5.backedge
710
711bb5.backedge:                                     ; preds = %bb73.i, %bb70.i, %bb64.i
712  br label %bb5
713
714bb67.i:                                           ; preds = %bb64.i
715  %tmp68.i = icmp eq i32 %tmp4, 1
716  br i1 %tmp68.i, label %bb69.i, label %bb70.i
717
718bb69.i:                                           ; preds = %bb67.i
719  store double 0.000000e+00, ptr addrspace(1) null, align 8
720  br label %bb70.i
721
722bb70.i:                                           ; preds = %bb69.i, %bb67.i
723  %tmp3.i.i2 = icmp eq i32 %tmp4, 0
724  br i1 %tmp3.i.i2, label %bb73.i, label %bb5.backedge
725
726bb73.i:                                           ; preds = %bb70.i
727  store double 0.000000e+00, ptr addrspace(1) null, align 8
728  br label %bb5.backedge
729}
730
731!llvm.module.flags = !{!0}
732!0 = !{i32 1, !"amdhsa_code_object_version", i32 500}
733