[ARM] Generate 8.1-m CSINC, CSNEG and CSINV instructions.
[llvm-core.git] / test / CodeGen / Thumb2 / constant-islands-jump-table.ll
blob5ffe1f9b09f6ba0a1a362fa9e37c62bd542cc76f
1 ; RUN: llc < %s -mtriple=thumbv7-linux-gnueabihf -O1 %s -o - | FileCheck %s
3 ; CHECK-LABEL: test_jump_table:
4 ; CHECK: b{{.*}} .LBB
5 ; CHECK-NOT: tbh
7 define i32 @test_jump_table(i32 %x, float %in) {
9 h1:
11  %b0 = fadd float %in, 1234.5
12  %b1 = fptoui float %b0 to i32
13   
14   switch i32 %x, label %h2 [
15     i32 0, label %h3
16     i32 2, label %h4
17     i32 4, label %h5
18     i32 6, label %h6
19   ]
21 h2:
22   %a0 = add i32 %x, 5
23   br label %h3
25 h3:
26   %d2 = phi i32 [%b1, %h1], [%a0, %h2]
27   %d3 = add i32 %d2, 3
28   br label %h4
30 h4:
31   %c2 = phi i32 [%b1, %h1], [%d3, %h3]
32   %c3 = add i32 %c2, 5
33   br label %h5
35 h5:
36   %a2 = phi i32 [%b1, %h1], [%c3, %h4]
37   %a3 = add i32 %a2, 6
38   br label %h6
40 h6:
41   %y = phi i32 [0, %h1], [%a3, %h5]
42   call i32 @llvm.arm.space(i32 2000, i32 undef)
43   ret i32 %y
44   
47 declare i32 @llvm.arm.space(i32, i32)