[all-commits] [llvm/llvm-project] e1c3bf: [ARM] do not consider sp as deprecated for ldm/stm

sjoerdmeijer via All-commits all-commits at lists.llvm.org
Tue Feb 23 05:27:29 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: e1c3bf6afe09851537ff376ab20714dfd5f9649d
      https://github.com/llvm/llvm-project/commit/e1c3bf6afe09851537ff376ab20714dfd5f9649d
  Author: Sjoerd Meijer <sjoerd.meijer at arm.com>
  Date:   2021-02-23 (Tue, 23 Feb 2021)

  Changed paths:
    M llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
    M llvm/test/CodeGen/ARM/deprecated-asm.s
    M llvm/test/MC/ARM/arm-load-store-multiple-deprecated.s

  Log Message:
  -----------
  [ARM] do not consider sp as deprecated for ldm/stm

Early versions of the ARMv7 reference manuals considered the sp register
as a deprecated register for ldm/stm familiy of instructions. However,
later versions such as ARM DDI 0406C.d added a note to the Appendix:

D9.3 Use of the SP as a general-purpose register
Most ARM instructions, unlike Thumb instructions, provide exactly the
same access to the SP as to R0-R12. This means that it is possible to
use the SP as a general-purpose register.  Earlier issues of this manual
deprecated the use of SP in an ARM instruction, in any way that is
deprecated, not permitted, or not possible in the corresponding
Thumb instruction. However, user feedback indicates a number of cases
where these instructions are useful. Therefore, ARM no longer deprecates
these instruction uses.
Also Armv8 manuals no longer consider SP as deprecated register for ldm/
stm A32 instructions.

Furthermore, GNU as also does not print a deprecated warning when using
SP with those instructions.

Drop deprecation warning for pop/ldm/push/stm instructions.

Patch by: Stefan Agner.

Differential Revision: https://reviews.llvm.org/D82692




More information about the All-commits mailing list