48 lines
819 B
LLVM
48 lines
819 B
LLVM
; 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)
|