summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorXinliang David Li <davidxl@google.com>2017-08-18 23:00:05 +0000
committerXinliang David Li <davidxl@google.com>2017-08-18 23:00:05 +0000
commit709ffe178e4a7e670b82403fc2d1e5ed0fec3b9e (patch)
treeadc955650f8e2715fa63b752a4cf05c0b9137ab0 /llvm/test/Transforms
parentfba547d7e7f262df067f035326677e27c9a23175 (diff)
downloadbcm5719-llvm-709ffe178e4a7e670b82403fc2d1e5ed0fec3b9e.tar.gz
bcm5719-llvm-709ffe178e4a7e670b82403fc2d1e5ed0fec3b9e.zip
[Profile] backward propagate profile info in JumpThreading
Differential Revsion: http://reviews.llvm.org/D36864 llvm-svn: 311208
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/JumpThreading/threading_prof1.ll37
-rw-r--r--llvm/test/Transforms/JumpThreading/threading_prof2.ll42
2 files changed, 79 insertions, 0 deletions
diff --git a/llvm/test/Transforms/JumpThreading/threading_prof1.ll b/llvm/test/Transforms/JumpThreading/threading_prof1.ll
new file mode 100644
index 00000000000..43e8ed83824
--- /dev/null
+++ b/llvm/test/Transforms/JumpThreading/threading_prof1.ll
@@ -0,0 +1,37 @@
+; RUN: opt -jump-threading -S < %s | FileCheck %s
+; RUN: opt -passes=jump-threading -S < %s | FileCheck %s
+
+define void @test() {
+bb:
+ %tmp = call i32 @a()
+ %tmp1 = icmp eq i32 %tmp, 1
+ br i1 %tmp1, label %bb5, label %bb2
+; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]]
+
+bb2: ; preds = %bb
+ %tmp3 = call i32 @b()
+ %tmp4 = icmp ne i32 %tmp3, 1
+ br label %bb5
+; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]]
+
+bb5: ; preds = %bb2, %bb
+ %tmp6 = phi i1 [ false, %bb ], [ %tmp4, %bb2 ]
+ br i1 %tmp6, label %bb8, label %bb7, !prof !0
+
+bb7: ; preds = %bb5
+ call void @bar()
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb5
+ ret void
+}
+
+declare void @bar()
+
+declare i32 @a()
+
+declare i32 @b()
+
+!0 = !{!"branch_weights", i32 2146410443, i32 1073205}
+;CHECK: ![[PROF1]] = !{!"branch_weights", i32 1073205, i32 2146410443}
+;CHECK: ![[PROF2]] = !{!"branch_weights", i32 2146410443, i32 1073205}
diff --git a/llvm/test/Transforms/JumpThreading/threading_prof2.ll b/llvm/test/Transforms/JumpThreading/threading_prof2.ll
new file mode 100644
index 00000000000..b14b996f24e
--- /dev/null
+++ b/llvm/test/Transforms/JumpThreading/threading_prof2.ll
@@ -0,0 +1,42 @@
+; RUN: opt -jump-threading -S < %s | FileCheck %s
+; RUN: opt -passes=jump-threading -S < %s | FileCheck %s
+define void @test() {
+bb:
+ %tmp = call i32 @a()
+ %tmp1 = icmp eq i32 %tmp, 1
+ br i1 %tmp1, label %bb5, label %bb2
+; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]]
+
+bb2:
+ %tmp3 = call i32 @b()
+ %tmp4 = icmp ne i32 %tmp3, 1
+ br label %bb5
+; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]]
+
+bb5:
+ %tmp6 = phi i1 [ false, %bb ], [ %tmp4, %bb2 ]
+ br i1 %tmp6, label %bb8, label %bb7, !prof !0
+
+bb7:
+ call void @bar()
+ br label %bb9
+
+bb8:
+ call void @foo()
+ br label %bb9
+
+bb9:
+ ret void
+}
+
+declare void @bar()
+
+declare void @foo()
+
+declare i32 @a()
+
+declare i32 @b()
+
+!0 = !{!"branch_weights", i32 2146410443, i32 1073205}
+;CHECK: ![[PROF1]] = !{!"branch_weights", i32 1073205, i32 2146410443}
+;CHECK: ![[PROF2]] = !{!"branch_weights", i32 2146410443, i32 1073205}
OpenPOWER on IntegriCloud