xref: /aosp_15_r20/external/llvm/test/CodeGen/Thumb2/constant-islands-jump-table.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=thumbv7-linux-gnueabihf -O1 %s -o - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_jump_table:
4*9880d681SAndroid Build Coastguard Worker; CHECK: b{{.*}} .LBB
5*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: tbh
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine i32 @test_jump_table(i32 %x, float %in) {
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Workerh1:
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker %b0 = fadd float %in, 1234.5
12*9880d681SAndroid Build Coastguard Worker %b1 = fptoui float %b0 to i32
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Worker  switch i32 %x, label %h2 [
15*9880d681SAndroid Build Coastguard Worker    i32 0, label %h3
16*9880d681SAndroid Build Coastguard Worker    i32 2, label %h4
17*9880d681SAndroid Build Coastguard Worker    i32 4, label %h5
18*9880d681SAndroid Build Coastguard Worker    i32 6, label %h6
19*9880d681SAndroid Build Coastguard Worker  ]
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerh2:
22*9880d681SAndroid Build Coastguard Worker  %a0 = add i32 %x, 5
23*9880d681SAndroid Build Coastguard Worker  br label %h3
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerh3:
26*9880d681SAndroid Build Coastguard Worker  %d2 = phi i32 [%b1, %h1], [%a0, %h2]
27*9880d681SAndroid Build Coastguard Worker  %d3 = add i32 %d2, 3
28*9880d681SAndroid Build Coastguard Worker  br label %h4
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerh4:
31*9880d681SAndroid Build Coastguard Worker  %c2 = phi i32 [%b1, %h1], [%d3, %h3]
32*9880d681SAndroid Build Coastguard Worker  %c3 = add i32 %c2, 5
33*9880d681SAndroid Build Coastguard Worker  br label %h5
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerh5:
36*9880d681SAndroid Build Coastguard Worker  %a2 = phi i32 [%b1, %h1], [%c3, %h4]
37*9880d681SAndroid Build Coastguard Worker  %a3 = add i32 %a2, 6
38*9880d681SAndroid Build Coastguard Worker  br label %h6
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Workerh6:
41*9880d681SAndroid Build Coastguard Worker  %y = phi i32 [0, %h1], [%a3, %h5]
42*9880d681SAndroid Build Coastguard Worker  call i32 @llvm.arm.space(i32 2000, i32 undef)
43*9880d681SAndroid Build Coastguard Worker  ret i32 %y
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker}
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.arm.space(i32, i32)
48