brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.1 KiB · 941310a Raw
338 lines · plain
1@ This test has a partner (ldr-pseudo.s) that contains matching2@ tests for the ldr-pseudo on linux targets. We need separate files3@ because the syntax for switching sections and temporary labels differs4@ between darwin and linux. Any tests added here should have a matching5@ test added there.6 7@RUN: llvm-mc -triple   armv7-base-apple-darwin %s | FileCheck --check-prefix=CHECK-ARM --check-prefix=CHECK %s8@RUN: llvm-mc -triple   armv5-base-apple-darwin %s | FileCheck --check-prefix=CHECK-ARMV5 --check-prefix=CHECK %s        9@RUN: llvm-mc -triple thumbv5-base-apple-darwin %s | FileCheck --check-prefix=CHECK-THUMB --check-prefix=CHECK %s10@RUN: llvm-mc -triple thumbv7-base-apple-darwin %s | FileCheck --check-prefix=CHECK-THUMB2 --check-prefix=CHECK %s11@RUN: llvm-mc -triple thumbv8m.base-base-apple-darwin %s | FileCheck --check-prefix=CHECK-BASELINE --check-prefix=CHECK %s12@13@ Check that large constants are converted to ldr from constant pool14@15@ simple test16.section __TEXT,b,regular,pure_instructions17@ CHECK-LABEL: f3:18f3:19  ldr r0, =0x1000220@ CHECK: ldr r0, Ltmp021 22@ loading multiple constants23.section __TEXT,c,regular,pure_instructions24@ CHECK-LABEL: f4:25f4:26  ldr r0, =0x1000327@ CHECK: ldr r0, Ltmp128  adds r0, r0, #129  adds r0, r0, #130  adds r0, r0, #131  adds r0, r0, #132  ldr r0, =0x1000433@ CHECK: ldr r0, Ltmp234  adds r0, r0, #135  adds r0, r0, #136 37@ TODO: the same constants should have the same constant pool location38.section __TEXT,d,regular,pure_instructions39@ CHECK-LABEL: f5:40f5:41  ldr r0, =0x1000542@ CHECK: ldr r0, Ltmp343  adds r0, r0, #144  adds r0, r0, #145  adds r0, r0, #146  adds r0, r0, #147  adds r0, r0, #148  adds r0, r0, #149  adds r0, r0, #150  ldr r0, =0x1000551@ CHECK: ldr r0, Ltmp352  adds r0, r0, #153  adds r0, r0, #154  adds r0, r0, #155  adds r0, r0, #156  adds r0, r0, #157  adds r0, r0, #158 59@ a section defined in multiple pieces should be merged and use a single constant pool60.section __TEXT,e,regular,pure_instructions61@ CHECK-LABEL: f6:62f6:63  ldr r0, =0x1000664@ CHECK: ldr r0, Ltmp465  adds r0, r0, #166  adds r0, r0, #167  adds r0, r0, #168 69.section __TEXT,f,regular,pure_instructions70@ CHECK-LABEL: f7:71f7:72  adds r0, r0, #173  adds r0, r0, #174  adds r0, r0, #175 76.section __TEXT,e,regular,pure_instructions77@ CHECK-LABEL: f8:78f8:79  adds r0, r0, #180  ldr r0, =0x1000781@ CHECK: ldr r0, Ltmp582  adds r0, r0, #183  adds r0, r0, #184 85@86@ Check that symbols can be loaded using ldr pseudo87@88 89@ load an undefined symbol90.section __TEXT,g,regular,pure_instructions91@ CHECK-LABEL: f9:92f9:93  ldr r0, =foo94@ CHECK: ldr r0, Ltmp695 96@ load a symbol from another section97.section __TEXT,h,regular,pure_instructions98@ CHECK-LABEL: f10:99f10:100  ldr r0, =f5101@ CHECK: ldr r0, Ltmp7102 103@ load a symbol from the same section104.section __TEXT,i,regular,pure_instructions105@ CHECK-LABEL: f11:106f11:107  ldr r0, =f12108@ CHECK: ldr r0, Ltmp8109 110@ CHECK-LABEL: f12:111f12:112  adds r0, r0, #1113  adds r0, r0, #1114 115.section __TEXT,j,regular,pure_instructions116@ mix of symbols and constants117@ CHECK-LABEL: f13:118f13:119  adds r0, r0, #1120  adds r0, r0, #1121  ldr r0, =0x10008122@ CHECK: ldr r0, Ltmp9123  adds r0, r0, #1124  adds r0, r0, #1125  ldr r0, =bar126@ CHECK: ldr r0, Ltmp10127  adds r0, r0, #1128  adds r0, r0, #1129@130@ Check for correct usage in other contexts131@132 133@ usage in macro134.macro useit_in_a_macro135  ldr r0, =0x10009136  ldr r0, =baz137.endm138.section __TEXT,k,regular,pure_instructions139@ CHECK-LABEL: f14:140f14:141  useit_in_a_macro142@ CHECK: ldr r0, Ltmp11143@ CHECK: ldr r0, Ltmp12144 145@ usage with expressions146.section __TEXT,l,regular,pure_instructions147@ CHECK-LABEL: f15:148f15:149  ldr r0, =0x10001+9150@ CHECK: ldr r0, Ltmp13151  adds r0, r0, #1152  ldr r0, =bar+4153@ CHECK: ldr r0, Ltmp14154  adds r0, r0, #1155 156@ transformation to mov157.section __TEXT,m,regular,pure_instructions158@ CHECK-LABEL: f16:159f16:160 161@ Representable in ARM, and Thumb with support mov.w or movw162  ldr r1, =0x1163@ CHECK-ARM: mov r1, #1164@ CHECK-ARMV5: mov r1, #1165@ CHECK-THUMB: ldr r1, Ltmp15166@ CHECK-THUMB2: mov.w r1, #1167@ CHECK-BASELINE: movw r1, #1168 169@ Immediate is representable in A1 and T2 modified immediate only not movw170  ldr r2, =0x120000171@ CHECK-ARM: mov r2, #1179648172@ CHECK-ARMV5: mov r2, #1179648173@ CHECK-THUMB: ldr r2, Ltmp16174@ CHECK-THUMB2: mov.w r2, #1179648175@ CHECK-BASELINE: ldr r2, Ltmp15176 177@ Immediate can be represented only with movw instruction178  ldr r3, =0x1234179@ CHECK-ARM: movw r3, #4660180@ CHECK-ARMV5: ldr r3, Ltmp15181@ CHECK-THUMB: ldr r3, Ltmp17182@ CHECK-THUMB2: movw r3, #4660183@ CHECK-BASELINE: movw r3, #4660184 185@ Immediate can be represented only with T2 modified immediate186  ldr r4, =0xabababab187@ CHECK-ARM: ldr r4, Ltmp15188@ CHECK-ARMV5: ldr r4, Ltmp16189@ CHECK-THUMB: ldr r4, Ltmp18190@ CHECK-THUMB2: mov.w r4, #2880154539191@ CHECK-BASELINE: ldr r4, Ltmp16192 193@ Immediate can be represented only with A1 modified immediate194  ldr r5, =0x1000000b195@ CHECK-ARM: mov r5, #268435467196@ CHECK-ARMV5: mov r5, #268435467197@ CHECK-THUMB: ldr r5, Ltmp19198@ CHECK-THUMB2: ldr r5, Ltmp15199@ CHECK-BASELINE: ldr r5, Ltmp17200 201@ Negative numbers can be used with MVN or in Thumb2 with modified immediate202  ldr r6, =-1203@ CHECK-ARM: mvn r6, #0204@ CHECK-ARMV5: mvn r6, #0205@ CHECK-THUMB: ldr r6, Ltmp20206@ CHECK-THUMB2: mov.w r6, #-1207@ CHECK-BASELINE: ldr r6, Ltmp18208  ldr r7, =-0x100209@ CHECK-ARM: mvn r7, #255210@ CHECK-ARMV5: mvn r7, #255211@ CHECK-THUMB: ldr r7, Ltmp21212@ CHECK-THUMB2: mvn r7, #255213@ CHECK-BASELINE: ldr r7, Ltmp19214 215@ Constant expressions can be used216  .equ expr, 0x10 + 0x10217  ldr r0, = expr218@ CHECK-ARM: mov r0, #32219@ CHECK-ARMV5: mov r0, #32220@ CHECK-THUMB: ldr r0, Ltmp22221@ CHECK-THUMB2: mov.w r0, #32222@ CHECK-BASELINE: movw r0, #32223  ldr r1, = expr - 0x10224@ CHECK-ARM: mov r1, #16225@ CHECK-ARMV5: mov r1, #16226@ CHECK-THUMB: ldr r1, Ltmp23227@ CHECK-THUMB2: mov.w r1, #16228@ CHECK-BASELINE: movw r1, #16229 230@ usage of translation in macro231.macro usemov_in_a_macro232  ldr r2, =0x3233  ldr r3, =expr234.endm235@ CHECK-LABEL: f17:236f17:237  usemov_in_a_macro238@ CHECK-ARM: mov r2, #3239@ CHECK-ARM: mov r3, #32240@ CHECK-ARMV5: mov r2, #3241@ CHECK-ARMV5: mov r3, #32242@ CHECK-THUMB: ldr r2, Ltmp24243@ CHECK-THUMB: ldr r3, Ltmp22244@ CHECK-THUMB2: mov.w r2, #3245@ CHECK-THUMB2: mov.w r3, #32246@ CHECK-BASELINE: movw r2, #3247@ CHECK-BASELINE: movw r3, #32248@249@ Constant Pools250@251@ CHECK: .section __TEXT,b,regular,pure_instructions252@ CHECK: .data_region253@ CHECK: .p2align 2254@ CHECK-LABEL: Ltmp0:255@ CHECK: .long 65538256@ CHECK: .end_data_region257 258@ CHECK: .section __TEXT,c,regular,pure_instructions259@ CHECK: .data_region260@ CHECK: .p2align 2261@ CHECK-LABEL: Ltmp1:262@ CHECK: .long 65539263@ CHECK: .p2align 2264@ CHECK-LABEL: Ltmp2:265@ CHECK: .long 65540266@ CHECK: .end_data_region267 268@ CHECK: .section __TEXT,d,regular,pure_instructions269@ CHECK: .data_region270@ CHECK: .p2align 2271@ CHECK-LABEL: Ltmp3:272@ CHECK: .long 65541273@ CHECK: .end_data_region274 275@ CHECK: .section __TEXT,e,regular,pure_instructions276@ CHECK: .data_region277@ CHECK: .p2align 2278@ CHECK-LABEL: Ltmp4:279@ CHECK: .long 65542280@ CHECK: .p2align 2281@ CHECK-LABEL: Ltmp5:282@ CHECK: .long 65543283@ CHECK: .end_data_region284 285@ Should not switch to section because it has no constant pool286@ CHECK-NOT: .section __TEXT,f,regular,pure_instructions287 288@ CHECK: .section __TEXT,g,regular,pure_instructions289@ CHECK: .data_region290@ CHECK: .p2align 2291@ CHECK-LABEL: Ltmp6:292@ CHECK: .long foo293@ CHECK: .end_data_region294 295@ CHECK: .section __TEXT,h,regular,pure_instructions296@ CHECK: .data_region297@ CHECK: .p2align 2298@ CHECK-LABEL: Ltmp7:299@ CHECK: .long f5300@ CHECK: .end_data_region301 302@ CHECK: .section __TEXT,i,regular,pure_instructions303@ CHECK: .data_region304@ CHECK: .p2align 2305@ CHECK-LABEL: Ltmp8:306@ CHECK: .long f12307@ CHECK: .end_data_region308 309@ CHECK: .section __TEXT,j,regular,pure_instructions310@ CHECK: .data_region311@ CHECK: .p2align 2312@ CHECK-LABEL: Ltmp9:313@ CHECK: .long 65544314@ CHECK: .p2align 2315@ CHECK-LABEL: Ltmp10:316@ CHECK: .long bar317@ CHECK: .end_data_region318 319@ CHECK: .section __TEXT,k,regular,pure_instructions320@ CHECK: .data_region321@ CHECK: .p2align 2322@ CHECK-LABEL: Ltmp11:323@ CHECK: .long 65545324@ CHECK: .p2align 2325@ CHECK-LABEL: Ltmp12:326@ CHECK: .long baz327@ CHECK: .end_data_region328 329@ CHECK: .section __TEXT,l,regular,pure_instructions330@ CHECK: .data_region331@ CHECK: .p2align 2332@ CHECK-LABEL: Ltmp13:333@ CHECK: .long 65546334@ CHECK: .p2align 2335@ CHECK-LABEL: Ltmp14:336@ CHECK: .long bar+4337@ CHECK: .end_data_region338