9239bbd3a6
bfd/ PR ld/20030 * elf32-arm.c (is_thumb2_vldm): Account for T1 (DP) encoding. (stm32l4xx_need_create_replacing_stub): Rename ambiguous nb_regs to nb_words. (create_instruction_vldmia): Add is_dp to disambiguate SP/DP encoding. (create_instruction_vldmdb): Likewise. (stm32l4xx_create_replacing_stub_vldm): is_dp detects DP encoding, uses it to re-encode. ld/ PR ld/20030 * testsuite/ld-arm/arm-elf.exp: Run new stm32l4xx-fix-vldm-dp tests. Fix misnamed stm32l4xx-fix-all. * testsuite/ld-arm/stm32l4xx-fix-vldm-dp.s: New tests for multiple loads with DP registers. * testsuite/ld-arm/stm32l4xx-fix-vldm-dp.d: New reference file. * testsuite/ld-arm/stm32l4xx-fix-vldm.s: Add missing comment. * testsuite/ld-arm/stm32l4xx-fix-all.s: Add tests for multiple loads with DP registers. * testsuite/ld-arm/stm32l4xx-fix-all.d: Update reference.
27 lines
731 B
ArmAsm
27 lines
731 B
ArmAsm
.syntax unified
|
|
.cpu cortex-m4
|
|
.fpu fpv4-sp-d16
|
|
.text
|
|
.align 1
|
|
.thumb
|
|
.thumb_func
|
|
.global _start
|
|
_start:
|
|
@ VLDM CASE #1
|
|
@ vldm rx, {...}
|
|
@ -> vldm rx!, {8_words_or_less} for each
|
|
@ -> sub rx, rx, #size (list)
|
|
vldm r10, {d1-d15}
|
|
|
|
@ VLDM CASE #2
|
|
@ vldm rx!, {...}
|
|
@ -> vldm rx!, {8_words_or_less} for each needed 8_word
|
|
@ This also handles vpop instruction (when rx is sp)
|
|
vldm r7!, {d5-d15}
|
|
@ Explicit VPOP test
|
|
vpop {d1-d5}
|
|
|
|
@ VLDM CASE #3
|
|
@ vldmd rx!, {...}
|
|
@ -> vldmb rx!, {8_words_or_less} for each needed 8_word
|
|
vldmdb r12!, {d1-d15}
|