[llvm-dev] Saving VFP registers for arm interrupt functions

Vossen, Jake via llvm-dev llvm-dev at lists.llvm.org
Mon Jun 21 12:08:04 PDT 2021

Hey everyone,

Currently, interrupt attributes on ARM do not save the VFP registers on Non-M class CPUs: "If VFP operations are needed, that state must be saved manually" (https://clang.llvm.org/docs/AttributeReference.html#interrupt-arm). At TI, based on customer feedback, we would like to allow users to change this behavior.

Preliminary thoughts is to add a new `interrupt_save_ fp` attribute that will change the behavior to save D0-D16, FPEXC, and FPSCR. From a codegen side, this change can probably be implemented by manually adding some instructions in the `ARMFrameLowering::spillCalleeSavedRegisters`, or similar to CMSE, add a pseudo-instruction.

This email is to try and get feedback around:

  *   Design implementation, if anyone has thoughts on best ways to implement this
  *   Existing functionality that is similar, (either in other architectures or in ARM) that can be used to model this feature (CMSE is currently the closest thing I have found)
  *   Upstreamability - if possible, what would this feature have to look like to get upstreamed.


Jake Vossen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210621/1f160c9b/attachment.html>

More information about the llvm-dev mailing list