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
160 @ CHECK: .data_region
161 @ CHECK-LABEL: Ltmp0:
163 @ CHECK: .end_data_region
165 @ CHECK: .section __TEXT,c,regular,pure_instructions
167 @ CHECK: .data_region
168 @ CHECK-LABEL: Ltmp1:
170 @ CHECK-LABEL: Ltmp2:
172 @ CHECK: .end_data_region
174 @ CHECK: .section __TEXT,d,regular,pure_instructions
176 @ CHECK: .data_region
177 @ CHECK-LABEL: Ltmp3:
179 @ CHECK-LABEL: Ltmp4:
181 @ CHECK: .end_data_region
183 @ CHECK: .section __TEXT,e,regular,pure_instructions
185 @ CHECK: .data_region
186 @ CHECK-LABEL: Ltmp5:
188 @ CHECK-LABEL: Ltmp6:
190 @ CHECK: .end_data_region
192 @ Should not switch to section because it has no constant pool
193 @ CHECK-NOT: .section __TEXT,f,regular,pure_instructions
195 @ CHECK: .section __TEXT,g,regular,pure_instructions
197 @ CHECK: .data_region
198 @ CHECK-LABEL: Ltmp7:
200 @ CHECK: .end_data_region
202 @ CHECK: .section __TEXT,h,regular,pure_instructions
204 @ CHECK: .data_region
205 @ CHECK-LABEL: Ltmp8:
207 @ CHECK: .end_data_region
209 @ CHECK: .section __TEXT,i,regular,pure_instructions
211 @ CHECK: .data_region
212 @ CHECK-LABEL: Ltmp9:
214 @ CHECK: .end_data_region
216 @ CHECK: .section __TEXT,j,regular,pure_instructions
218 @ CHECK: .data_region
219 @ CHECK-LABEL: Ltmp10:
221 @ CHECK-LABEL: Ltmp11:
223 @ CHECK: .end_data_region
225 @ CHECK: .section __TEXT,k,regular,pure_instructions
227 @ CHECK: .data_region
228 @ CHECK-LABEL: Ltmp12:
230 @ CHECK-LABEL: Ltmp13:
232 @ CHECK: .end_data_region
234 @ CHECK: .section __TEXT,l,regular,pure_instructions
236 @ CHECK: .data_region
237 @ CHECK-LABEL: Ltmp14:
239 @ CHECK-LABEL: Ltmp15:
241 @ CHECK: .end_data_region