131 lines · plain
1@ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \2@ RUN: | llvm-readobj -S --sd --sr - | FileCheck %s3 4@ Check the .vsave directive5 6@ The .vsave directive records the VFP registers which are pushed to the7@ stack. There are two different opcodes:8@9@ 0xC800: pop d[(16+x+y):(16+x)] @ d[16+x+y]-d[16+x] must be consecutive10@ 0xC900: pop d[(x+y):x] @ d[x+y]-d[x] must be consecutive11 12 13 .syntax unified14 15@-------------------------------------------------------------------------------16@ TEST117@-------------------------------------------------------------------------------18 .section .TEST119 .globl func1a20 .align 221 .type func1a,%function22 .fnstart23func1a:24 .vsave {d0}25 vpush {d0}26 vpop {d0}27 bx lr28 .personality __gxx_personality_v029 .handlerdata30 .fnend31 32 .globl func1b33 .align 234 .type func1b,%function35 .fnstart36func1b:37 .vsave {d0, d1, d2, d3}38 vpush {d0, d1, d2, d3}39 vpop {d0, d1, d2, d3}40 bx lr41 .personality __gxx_personality_v042 .handlerdata43 .fnend44 45 .globl func1c46 .align 247 .type func1c,%function48 .fnstart49func1c:50 .vsave {d0, d1, d2, d3, d4, d5, d6, d7}51 vpush {d0, d1, d2, d3, d4, d5, d6, d7}52 vpop {d0, d1, d2, d3, d4, d5, d6, d7}53 bx lr54 .personality __gxx_personality_v055 .handlerdata56 .fnend57 58 .globl func1d59 .align 260 .type func1d,%function61 .fnstart62func1d:63 .vsave {d2, d3, d4, d5, d6, d7}64 vpush {d2, d3, d4, d5, d6, d7}65 vpop {d2, d3, d4, d5, d6, d7}66 bx lr67 .personality __gxx_personality_v068 .handlerdata69 .fnend70 71@ CHECK: Section {72@ CHECK: Name: .ARM.extab.TEST173@ CHECK: SectionData (74@ CHECK: 0000: 00000000 B000C900 00000000 B003C900 |................|75@ CHECK: 0010: 00000000 B007C900 00000000 B025C900 |.............%..|76@ CHECK: )77@ CHECK: }78 79 80 81@-------------------------------------------------------------------------------82@ TEST283@-------------------------------------------------------------------------------84 .section .TEST285 .globl func2a86 .align 287 .type func2a,%function88 .fnstart89func2a:90 .vsave {d16}91 vpush {d16}92 vpop {d16}93 bx lr94 .personality __gxx_personality_v095 .handlerdata96 .fnend97 98 .globl func2b99 .align 2100 .type func2b,%function101 .fnstart102func2b:103 .vsave {d16, d17, d18, d19}104 vpush {d16, d17, d18, d19}105 vpop {d16, d17, d18, d19}106 bx lr107 .personality __gxx_personality_v0108 .handlerdata109 .fnend110 111 .globl func2c112 .align 2113 .type func2c,%function114 .fnstart115func2c:116 .vsave {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}117 vpush {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}118 vpop {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}119 bx lr120 .personality __gxx_personality_v0121 .handlerdata122 .fnend123 124@ CHECK: Section {125@ CHECK: Name: .ARM.extab.TEST2126@ CHECK: SectionData (127@ CHECK: 0000: 00000000 B000C800 00000000 B003C800 |................|128@ CHECK: 0010: 00000000 B00FC800 |........|129@ CHECK: )130@ CHECK: }131