diff options
| author | Xinliang David Li <davidxl@google.com> | 2016-05-12 02:19:16 +0000 |
|---|---|---|
| committer | Xinliang David Li <davidxl@google.com> | 2016-05-12 02:19:16 +0000 |
| commit | a94e383157be6b857aabc198fe20949fcb1a9b70 (patch) | |
| tree | c567582cf01c2e5def3149ca20e8ee1b7ac5d0c3 /llvm/test/CodeGen | |
| parent | f0ab6dfedc34dc5df4df4f78080547809cd28c7d (diff) | |
| download | bcm5719-llvm-a94e383157be6b857aabc198fe20949fcb1a9b70.tar.gz bcm5719-llvm-a94e383157be6b857aabc198fe20949fcb1a9b70.zip | |
[Layout] Add a new test case for optimal rotation
Enabled by -force-precise-rotation-cost option
llvm-svn: 269267
Diffstat (limited to 'llvm/test/CodeGen')
| -rw-r--r-- | llvm/test/CodeGen/X86/code_placement_loop_rotation3.ll | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/code_placement_loop_rotation3.ll b/llvm/test/CodeGen/X86/code_placement_loop_rotation3.ll new file mode 100644 index 00000000000..c2fdb778c45 --- /dev/null +++ b/llvm/test/CodeGen/X86/code_placement_loop_rotation3.ll @@ -0,0 +1,43 @@ +; RUN: llc -mcpu=corei7 -mtriple=x86_64-linux -force-precise-rotation-cost < %s | FileCheck %s -check-prefix=CHECK + +define void @bar() { +; Test that all edges in the loop chain are fall through with profile data. +; +; CHECK-LABEL: bar: +; CHECK: latch +; CHECK: header +; CHECK: if.then +; CHECK: end + +entry: + br label %header + +header: + call void @e() + %call = call zeroext i1 @a() + br i1 %call, label %if.then, label %latch, !prof !2 + +if.then: + call void @f() + %call3 = call zeroext i1 @a() + br i1 %call3, label %latch, label %end, !prof !3 + +latch: + call void @h() + %call2 = call zeroext i1 @a() + br i1 %call2, label %header, label %end, !prof !4 + +end: + ret void +} + +declare zeroext i1 @a() +declare void @e() +declare void @f() +declare void @g() +declare void @h() + +!1 = !{!"branch_weights", i32 16, i32 16} +!2 = !{!"branch_weights", i32 16, i32 16} +!3 = !{!"branch_weights", i32 97, i32 3} +!4 = !{!"branch_weights", i32 97, i32 3} |

