xref: /aosp_15_r20/external/llvm/test/MC/ARM/ltorg-darwin.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker@ This test has a partner (ltorg.s) that contains matching
2*9880d681SAndroid Build Coastguard Worker@ tests for the .ltorg on linux targets. We need separate files
3*9880d681SAndroid Build Coastguard Worker@ because the syntax for switching sections and temporary labels differs
4*9880d681SAndroid Build Coastguard Worker@ between darwin and linux. Any tests added here should have a matching
5*9880d681SAndroid Build Coastguard Worker@ test added there.
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker@RUN: llvm-mc -triple   armv7-apple-darwin %s | FileCheck %s
8*9880d681SAndroid Build Coastguard Worker@RUN: llvm-mc -triple thumbv5-apple-darwin %s | FileCheck %s
9*9880d681SAndroid Build Coastguard Worker@RUN: llvm-mc -triple thumbv7-apple-darwin %s | FileCheck %s
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker@ check that ltorg dumps the constant pool at the current location
12*9880d681SAndroid Build Coastguard Worker.section __TEXT,a,regular,pure_instructions
13*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f2:
14*9880d681SAndroid Build Coastguard Workerf2:
15*9880d681SAndroid Build Coastguard Worker  ldr r0, =0x10002
16*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp0
17*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
18*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
19*9880d681SAndroid Build Coastguard Worker  b f3
20*9880d681SAndroid Build Coastguard Worker.ltorg
21*9880d681SAndroid Build Coastguard Worker@ constant pool
22*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region
23*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2
24*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp0:
25*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65538
26*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f3:
29*9880d681SAndroid Build Coastguard Workerf3:
30*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
31*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker@ check that ltorg clears the constant pool after dumping it
34*9880d681SAndroid Build Coastguard Worker.section __TEXT,b,regular,pure_instructions
35*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f4:
36*9880d681SAndroid Build Coastguard Workerf4:
37*9880d681SAndroid Build Coastguard Worker  ldr r0, =0x10003
38*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp1
39*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
40*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
41*9880d681SAndroid Build Coastguard Worker  b f5
42*9880d681SAndroid Build Coastguard Worker.ltorg
43*9880d681SAndroid Build Coastguard Worker@ constant pool
44*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region
45*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2
46*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp1:
47*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65539
48*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f5:
51*9880d681SAndroid Build Coastguard Workerf5:
52*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
53*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
54*9880d681SAndroid Build Coastguard Worker  ldr r0, =0x10004
55*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp2
56*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
57*9880d681SAndroid Build Coastguard Worker  b f6
58*9880d681SAndroid Build Coastguard Worker.ltorg
59*9880d681SAndroid Build Coastguard Worker@ constant pool
60*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region
61*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2
62*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp2:
63*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65540
64*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f6:
67*9880d681SAndroid Build Coastguard Workerf6:
68*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
69*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Worker@ check that ltorg does not issue an error if there is no constant pool
72*9880d681SAndroid Build Coastguard Worker.section __TEXT,c,regular,pure_instructions
73*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f7:
74*9880d681SAndroid Build Coastguard Workerf7:
75*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
76*9880d681SAndroid Build Coastguard Worker  b f8
77*9880d681SAndroid Build Coastguard Worker  .ltorg
78*9880d681SAndroid Build Coastguard Workerf8:
79*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Worker@ check that ltorg works for labels
82*9880d681SAndroid Build Coastguard Worker.section __TEXT,d,regular,pure_instructions
83*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f9:
84*9880d681SAndroid Build Coastguard Workerf9:
85*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
86*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
87*9880d681SAndroid Build Coastguard Worker  ldr r0, =bar
88*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp3
89*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
90*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
91*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
92*9880d681SAndroid Build Coastguard Worker  b f10
93*9880d681SAndroid Build Coastguard Worker.ltorg
94*9880d681SAndroid Build Coastguard Worker@ constant pool
95*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region
96*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2
97*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp3:
98*9880d681SAndroid Build Coastguard Worker@ CHECK: .long bar
99*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f10:
102*9880d681SAndroid Build Coastguard Workerf10:
103*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
104*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Worker@ check that use of ltorg does not prevent dumping non-empty constant pools at end of section
107*9880d681SAndroid Build Coastguard Worker.section __TEXT,e,regular,pure_instructions
108*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f11:
109*9880d681SAndroid Build Coastguard Workerf11:
110*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
111*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
112*9880d681SAndroid Build Coastguard Worker  ldr r0, =0x10005
113*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp4
114*9880d681SAndroid Build Coastguard Worker  b f12
115*9880d681SAndroid Build Coastguard Worker  .ltorg
116*9880d681SAndroid Build Coastguard Worker@ constant pool
117*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region
118*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2
119*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp4:
120*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65541
121*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f12:
124*9880d681SAndroid Build Coastguard Workerf12:
125*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
126*9880d681SAndroid Build Coastguard Worker  ldr r0, =0x10006
127*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, Ltmp5
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Worker.section __TEXT,f,regular,pure_instructions
130*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: f13
131*9880d681SAndroid Build Coastguard Workerf13:
132*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
133*9880d681SAndroid Build Coastguard Worker  adds r0, r0, #1
134*9880d681SAndroid Build Coastguard Worker
135*9880d681SAndroid Build Coastguard Worker@ should not have a constant pool at end of section with empty constant pools
136*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section __TEXT,a,regular,pure_instructions
137*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section __TEXT,b,regular,pure_instructions
138*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section __TEXT,c,regular,pure_instructions
139*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section __TEXT,d,regular,pure_instructions
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Worker@ should have a non-empty constant pool at end of this section
142*9880d681SAndroid Build Coastguard Worker@ CHECK: .section __TEXT,e,regular,pure_instructions
143*9880d681SAndroid Build Coastguard Worker@ constant pool
144*9880d681SAndroid Build Coastguard Worker@ CHECK: .data_region
145*9880d681SAndroid Build Coastguard Worker@ CHECK: .p2align 2
146*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: Ltmp5:
147*9880d681SAndroid Build Coastguard Worker@ CHECK: .long 65542
148*9880d681SAndroid Build Coastguard Worker@ CHECK: .end_data_region
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Worker@ should not have a constant pool at end of section with empty constant pools
151*9880d681SAndroid Build Coastguard Worker@ CHECK-NOT: .section __TEXT,f,regular,pure_instructions
152