174 lines
4.8 KiB
YAML
174 lines
4.8 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc %s -o - -mtriple=powerpc-unknown-unknown -run-pass=machine-cse -verify-machineinstrs | FileCheck %s
|
|
--- |
|
|
define void @can_pre() {
|
|
entry:
|
|
br label %for.body
|
|
|
|
for.body:
|
|
br i1 undef, label %if.then, label %if.else
|
|
|
|
if.then:
|
|
br label %if.end
|
|
|
|
if.else:
|
|
br label %if.end
|
|
|
|
if.end:
|
|
br label %for.body
|
|
}
|
|
|
|
define void @cannot_pre() {
|
|
entry:
|
|
br label %for.body
|
|
|
|
for.body:
|
|
br i1 undef, label %if.then, label %if.else
|
|
|
|
if.then:
|
|
br label %if.end
|
|
|
|
if.else:
|
|
br label %if.end
|
|
|
|
if.end:
|
|
br label %for.body
|
|
}
|
|
...
|
|
---
|
|
name: can_pre
|
|
registers:
|
|
- { id: 0, class: f8rc, preferred-register: '' }
|
|
- { id: 1, class: f8rc, preferred-register: '' }
|
|
- { id: 2, class: gprc, preferred-register: '' }
|
|
- { id: 3, class: gprc, preferred-register: '' }
|
|
- { id: 4, class: f8rc, preferred-register: '' }
|
|
- { id: 5, class: f8rc, preferred-register: '' }
|
|
liveins:
|
|
- { reg: '$r1', virtual-reg: '%2' }
|
|
- { reg: '$r2', virtual-reg: '%3' }
|
|
- { reg: '$f1', virtual-reg: '%4' }
|
|
- { reg: '$f2', virtual-reg: '%5' }
|
|
body: |
|
|
; CHECK-LABEL: name: can_pre
|
|
; CHECK: bb.0.for.body:
|
|
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
|
; CHECK-NEXT: liveins: $r1, $r2, $f1, $f2
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:f8rc = COPY $f2
|
|
; CHECK-NEXT: [[COPY1:%[0-9]+]]:f8rc = COPY $f1
|
|
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gprc = COPY $r2
|
|
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gprc = COPY $r1
|
|
; CHECK-NEXT: $cr0 = CMPLWI [[COPY3]], 0
|
|
; CHECK-NEXT: %6:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm
|
|
; CHECK-NEXT: BCC 44, $cr0, %bb.1
|
|
; CHECK-NEXT: B %bb.2
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.1.if.then:
|
|
; CHECK-NEXT: successors: %bb.3(0x80000000)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: B %bb.3
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.2.if.else:
|
|
; CHECK-NEXT: successors: %bb.3(0x80000000)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.3.if.end:
|
|
; CHECK-NEXT: BLR implicit $lr, implicit $rm
|
|
bb.0.for.body:
|
|
successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
|
liveins: $r1, $r2, $f1, $f2
|
|
|
|
%5:f8rc = COPY $f2
|
|
%4:f8rc = COPY $f1
|
|
%3:gprc = COPY $r2
|
|
%2:gprc = COPY $r1
|
|
$cr0 = CMPLWI %2, 0
|
|
BCC 44, $cr0, %bb.1
|
|
B %bb.2
|
|
|
|
bb.1.if.then:
|
|
successors: %bb.3(0x80000000)
|
|
|
|
%0:f8rc = nofpexcept FDIV %4, %5, implicit $rm
|
|
B %bb.3
|
|
|
|
bb.2.if.else:
|
|
successors: %bb.3(0x80000000)
|
|
|
|
%1:f8rc = nofpexcept FDIV %4, %5, implicit $rm
|
|
|
|
bb.3.if.end:
|
|
BLR implicit $lr, implicit $rm
|
|
...
|
|
---
|
|
name: cannot_pre
|
|
registers:
|
|
- { id: 0, class: f8rc, preferred-register: '' }
|
|
- { id: 1, class: f8rc, preferred-register: '' }
|
|
- { id: 2, class: gprc, preferred-register: '' }
|
|
- { id: 3, class: gprc, preferred-register: '' }
|
|
- { id: 4, class: f8rc, preferred-register: '' }
|
|
- { id: 5, class: f8rc, preferred-register: '' }
|
|
- { id: 6, class: f8rc, preferred-register: '' }
|
|
liveins:
|
|
- { reg: '$r1', virtual-reg: '%2' }
|
|
- { reg: '$r2', virtual-reg: '%3' }
|
|
- { reg: '$f1', virtual-reg: '%4' }
|
|
- { reg: '$f2', virtual-reg: '%5' }
|
|
body: |
|
|
; CHECK-LABEL: name: cannot_pre
|
|
; CHECK: bb.0.for.body:
|
|
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
|
; CHECK-NEXT: liveins: $r1, $r2, $f1, $f2
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:f8rc = COPY $f2
|
|
; CHECK-NEXT: [[COPY1:%[0-9]+]]:f8rc = COPY $f1
|
|
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gprc = COPY $r2
|
|
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gprc = COPY $r1
|
|
; CHECK-NEXT: $cr0 = CMPLWI [[COPY3]], 0
|
|
; CHECK-NEXT: BCC 44, $cr0, %bb.1
|
|
; CHECK-NEXT: B %bb.2
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.1.if.then:
|
|
; CHECK-NEXT: successors: %bb.3(0x80000000)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[SETRND:%[0-9]+]]:f8rc = SETRND [[COPY2]], implicit-def $rm, implicit $rm
|
|
; CHECK-NEXT: %0:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm
|
|
; CHECK-NEXT: B %bb.3
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.2.if.else:
|
|
; CHECK-NEXT: successors: %bb.3(0x80000000)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: %1:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.3.if.end:
|
|
; CHECK-NEXT: BLR implicit $lr, implicit $rm
|
|
bb.0.for.body:
|
|
successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
|
liveins: $r1, $r2, $f1, $f2
|
|
|
|
%5:f8rc = COPY $f2
|
|
%4:f8rc = COPY $f1
|
|
%3:gprc = COPY $r2
|
|
%2:gprc = COPY $r1
|
|
$cr0 = CMPLWI %2, 0
|
|
BCC 44, $cr0, %bb.1
|
|
B %bb.2
|
|
|
|
bb.1.if.then:
|
|
successors: %bb.3(0x80000000)
|
|
|
|
%6:f8rc = SETRND %3, implicit-def $rm, implicit $rm
|
|
%0:f8rc = nofpexcept FDIV %4, %5, implicit $rm
|
|
B %bb.3
|
|
|
|
bb.2.if.else:
|
|
successors: %bb.3(0x80000000)
|
|
|
|
%1:f8rc = nofpexcept FDIV %4, %5, implicit $rm
|
|
|
|
bb.3.if.end:
|
|
BLR implicit $lr, implicit $rm
|
|
...
|