annotate test/CodeGen/ARM/arm-position-independence-jump-table.ll @ 128:c347d3398279 default tip

fix
author mir3636
date Wed, 06 Dec 2017 14:37:17 +0900
parents 803732b1fca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 ; Test for generation of jump table for ropi/rwpi
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 ; RUN: llc -relocation-model=static -mtriple=armv7a--none-eabi -disable-block-placement < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM --check-prefix=ARM_ABS
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4 ; RUN: llc -relocation-model=ropi -mtriple=armv7a--none-eabi -disable-block-placement < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM --check-prefix=ARM_PC
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 ; RUN: llc -relocation-model=ropi-rwpi -mtriple=armv7a--none-eabi -disable-block-placement < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM --check-prefix=ARM_PC
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 ; RUN: llc -relocation-model=static -mtriple=thumbv7m--none-eabi -disable-block-placement < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8 ; RUN: llc -relocation-model=ropi -mtriple=thumbv7m--none-eabi -disable-block-placement < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9 ; RUN: llc -relocation-model=ropi-rwpi -mtriple=thumbv7m--none-eabi -disable-block-placement < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 ; RUN: llc -relocation-model=static -mtriple=thumbv6m--none-eabi -disable-block-placement < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12 ; RUN: llc -relocation-model=ropi -mtriple=thumbv6m--none-eabi -disable-block-placement < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 ; RUN: llc -relocation-model=ropi-rwpi -mtriple=thumbv6m--none-eabi -disable-block-placement < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 declare void @exit0()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 declare void @exit1()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 declare void @exit2()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 declare void @exit3()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 declare void @exit4()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 define void @jump_table(i32 %val) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 switch i32 %val, label %default [ i32 1, label %lab1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 i32 2, label %lab2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 i32 3, label %lab3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 i32 4, label %lab4 ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 default:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 tail call void @exit0()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 lab1:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 tail call void @exit1()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 lab2:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 tail call void @exit2()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40 lab3:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 tail call void @exit3()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 lab4:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45 tail call void @exit4()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
48 ; CHECK-LABEL: jump_table:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
50 ; ARM: adr r[[R_TAB_BASE:[0-9]+]], [[LJTI:\.LJTI[0-9]+_[0-9]+]]
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
51 ; ARM: lsl r[[R_TAB_IDX:[0-9]+]], r{{[0-9]+}}, #2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
52 ; ARM_ABS: ldr pc, [r[[R_TAB_IDX]], r[[R_TAB_BASE]]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53 ; ARM_PC: ldr r[[R_OFFSET:[0-9]+]], [r[[R_TAB_IDX]], r[[R_TAB_BASE]]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54 ; ARM_PC: add pc, r[[R_OFFSET]], r[[R_TAB_BASE]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
55 ; ARM: [[LJTI]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
56 ; ARM_ABS: .long [[LBB1:\.LBB[0-9]+_[0-9]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
57 ; ARM_ABS: .long [[LBB2:\.LBB[0-9]+_[0-9]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
58 ; ARM_ABS: .long [[LBB3:\.LBB[0-9]+_[0-9]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
59 ; ARM_ABS: .long [[LBB4:\.LBB[0-9]+_[0-9]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
60 ; ARM_PC: .long [[LBB1:\.LBB[0-9]+_[0-9]+]]-[[LJTI]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
61 ; ARM_PC: .long [[LBB2:\.LBB[0-9]+_[0-9]+]]-[[LJTI]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
62 ; ARM_PC: .long [[LBB3:\.LBB[0-9]+_[0-9]+]]-[[LJTI]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
63 ; ARM_PC: .long [[LBB4:\.LBB[0-9]+_[0-9]+]]-[[LJTI]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
64 ; ARM: [[LBB1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
65 ; ARM-NEXT: b exit1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
66 ; ARM: [[LBB2]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
67 ; ARM-NEXT: b exit2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
68 ; ARM: [[LBB3]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
69 ; ARM-NEXT: b exit3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
70 ; ARM: [[LBB4]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
71 ; ARM-NEXT: b exit4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
72
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
73 ; THUMB2: [[LCPI:\.LCPI[0-9]+_[0-9]+]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
74 ; THUMB2: tbb [pc, r{{[0-9]+}}]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
75 ; THUMB2: .byte ([[LBB1:\.LBB[0-9]+_[0-9]+]]-([[LCPI]]+4))/2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
76 ; THUMB2: .byte ([[LBB2:\.LBB[0-9]+_[0-9]+]]-([[LCPI]]+4))/2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
77 ; THUMB2: .byte ([[LBB3:\.LBB[0-9]+_[0-9]+]]-([[LCPI]]+4))/2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
78 ; THUMB2: .byte ([[LBB4:\.LBB[0-9]+_[0-9]+]]-([[LCPI]]+4))/2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
79 ; THUMB2: [[LBB1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
80 ; THUMB2-NEXT: b exit1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
81 ; THUMB2: [[LBB2]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
82 ; THUMB2-NEXT: b exit2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
83 ; THUMB2: [[LBB3]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
84 ; THUMB2-NEXT: b exit3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
85 ; THUMB2: [[LBB4]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
86 ; THUMB2-NEXT: b exit4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
87
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
88 ; THUMB1: .p2align 2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
89 ; THUMB1: add r[[x:[0-9]+]], pc
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
90 ; THUMB1: ldrb r[[x]], [r[[x]], #4]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
91 ; THUMB1: lsls r[[x]], r[[x]], #1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
92 ; THUMB1: [[LCPI:\.LCPI[0-9]+_[0-9]+]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
93 ; THUMB1: add pc, r[[x]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
94 ; THUMB1: .p2align 2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
95 ; THUMB1: .byte ([[LBB1:\.LBB[0-9]+_[0-9]+]]-([[LCPI]]+4))/2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
96 ; THUMB1: .byte ([[LBB2:\.LBB[0-9]+_[0-9]+]]-([[LCPI]]+4))/2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
97 ; THUMB1: .byte ([[LBB3:\.LBB[0-9]+_[0-9]+]]-([[LCPI]]+4))/2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
98 ; THUMB1: .byte ([[LBB4:\.LBB[0-9]+_[0-9]+]]-([[LCPI]]+4))/2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
99 ; THUMB1: [[LBB1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
100 ; THUMB1-NEXT: bl exit1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
101 ; THUMB1: [[LBB2]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
102 ; THUMB1-NEXT: bl exit2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
103 ; THUMB1: [[LBB3]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
104 ; THUMB1-NEXT: bl exit3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
105 ; THUMB1: [[LBB4]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
106 ; THUMB1-NEXT: bl exit4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
107 }