diff options
| author | Chad Rosier <mcrosier@codeaurora.org> | 2014-12-12 23:27:40 +0000 |
|---|---|---|
| committer | Chad Rosier <mcrosier@codeaurora.org> | 2014-12-12 23:27:40 +0000 |
| commit | 620fb2206d28e78aa2549f37264d49108166c83c (patch) | |
| tree | 4e1c6132a9e26a53fd48e9df92ec4f91cf921e11 /llvm/test | |
| parent | 93e3cfcf9906b8eac682844af2d040a4f086b711 (diff) | |
| download | bcm5719-llvm-620fb2206d28e78aa2549f37264d49108166c83c.tar.gz bcm5719-llvm-620fb2206d28e78aa2549f37264d49108166c83c.zip | |
[ARMConstantIsland] Insert tbb/tbh optimization where previous jump table resided.
llvm-svn: 224165
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/Thumb2/constant-islands-jump-table.ll | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/Thumb2/constant-islands-jump-table.ll b/llvm/test/CodeGen/Thumb2/constant-islands-jump-table.ll new file mode 100644 index 00000000000..0dd7092291b --- /dev/null +++ b/llvm/test/CodeGen/Thumb2/constant-islands-jump-table.ll @@ -0,0 +1,47 @@ +; RUN: llc < %s -mtriple=thumbv7-linux-gnueabihf -O1 %s -o - | FileCheck %s + +; CHECK-LABEL: test_jump_table: +; CHECK: b .LBB +; CHECK-NOT: tbh + +define i32 @test_jump_table(i32 %x, float %in) { + +h1: + + %b0 = fadd float %in, 1234.5 + %b1 = fptoui float %b0 to i32 + + switch i32 %x, label %h2 [ + i32 0, label %h3 + i32 2, label %h4 + i32 4, label %h5 + i32 6, label %h6 + ] + +h2: + %a0 = add i32 %x, 5 + br label %h3 + +h3: + %d2 = phi i32 [%b1, %h1], [%a0, %h2] + %d3 = add i32 %d2, 3 + br label %h4 + +h4: + %c2 = phi i32 [%b1, %h1], [%d3, %h3] + %c3 = add i32 %c2, 5 + br label %h5 + +h5: + %a2 = phi i32 [%b1, %h1], [%c3, %h4] + %a3 = add i32 %a2, 6 + br label %h6 + +h6: + %y = phi i32 [0, %h1], [%a3, %h5] + call i32 @llvm.arm.space(i32 2000, i32 undef) + ret i32 %y + +} + +declare i32 @llvm.arm.space(i32, i32) |

