XCore target: Make handling of large frames not dependent upon an FP.

Robert Lytton robert at xmos.com
Wed Nov 20 10:19:14 PST 2013


Hi,

Here is a patch to enhance the XCores handling of large frames.

Q: is the handling of register scavenging correct below? e.g. the use of RS->setUsed() &  RegState::Kill
      // We previously asserted SPAdj == 0.
      unsigned ScratchOffset = RS->scavengeRegister(&XCore::GRRegsRegClass, II, 0);
      RS->setUsed(ScratchOffset);
      loadConstant(II, TII, ScratchOffset, Offset);
      BuildMI(MBB, II, dl, TII.get(XCore::LDW_3r), Reg)
              .addReg(FrameReg)
              .addReg(ScratchOffset, RegState::Kill);

Details:

    eliminateFrameIndex() has been reworked to handle both small & large frames
    with either a FP or SP.
    An additional Slot is required for Scavenging spills when not using FP for large frames.
    Reworked the handling of Register Scavenging.

    Whether we are using an FP or not, whether it is a large frame or not,
    and whether we are using a large code model or not are now independent.

Robert

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131120/29a17e89/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PatchLargeFrameHandling
Type: application/octet-stream
Size: 31884 bytes
Desc: PatchLargeFrameHandling
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131120/29a17e89/attachment.obj>


More information about the llvm-commits mailing list