Use MachineBranchProbabilityInfo in If-Conversion instead of its own heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136826 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakub Staszak
2011-08-03 22:34:43 +00:00
parent 2626dba9c5
commit 990f78d53b
5 changed files with 28 additions and 46 deletions
+6 -4
View File
@@ -1,8 +1,10 @@
; RUN: llc < %s -march=arm
; RUN: llc < %s -march=arm | grep subgt | count 1
; RUN: llc < %s -march=arm | grep suble | count 1
; FIXME: Check for # of unconditional branch after adding branch folding post ifcvt.
; RUN: llc < %s -march=arm | FileCheck %s
; Do not if-convert when branches go to the different loops.
; CHECK: _t:
; CHECK-NOT: subgt
; CHECK-NOT: suble
; Don't use
define i32 @t(i32 %a, i32 %b) {
entry:
%tmp1434 = icmp eq i32 %a, %b ; <i1> [#uses=1]
-1
View File
@@ -22,7 +22,6 @@ bb2: ; preds = %entry, %bb3
%gotovar.4.0 = phi i8* [ %gotovar.4.0.pre, %bb3 ], [ %0, %entry ] ; <i8*> [#uses=1]
; ARM: bx
; THUMB: mov pc,
; THUMB2: mov pc,
indirectbr i8* %gotovar.4.0, [label %L5, label %L4, label %L3, label %L2, label %L1]
bb3: ; preds = %entry
@@ -32,15 +32,15 @@
define fastcc i32 @parse_percent_token() nounwind {
entry:
; CHECK: ittt eq
; CHECK: ittt eq
; CHECK: ittt eq
; CHECK: ittt eq
; CHECK: ittt eq
; CHECK: moveq r0
; CHECK-NOT: LBB0_
; CHECK: ldreq
; CHECK: popeq
; CHECK: pop
; CHECK: pop
; CHECK: pop
; CHECK: pop
; CHECK: pop
; CHECK: pop
; CHECK: pop
; Do not convert into single stream code. BranchProbability Analysis assumes
; that branches which goes to "ret" intruction have lower probabilities.
switch i32 undef, label %bb7 [
i32 37, label %bb43
i32 48, label %bb5
+4 -4
View File
@@ -21,13 +21,13 @@ cond_next:
ret i32 %tmp15
}
; FIXME: Check for # of unconditional branch after adding branch folding post ifcvt.
define i32 @t2(i32 %a, i32 %b) nounwind {
entry:
; Do not if-convert when branches go to the different loops.
; CHECK: t2:
; CHECK: ite gt
; CHECK: subgt
; CHECK: suble
; CHECK-NOT: ite gt
; CHECK-NOT: subgt
; CHECK-NOT: suble
%tmp1434 = icmp eq i32 %a, %b ; <i1> [#uses=1]
br i1 %tmp1434, label %bb17, label %bb.outer