mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
db3c93e416
This will remove suboptimal branching from the generated ll/sc loops. The extra simplification pass affects a lot of testcases, which have been modified to accommodate this change: either by modifying the test to become immune to the CFG simplification, or (less preferablt) by adding option -hexagon-initial-cfg-clenaup=0. llvm-svn: 338774
49 lines
1.5 KiB
LLVM
49 lines
1.5 KiB
LLVM
; Check that a callee-saved register will be saved correctly if
|
|
; the predicate-to-GPR spilling code uses it.
|
|
;
|
|
; RUN: llc -march=hexagon -hexagon-initial-cfg-cleanup=0 < %s | FileCheck %s
|
|
;
|
|
; We expect to spill p0 into a general-purpose register and keep it there,
|
|
; without adding an extra spill of that register.
|
|
;
|
|
; CHECK: PredSpill:
|
|
; CHECK-DAG: r{{[0-9]+}} = p0
|
|
; CHECK-DAG: p0 = r{{[0-9]+}}
|
|
; CHECK-NOT: = memw(r29
|
|
;
|
|
|
|
define void @PredSpill() {
|
|
entry:
|
|
br i1 undef, label %if.then, label %if.else.14
|
|
|
|
if.then: ; preds = %entry
|
|
br i1 undef, label %if.end.57, label %if.else
|
|
|
|
if.else: ; preds = %if.then
|
|
unreachable
|
|
|
|
if.else.14: ; preds = %entry
|
|
br i1 undef, label %if.then.17, label %if.end.57
|
|
|
|
if.then.17: ; preds = %if.else.14
|
|
br i1 undef, label %if.end.57, label %if.then.20
|
|
|
|
if.then.20: ; preds = %if.then.17
|
|
%call21 = tail call i32 @myfun()
|
|
%tobool22 = icmp eq i32 %call21, 0
|
|
%0 = tail call i32 @myfun()
|
|
br i1 %tobool22, label %if.else.42, label %if.then.23
|
|
|
|
if.then.23: ; preds = %if.then.20
|
|
unreachable
|
|
|
|
if.else.42: ; preds = %if.then.20
|
|
ret void
|
|
|
|
if.end.57: ; preds = %if.then.17, %if.else.14, %if.then
|
|
ret void
|
|
}
|
|
|
|
declare i32 @myfun()
|
|
|