summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll
diff options
context:
space:
mode:
authorSanjoy Das <sanjoy@playingwithpointers.com>2015-01-27 21:38:12 +0000
committerSanjoy Das <sanjoy@playingwithpointers.com>2015-01-27 21:38:12 +0000
commitdcf2651043caef440b8b542ba5f6945916a96b72 (patch)
treee2c7541f244ae4491aaa4e41cbb17807ad167a9d /llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll
parent533948088e4aa8c433827a23dcfd522b800d892f (diff)
downloadbcm5719-llvm-dcf2651043caef440b8b542ba5f6945916a96b72.tar.gz
bcm5719-llvm-dcf2651043caef440b8b542ba5f6945916a96b72.zip
Teach IRCE to look at branch weights when recognizing range checks
Splitting a loop to make range checks redundant is profitable only if the range check "never" fails. Make this fact a part of recognizing a range check -- a branch is a range check only if it is expected to pass (via branch_weights metadata). Differential Revision: http://reviews.llvm.org/D7192 llvm-svn: 227249
Diffstat (limited to 'llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll')
-rw-r--r--llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll b/llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll
index 56b7b7b6c65..b8d2f140bab 100644
--- a/llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll
+++ b/llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll
@@ -13,13 +13,13 @@ define void @multiple_access_no_preloop(
%idx = phi i32 [ 0, %entry ] , [ %idx.next, %in.bounds.b ]
%idx.next = add i32 %idx, 1
%abc.a = icmp slt i32 %idx, %len.a
- br i1 %abc.a, label %in.bounds.a, label %out.of.bounds
+ br i1 %abc.a, label %in.bounds.a, label %out.of.bounds, !prof !1
in.bounds.a:
%addr.a = getelementptr i32* %arr_a, i32 %idx
store i32 0, i32* %addr.a
%abc.b = icmp slt i32 %idx, %len.b
- br i1 %abc.b, label %in.bounds.b, label %out.of.bounds
+ br i1 %abc.b, label %in.bounds.b, label %out.of.bounds, !prof !1
in.bounds.b:
%addr.b = getelementptr i32* %arr_b, i32 %idx
@@ -57,3 +57,4 @@ define void @multiple_access_no_preloop(
; CHECK: br i1 %next.postloop, label %loop.postloop, label %exit.loopexit
!0 = !{i32 0, i32 2147483647}
+!1 = !{!"branch_weights", i32 64, i32 4}
OpenPOWER on IntegriCloud