1 @ This test has a partner (ldr-pseudo.s) that contains matching
2 @ tests for the ldr-pseudo on linux targets. We need separate files
3 @ because the syntax for switching sections and temporary labels differs
4 @ between darwin and linux. Any tests added here should have a matching
7 @RUN: llvm-mc -triple armv7-apple-darwin %s | FileCheck %s
8 @RUN: llvm-mc -triple thumbv5-apple-darwin %s | FileCheck %s
9 @RUN: llvm-mc -triple thumbv7-apple-darwin %s | FileCheck %s
12 @ Check that large constants are converted to ldr from constant pool
15 .section __TEXT,b,regular,pure_instructions
19 @ CHECK: ldr r0, Ltmp0
21 @ loading multiple constants
22 .section __TEXT,c,regular,pure_instructions
26 @ CHECK: ldr r0, Ltmp1
32 @ CHECK: ldr r0, Ltmp2
36 @ TODO: the same constants should have the same constant pool location
37 .section __TEXT,d,regular,pure_instructions
41 @ CHECK: ldr r0, Ltmp3
50 @ CHECK: ldr r0, Ltmp4
58 @ a section defined in multiple pieces should be merged and use a single constant pool
59 .section __TEXT,e,regular,pure_instructions
63 @ CHECK: ldr r0, Ltmp5
68 .section __TEXT,f,regular,pure_instructions
75 .section __TEXT,e,regular,pure_instructions
80 @ CHECK: ldr r0, Ltmp6
85 @ Check that symbols can be loaded using ldr pseudo
88 @ load an undefined symbol
89 .section __TEXT,g,regular,pure_instructions
93 @ CHECK: ldr r0, Ltmp7
95 @ load a symbol from another section
96 .section __TEXT,h,regular,pure_instructions
100 @ CHECK: ldr r0, Ltmp8
102 @ load a symbol from the same section
103 .section __TEXT,i,regular,pure_instructions
107 @ CHECK: ldr r0, Ltmp9
114 .section __TEXT,j,regular,pure_instructions
115 @ mix of symbols and constants
121 @ CHECK: ldr r0, Ltmp10
125 @ CHECK: ldr r0, Ltmp11
129 @ Check for correct usage in other contexts
133 .macro useit_in_a_macro
137 .section __TEXT,k,regular,pure_instructions
141 @ CHECK: ldr r0, Ltmp12
142 @ CHECK: ldr r0, Ltmp13
144 @ usage with expressions
145 .section __TEXT,l,regular,pure_instructions
149 @ CHECK: ldr r0, Ltmp14
152 @ CHECK: ldr r0, Ltmp15
158 @ CHECK: .section __TEXT,b,regular,pure_instructions
159 @ CHECK: .data_region
161 @ CHECK-LABEL: Ltmp0:
163 @ CHECK: .end_data_region
165 @ CHECK: .section __TEXT,c,regular,pure_instructions
166 @ CHECK: .data_region
168 @ CHECK-LABEL: Ltmp1:
171 @ CHECK-LABEL: Ltmp2:
173 @ CHECK: .end_data_region
175 @ CHECK: .section __TEXT,d,regular,pure_instructions
176 @ CHECK: .data_region
178 @ CHECK-LABEL: Ltmp3:
181 @ CHECK-LABEL: Ltmp4:
183 @ CHECK: .end_data_region
185 @ CHECK: .section __TEXT,e,regular,pure_instructions
186 @ CHECK: .data_region
188 @ CHECK-LABEL: Ltmp5:
191 @ CHECK-LABEL: Ltmp6:
193 @ CHECK: .end_data_region
195 @ Should not switch to section because it has no constant pool
196 @ CHECK-NOT: .section __TEXT,f,regular,pure_instructions
198 @ CHECK: .section __TEXT,g,regular,pure_instructions
199 @ CHECK: .data_region
201 @ CHECK-LABEL: Ltmp7:
203 @ CHECK: .end_data_region
205 @ CHECK: .section __TEXT,h,regular,pure_instructions
206 @ CHECK: .data_region
208 @ CHECK-LABEL: Ltmp8:
210 @ CHECK: .end_data_region
212 @ CHECK: .section __TEXT,i,regular,pure_instructions
213 @ CHECK: .data_region
215 @ CHECK-LABEL: Ltmp9:
217 @ CHECK: .end_data_region
219 @ CHECK: .section __TEXT,j,regular,pure_instructions
220 @ CHECK: .data_region
222 @ CHECK-LABEL: Ltmp10:
225 @ CHECK-LABEL: Ltmp11:
227 @ CHECK: .end_data_region
229 @ CHECK: .section __TEXT,k,regular,pure_instructions
230 @ CHECK: .data_region
232 @ CHECK-LABEL: Ltmp12:
235 @ CHECK-LABEL: Ltmp13:
237 @ CHECK: .end_data_region
239 @ CHECK: .section __TEXT,l,regular,pure_instructions
240 @ CHECK: .data_region
242 @ CHECK-LABEL: Ltmp14:
245 @ CHECK-LABEL: Ltmp15:
247 @ CHECK: .end_data_region