[ELF] Reorder SectionBase/InputSectionBase members
[llvm-project.git] / llvm / test / CodeGen / PowerPC / machine-cse-rm-pre.mir
blob0e9459238ce9d7099a62fd99c37b4015b5d660c4
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc %s -o - -mtriple=powerpc-unknown-unknown -run-pass=machine-cse -verify-machineinstrs | FileCheck %s
3 # RUN: llc %s -o - -mtriple=powerpc-unknown-unknown -passes=machine-cse | FileCheck %s
4 --- |
5   define void @can_pre() {
6   entry:
7     br label %for.body
9   for.body:
10     br i1 undef, label %if.then, label %if.else
12   if.then:
13     br label %if.end
15   if.else:
16     br label %if.end
18   if.end:
19     br label %for.body
20   }
22   define void @cannot_pre() {
23   entry:
24     br label %for.body
26   for.body:
27     br i1 undef, label %if.then, label %if.else
29   if.then:
30     br label %if.end
32   if.else:
33     br label %if.end
35   if.end:
36     br label %for.body
37   }
38 ...
39 ---
40 name: can_pre
41 registers:
42   - { id: 0, class: f8rc, preferred-register: '' }
43   - { id: 1, class: f8rc, preferred-register: '' }
44   - { id: 2, class: gprc, preferred-register: '' }
45   - { id: 3, class: gprc, preferred-register: '' }
46   - { id: 4, class: f8rc, preferred-register: '' }
47   - { id: 5, class: f8rc, preferred-register: '' }
48 liveins:
49   - { reg: '$r1', virtual-reg: '%2' }
50   - { reg: '$r2', virtual-reg: '%3' }
51   - { reg: '$f1', virtual-reg: '%4' }
52   - { reg: '$f2', virtual-reg: '%5' }
53 body:             |
54   ; CHECK-LABEL: name: can_pre
55   ; CHECK: bb.0.for.body:
56   ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
57   ; CHECK-NEXT:   liveins: $r1, $r2, $f1, $f2
58   ; CHECK-NEXT: {{  $}}
59   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:f8rc = COPY $f2
60   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:f8rc = COPY $f1
61   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gprc = COPY $r2
62   ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:gprc = COPY $r1
63   ; CHECK-NEXT:   $cr0 = CMPLWI [[COPY3]], 0
64   ; CHECK-NEXT:   %6:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm
65   ; CHECK-NEXT:   BCC 44, $cr0, %bb.1
66   ; CHECK-NEXT:   B %bb.2
67   ; CHECK-NEXT: {{  $}}
68   ; CHECK-NEXT: bb.1.if.then:
69   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
70   ; CHECK-NEXT: {{  $}}
71   ; CHECK-NEXT:   B %bb.3
72   ; CHECK-NEXT: {{  $}}
73   ; CHECK-NEXT: bb.2.if.else:
74   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
75   ; CHECK-NEXT: {{  $}}
76   ; CHECK-NEXT: bb.3.if.end:
77   ; CHECK-NEXT:   BLR implicit $lr, implicit $rm
78   bb.0.for.body:
79     successors: %bb.1(0x40000000), %bb.2(0x40000000)
80     liveins: $r1, $r2, $f1, $f2
82     %5:f8rc = COPY $f2
83     %4:f8rc = COPY $f1
84     %3:gprc = COPY $r2
85     %2:gprc = COPY $r1
86     $cr0 = CMPLWI %2, 0
87     BCC 44, $cr0, %bb.1
88     B %bb.2
90   bb.1.if.then:
91     successors: %bb.3(0x80000000)
93     %0:f8rc = nofpexcept FDIV %4, %5, implicit $rm
94     B %bb.3
96   bb.2.if.else:
97     successors: %bb.3(0x80000000)
99     %1:f8rc = nofpexcept FDIV %4, %5, implicit $rm
101   bb.3.if.end:
102     BLR implicit $lr, implicit $rm
105 name: cannot_pre
106 registers:
107   - { id: 0, class: f8rc, preferred-register: '' }
108   - { id: 1, class: f8rc, preferred-register: '' }
109   - { id: 2, class: gprc, preferred-register: '' }
110   - { id: 3, class: gprc, preferred-register: '' }
111   - { id: 4, class: f8rc, preferred-register: '' }
112   - { id: 5, class: f8rc, preferred-register: '' }
113   - { id: 6, class: f8rc, preferred-register: '' }
114 liveins:
115   - { reg: '$r1', virtual-reg: '%2' }
116   - { reg: '$r2', virtual-reg: '%3' }
117   - { reg: '$f1', virtual-reg: '%4' }
118   - { reg: '$f2', virtual-reg: '%5' }
119 body:             |
120   ; CHECK-LABEL: name: cannot_pre
121   ; CHECK: bb.0.for.body:
122   ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
123   ; CHECK-NEXT:   liveins: $r1, $r2, $f1, $f2
124   ; CHECK-NEXT: {{  $}}
125   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:f8rc = COPY $f2
126   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:f8rc = COPY $f1
127   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gprc = COPY $r2
128   ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:gprc = COPY $r1
129   ; CHECK-NEXT:   $cr0 = CMPLWI [[COPY3]], 0
130   ; CHECK-NEXT:   BCC 44, $cr0, %bb.1
131   ; CHECK-NEXT:   B %bb.2
132   ; CHECK-NEXT: {{  $}}
133   ; CHECK-NEXT: bb.1.if.then:
134   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
135   ; CHECK-NEXT: {{  $}}
136   ; CHECK-NEXT:   [[SETRND:%[0-9]+]]:f8rc = SETRND [[COPY2]], implicit-def $rm, implicit $rm
137   ; CHECK-NEXT:   %0:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm
138   ; CHECK-NEXT:   B %bb.3
139   ; CHECK-NEXT: {{  $}}
140   ; CHECK-NEXT: bb.2.if.else:
141   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
142   ; CHECK-NEXT: {{  $}}
143   ; CHECK-NEXT:   %1:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm
144   ; CHECK-NEXT: {{  $}}
145   ; CHECK-NEXT: bb.3.if.end:
146   ; CHECK-NEXT:   BLR implicit $lr, implicit $rm
147   bb.0.for.body:
148     successors: %bb.1(0x40000000), %bb.2(0x40000000)
149     liveins: $r1, $r2, $f1, $f2
151     %5:f8rc = COPY $f2
152     %4:f8rc = COPY $f1
153     %3:gprc = COPY $r2
154     %2:gprc = COPY $r1
155     $cr0 = CMPLWI %2, 0
156     BCC 44, $cr0, %bb.1
157     B %bb.2
159   bb.1.if.then:
160     successors: %bb.3(0x80000000)
162     %6:f8rc = SETRND %3, implicit-def $rm, implicit $rm
163     %0:f8rc = nofpexcept FDIV %4, %5, implicit $rm
164     B %bb.3
166   bb.2.if.else:
167     successors: %bb.3(0x80000000)
169     %1:f8rc = nofpexcept FDIV %4, %5, implicit $rm
171   bb.3.if.end:
172     BLR implicit $lr, implicit $rm