xref: /llvm-project/llvm/test/CodeGen/AMDGPU/loop_header_nopred.mir (revision e7900e695e7dfb36be8651d914a31f42a5d6c634)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn -o - -run-pass=block-placement -mcpu=gfx1010 -mattr=-inst-fwd-prefetch-bug -verify-machineinstrs %s | FileCheck -check-prefixes=GFX10 %s
3# RUN: llc -mtriple=amdgcn -o - -run-pass=block-placement -mcpu=gfx1100 -mattr=-inst-fwd-prefetch-bug -verify-machineinstrs %s | FileCheck -check-prefixes=GFX11 %s
4
5# Used to fail with
6# Assertion `Out && "Header of loop has no predecessors from outside loop?"
7
8---
9name:            loop_header_nopred
10body:             |
11  ; GFX10-LABEL: name: loop_header_nopred
12  ; GFX10: bb.0:
13  ; GFX10-NEXT:   successors: %bb.2(0x80000000)
14  ; GFX10-NEXT: {{  $}}
15  ; GFX10-NEXT:   S_BRANCH %bb.2
16  ; GFX10-NEXT: {{  $}}
17  ; GFX10-NEXT: bb.1 (align 64):
18  ; GFX10-NEXT:   successors: %bb.7(0x04000000), %bb.2(0x7c000000)
19  ; GFX10-NEXT: {{  $}}
20  ; GFX10-NEXT:   S_CBRANCH_VCCNZ %bb.7, implicit $vcc_lo
21  ; GFX10-NEXT: {{  $}}
22  ; GFX10-NEXT: bb.2:
23  ; GFX10-NEXT:   successors: %bb.5(0x40000000), %bb.1(0x40000000)
24  ; GFX10-NEXT: {{  $}}
25  ; GFX10-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec
26  ; GFX10-NEXT: {{  $}}
27  ; GFX10-NEXT: bb.5:
28  ; GFX10-NEXT:   successors: %bb.1(0x04000000), %bb.5(0x7c000000)
29  ; GFX10-NEXT: {{  $}}
30  ; GFX10-NEXT:   S_NOP 0
31  ; GFX10-NEXT:   S_NOP 0
32  ; GFX10-NEXT:   S_NOP 0
33  ; GFX10-NEXT:   S_NOP 0
34  ; GFX10-NEXT:   S_NOP 0
35  ; GFX10-NEXT:   S_NOP 0
36  ; GFX10-NEXT:   S_NOP 0
37  ; GFX10-NEXT:   S_NOP 0
38  ; GFX10-NEXT:   S_NOP 0
39  ; GFX10-NEXT:   S_NOP 0
40  ; GFX10-NEXT:   S_NOP 0
41  ; GFX10-NEXT:   S_CBRANCH_EXECZ %bb.5, implicit $exec
42  ; GFX10-NEXT:   S_BRANCH %bb.1
43  ; GFX10-NEXT: {{  $}}
44  ; GFX10-NEXT: bb.7:
45  ; GFX10-NEXT:   S_ENDPGM 0
46  ;
47  ; GFX11-LABEL: name: loop_header_nopred
48  ; GFX11: bb.0:
49  ; GFX11-NEXT:   successors: %bb.2(0x80000000)
50  ; GFX11-NEXT: {{  $}}
51  ; GFX11-NEXT:   S_BRANCH %bb.2
52  ; GFX11-NEXT: {{  $}}
53  ; GFX11-NEXT: bb.1:
54  ; GFX11-NEXT:   successors: %bb.7(0x04000000), %bb.2(0x7c000000)
55  ; GFX11-NEXT: {{  $}}
56  ; GFX11-NEXT:   S_CBRANCH_VCCNZ %bb.7, implicit $vcc_lo
57  ; GFX11-NEXT: {{  $}}
58  ; GFX11-NEXT: bb.2:
59  ; GFX11-NEXT:   successors: %bb.5(0x40000000), %bb.1(0x40000000)
60  ; GFX11-NEXT: {{  $}}
61  ; GFX11-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec
62  ; GFX11-NEXT: {{  $}}
63  ; GFX11-NEXT: bb.5:
64  ; GFX11-NEXT:   successors: %bb.1(0x04000000), %bb.5(0x7c000000)
65  ; GFX11-NEXT: {{  $}}
66  ; GFX11-NEXT:   S_NOP 0
67  ; GFX11-NEXT:   S_NOP 0
68  ; GFX11-NEXT:   S_NOP 0
69  ; GFX11-NEXT:   S_NOP 0
70  ; GFX11-NEXT:   S_NOP 0
71  ; GFX11-NEXT:   S_NOP 0
72  ; GFX11-NEXT:   S_NOP 0
73  ; GFX11-NEXT:   S_NOP 0
74  ; GFX11-NEXT:   S_NOP 0
75  ; GFX11-NEXT:   S_NOP 0
76  ; GFX11-NEXT:   S_NOP 0
77  ; GFX11-NEXT:   S_CBRANCH_EXECZ %bb.5, implicit $exec
78  ; GFX11-NEXT:   S_BRANCH %bb.1
79  ; GFX11-NEXT: {{  $}}
80  ; GFX11-NEXT: bb.7:
81  ; GFX11-NEXT:   S_ENDPGM 0
82  bb.0:
83    successors: %bb.1(0x80000000)
84
85  bb.1:
86    successors: %bb.2(0x40000000), %bb.3(0x40000000)
87
88    S_CBRANCH_VCCZ %bb.3, implicit $vcc
89    S_BRANCH %bb.2
90
91  bb.2:
92    successors: %bb.3(0x80000000)
93
94  bb.3:
95    successors: %bb.4(0x40000000), %bb.6(0x40000000)
96
97    S_CBRANCH_EXECZ %bb.6, implicit $exec
98    S_BRANCH %bb.4
99
100  bb.4:
101    successors: %bb.5(0x04000000), %bb.4(0x7c000000)
102
103    S_NOP 0
104    S_NOP 0
105    S_NOP 0
106    S_NOP 0
107    S_NOP 0
108    S_NOP 0
109    S_NOP 0
110    S_NOP 0
111    S_NOP 0
112    S_NOP 0
113    S_NOP 0
114    S_CBRANCH_EXECZ %bb.4, implicit $exec
115
116  bb.5:
117    successors: %bb.6(0x80000000)
118
119  bb.6:
120    successors: %bb.7(0x04000000), %bb.1(0x7c000000)
121
122    S_CBRANCH_VCCZ %bb.1, implicit $vcc
123
124  bb.7:
125    S_ENDPGM 0
126...
127