This is an archive of the discontinued LLVM Phabricator instance.

[ARM] do not consider sp as deprecated for ldm/stm
ClosedPublic

Authored by falstaff84 on Jun 26 2020, 4:43 PM.

Details

Summary

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.

Diff Detail

Event Timeline

falstaff84 created this revision.Jun 26 2020, 4:43 PM
SjoerdMeijer accepted this revision.Jul 29 2020, 8:59 AM
SjoerdMeijer added a subscriber: SjoerdMeijer.

Yep, agree, LGTM

This revision is now accepted and ready to land.Jul 29 2020, 8:59 AM

bumping; was this waiting on anything?

@SjoerdMeijer can you please commit this? I don't think @falstaff84 has commit access.

This revision was landed with ongoing or failed builds.Feb 23 2021, 5:27 AM
This revision was automatically updated to reflect the committed changes.

Sorry missed the earlier message, but this has now been committed.