1- ; NOTE: Assertions have been autogenerated by utils/update_test_checks .py
1+ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks .py UTC_ARGS: --version 5
22; RUN: opt -mtriple=amdgcn-amd-amdhsa -p simplifycfg,amdgpu-unify-divergent-exit-nodes %s -S -o - | FileCheck %s --check-prefix=OPT
33; RUN: llc -mtriple=amdgcn-amd-amdhsa %s -o - | FileCheck %s --check-prefix=ISA
44
@@ -15,34 +15,40 @@ define void @nested_inf_loop(i1 %0, i1 %1) {
1515; OPT-NEXT: ret void
1616;
1717; ISA-LABEL: nested_inf_loop:
18- ; ISA-NEXT: %bb.0: ; %BB
19- ; ISA-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20- ; ISA-NEXT: v_and_b32_e32 v1, 1, v1
21- ; ISA-NEXT: v_and_b32_e32 v0, 1, v0
22- ; ISA-NEXT: v_cmp_eq_u32_e64 s[4:5], 1, v1
23- ; ISA-NEXT: v_cmp_eq_u32_e32 vcc, 1, v0
24- ; ISA-NEXT: s_xor_b64 s[6:7], vcc, -1
25- ; ISA-NEXT: s_mov_b64 s[8:9], 0
26- ; ISA-NEXT: .LBB0_1: ; %BB1
27- ; ISA: s_and_b64 s[10:11], exec, s[6:7]
28- ; ISA-NEXT: s_or_b64 s[8:9], s[10:11], s[8:9]
29- ; ISA-NEXT: s_andn2_b64 exec, exec, s[8:9]
30- ; ISA-NEXT: s_cbranch_execnz .LBB0_1
31- ; ISA-NEXT: %bb.2: ; %BB2
32- ; ISA: s_or_b64 exec, exec, s[8:9]
33- ; ISA-NEXT: s_mov_b64 s[8:9], 0
34- ; ISA-NEXT: .LBB0_3: ; %BB4
35- ; ISA: s_and_b64 s[10:11], exec, s[4:5]
36- ; ISA-NEXT: s_or_b64 s[8:9], s[10:11], s[8:9]
37- ; ISA-NEXT: s_andn2_b64 exec, exec, s[8:9]
38- ; ISA-NEXT: s_cbranch_execnz .LBB0_3
39- ; ISA-NEXT: %bb.4: ; %loop.exit.guard
40- ; ISA: s_or_b64 exec, exec, s[8:9]
41- ; ISA-NEXT: s_mov_b64 vcc, 0
42- ; ISA-NEXT: s_mov_b64 s[8:9], 0
43- ; ISA-NEXT: s_branch .LBB0_1
44- ; ISA-NEXT: %bb.5: ; %DummyReturnBlock
45- ; ISA-NEXT: s_setpc_b64 s[30:31]
18+ ; ISA: ; %bb.0: ; %BB
19+ ; ISA-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20+ ; ISA-NEXT: v_and_b32_e32 v1, 1, v1
21+ ; ISA-NEXT: v_and_b32_e32 v0, 1, v0
22+ ; ISA-NEXT: v_cmp_eq_u32_e64 s[4:5], 1, v1
23+ ; ISA-NEXT: v_cmp_eq_u32_e32 vcc, 1, v0
24+ ; ISA-NEXT: s_xor_b64 s[6:7], vcc, -1
25+ ; ISA-NEXT: s_mov_b64 s[8:9], 0
26+ ; ISA-NEXT: .LBB0_1: ; %BB1
27+ ; ISA-NEXT: ; =>This Loop Header: Depth=1
28+ ; ISA-NEXT: ; Child Loop BB0_3 Depth 2
29+ ; ISA-NEXT: s_and_b64 s[10:11], exec, s[6:7]
30+ ; ISA-NEXT: s_or_b64 s[8:9], s[10:11], s[8:9]
31+ ; ISA-NEXT: s_andn2_b64 exec, exec, s[8:9]
32+ ; ISA-NEXT: s_cbranch_execnz .LBB0_1
33+ ; ISA-NEXT: ; %bb.2: ; %BB2
34+ ; ISA-NEXT: ; in Loop: Header=BB0_1 Depth=1
35+ ; ISA-NEXT: s_or_b64 exec, exec, s[8:9]
36+ ; ISA-NEXT: s_mov_b64 s[8:9], 0
37+ ; ISA-NEXT: .LBB0_3: ; %BB4
38+ ; ISA-NEXT: ; Parent Loop BB0_1 Depth=1
39+ ; ISA-NEXT: ; => This Inner Loop Header: Depth=2
40+ ; ISA-NEXT: s_and_b64 s[10:11], exec, s[4:5]
41+ ; ISA-NEXT: s_or_b64 s[8:9], s[10:11], s[8:9]
42+ ; ISA-NEXT: s_andn2_b64 exec, exec, s[8:9]
43+ ; ISA-NEXT: s_cbranch_execnz .LBB0_3
44+ ; ISA-NEXT: ; %bb.4: ; %loop.exit.guard
45+ ; ISA-NEXT: ; in Loop: Header=BB0_1 Depth=1
46+ ; ISA-NEXT: s_or_b64 exec, exec, s[8:9]
47+ ; ISA-NEXT: s_mov_b64 vcc, 0
48+ ; ISA-NEXT: s_mov_b64 s[8:9], 0
49+ ; ISA-NEXT: s_branch .LBB0_1
50+ ; ISA-NEXT: ; %bb.5: ; %DummyReturnBlock
51+ ; ISA-NEXT: s_setpc_b64 s[30:31]
4652BB:
4753 br label %BB1
4854
0 commit comments