diff options
| author | Xinliang David Li <davidxl@google.com> | 2017-08-18 23:00:05 +0000 |
|---|---|---|
| committer | Xinliang David Li <davidxl@google.com> | 2017-08-18 23:00:05 +0000 |
| commit | 709ffe178e4a7e670b82403fc2d1e5ed0fec3b9e (patch) | |
| tree | adc955650f8e2715fa63b752a4cf05c0b9137ab0 /llvm/test/Transforms | |
| parent | fba547d7e7f262df067f035326677e27c9a23175 (diff) | |
| download | bcm5719-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.ll | 37 | ||||
| -rw-r--r-- | llvm/test/Transforms/JumpThreading/threading_prof2.ll | 42 |
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} |

