1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -march=amdgcn -o - -run-pass=block-placement -mcpu=gfx1010 -mattr=-inst-fwd-prefetch-bug -verify-machineinstrs %s | FileCheck -check-prefix=GCN %s
3
4# Used to fail with
5# Assertion `Out && "Header of loop has no predecessors from outside loop?"
6
7---
8name:            loop_header_nopred
9body:             |
10  ; GCN-LABEL: name: loop_header_nopred
11  ; GCN: bb.0:
12  ; GCN-NEXT:   successors: %bb.2(0x80000000)
13  ; GCN-NEXT: {{  $}}
14  ; GCN-NEXT:   S_BRANCH %bb.2
15  ; GCN-NEXT: {{  $}}
16  ; GCN-NEXT: bb.1 (align 64):
17  ; GCN-NEXT:   successors: %bb.7(0x04000000), %bb.2(0x7c000000)
18  ; GCN-NEXT: {{  $}}
19  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.7, implicit $vcc_lo
20  ; GCN-NEXT: {{  $}}
21  ; GCN-NEXT: bb.2:
22  ; GCN-NEXT:   successors: %bb.5(0x40000000), %bb.1(0x40000000)
23  ; GCN-NEXT: {{  $}}
24  ; GCN-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec
25  ; GCN-NEXT: {{  $}}
26  ; GCN-NEXT: bb.5:
27  ; GCN-NEXT:   successors: %bb.1(0x04000000), %bb.5(0x7c000000)
28  ; GCN-NEXT: {{  $}}
29  ; GCN-NEXT:   S_NOP 0
30  ; GCN-NEXT:   S_NOP 0
31  ; GCN-NEXT:   S_NOP 0
32  ; GCN-NEXT:   S_NOP 0
33  ; GCN-NEXT:   S_NOP 0
34  ; GCN-NEXT:   S_NOP 0
35  ; GCN-NEXT:   S_NOP 0
36  ; GCN-NEXT:   S_NOP 0
37  ; GCN-NEXT:   S_NOP 0
38  ; GCN-NEXT:   S_NOP 0
39  ; GCN-NEXT:   S_NOP 0
40  ; GCN-NEXT:   S_CBRANCH_EXECZ %bb.5, implicit $exec
41  ; GCN-NEXT:   S_BRANCH %bb.1
42  ; GCN-NEXT: {{  $}}
43  ; GCN-NEXT: bb.7:
44  ; GCN-NEXT:   S_ENDPGM 0
45  bb.0:
46    successors: %bb.1(0x80000000)
47
48  bb.1:
49    successors: %bb.2(0x40000000), %bb.3(0x40000000)
50
51    S_CBRANCH_VCCZ %bb.3, implicit $vcc
52    S_BRANCH %bb.2
53
54  bb.2:
55    successors: %bb.3(0x80000000)
56
57  bb.3:
58    successors: %bb.4(0x40000000), %bb.6(0x40000000)
59
60    S_CBRANCH_EXECZ %bb.6, implicit $exec
61    S_BRANCH %bb.4
62
63  bb.4:
64    successors: %bb.5(0x04000000), %bb.4(0x7c000000)
65
66    S_NOP 0
67    S_NOP 0
68    S_NOP 0
69    S_NOP 0
70    S_NOP 0
71    S_NOP 0
72    S_NOP 0
73    S_NOP 0
74    S_NOP 0
75    S_NOP 0
76    S_NOP 0
77    S_CBRANCH_EXECZ %bb.4, implicit $exec
78
79  bb.5:
80    successors: %bb.6(0x80000000)
81
82  bb.6:
83    successors: %bb.7(0x04000000), %bb.1(0x7c000000)
84
85    S_CBRANCH_VCCZ %bb.1, implicit $vcc
86
87  bb.7:
88    S_ENDPGM 0
89...
90