174 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc %s -o - -mtriple=powerpc-unknown-unknown -run-pass=machine-cse -verify-machineinstrs | FileCheck %s3# RUN: llc %s -o - -mtriple=powerpc-unknown-unknown -passes=machine-cse | FileCheck %s4--- |5 define void @can_pre() {6 entry:7 br label %for.body8 9 for.body:10 br i1 undef, label %if.then, label %if.else11 12 if.then:13 br label %if.end14 15 if.else:16 br label %if.end17 18 if.end:19 br label %for.body20 }21 22 define void @cannot_pre() {23 entry:24 br label %for.body25 26 for.body:27 br i1 undef, label %if.then, label %if.else28 29 if.then:30 br label %if.end31 32 if.else:33 br label %if.end34 35 if.end:36 br label %for.body37 }38...39---40name: can_pre41registers: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: '' }48liveins:49 - { reg: '$r1', virtual-reg: '%2' }50 - { reg: '$r2', virtual-reg: '%3' }51 - { reg: '$f1', virtual-reg: '%4' }52 - { reg: '$f2', virtual-reg: '%5' }53body: |54 ; CHECK-LABEL: name: can_pre55 ; CHECK: bb.0.for.body:56 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)57 ; CHECK-NEXT: liveins: $r1, $r2, $f1, $f258 ; CHECK-NEXT: {{ $}}59 ; CHECK-NEXT: [[COPY:%[0-9]+]]:f8rc = COPY $f260 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:f8rc = COPY $f161 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gprc = COPY $r262 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gprc = COPY $r163 ; CHECK-NEXT: $cr0 = CMPLWI [[COPY3]], 064 ; CHECK-NEXT: %6:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm65 ; CHECK-NEXT: BCC 44, $cr0, %bb.166 ; CHECK-NEXT: B %bb.267 ; CHECK-NEXT: {{ $}}68 ; CHECK-NEXT: bb.1.if.then:69 ; CHECK-NEXT: successors: %bb.3(0x80000000)70 ; CHECK-NEXT: {{ $}}71 ; CHECK-NEXT: B %bb.372 ; 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 $rm78 bb.0.for.body:79 successors: %bb.1(0x40000000), %bb.2(0x40000000)80 liveins: $r1, $r2, $f1, $f281 82 %5:f8rc = COPY $f283 %4:f8rc = COPY $f184 %3:gprc = COPY $r285 %2:gprc = COPY $r186 $cr0 = CMPLWI %2, 087 BCC 44, $cr0, %bb.188 B %bb.289 90 bb.1.if.then:91 successors: %bb.3(0x80000000)92 93 %0:f8rc = nofpexcept FDIV %4, %5, implicit $rm94 B %bb.395 96 bb.2.if.else:97 successors: %bb.3(0x80000000)98 99 %1:f8rc = nofpexcept FDIV %4, %5, implicit $rm100 101 bb.3.if.end:102 BLR implicit $lr, implicit $rm103...104---105name: cannot_pre106registers: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: '' }114liveins:115 - { reg: '$r1', virtual-reg: '%2' }116 - { reg: '$r2', virtual-reg: '%3' }117 - { reg: '$f1', virtual-reg: '%4' }118 - { reg: '$f2', virtual-reg: '%5' }119body: |120 ; CHECK-LABEL: name: cannot_pre121 ; CHECK: bb.0.for.body:122 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)123 ; CHECK-NEXT: liveins: $r1, $r2, $f1, $f2124 ; CHECK-NEXT: {{ $}}125 ; CHECK-NEXT: [[COPY:%[0-9]+]]:f8rc = COPY $f2126 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:f8rc = COPY $f1127 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gprc = COPY $r2128 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gprc = COPY $r1129 ; CHECK-NEXT: $cr0 = CMPLWI [[COPY3]], 0130 ; CHECK-NEXT: BCC 44, $cr0, %bb.1131 ; CHECK-NEXT: B %bb.2132 ; 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 $rm137 ; CHECK-NEXT: %0:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm138 ; CHECK-NEXT: B %bb.3139 ; 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 $rm144 ; CHECK-NEXT: {{ $}}145 ; CHECK-NEXT: bb.3.if.end:146 ; CHECK-NEXT: BLR implicit $lr, implicit $rm147 bb.0.for.body:148 successors: %bb.1(0x40000000), %bb.2(0x40000000)149 liveins: $r1, $r2, $f1, $f2150 151 %5:f8rc = COPY $f2152 %4:f8rc = COPY $f1153 %3:gprc = COPY $r2154 %2:gprc = COPY $r1155 $cr0 = CMPLWI %2, 0156 BCC 44, $cr0, %bb.1157 B %bb.2158 159 bb.1.if.then:160 successors: %bb.3(0x80000000)161 162 %6:f8rc = SETRND %3, implicit-def $rm, implicit $rm163 %0:f8rc = nofpexcept FDIV %4, %5, implicit $rm164 B %bb.3165 166 bb.2.if.else:167 successors: %bb.3(0x80000000)168 169 %1:f8rc = nofpexcept FDIV %4, %5, implicit $rm170 171 bb.3.if.end:172 BLR implicit $lr, implicit $rm173...174