Skip to content
  1. May 13, 2013
  2. May 11, 2013
    • Rafael Espindola's avatar
      Change getFrameMoves to return a const reference. · 1b09836b
      Rafael Espindola authored
      To add a frame now there is a dedicated addFrameMove which also takes
      care of constructing the move itself.
      
      llvm-svn: 181657
      1b09836b
    • Reed Kotler's avatar
      Checkin in of first of several patches to finish implementation of · 783c7944
      Reed Kotler authored
      mips16/mips32 floating point interoperability. 
      
      This patch fixes returns from mips16 functions so that if the function
      was in fact called by a mips32 hard float routine, then values
      that would have been returned in floating point registers are so returned.
      
      Mips16 mode has no floating point instructions so there is no way to
      load values into floating point registers.
      
      This is needed when returning float, double, single complex, double complex
      in the Mips ABI.
      
      Helper functions in libc for mips16 are available to do this.
      
      For efficiency purposes, these helper functions have a different calling
      convention from normal Mips calls.
      
      Registers v0,v1,a0,a1 are used to pass parameters instead of
      a0,a1,a2,a3.
      
      This is because v0,v1,a0,a1 are the natural registers used to return
      floating point values in soft float. These values can then be moved
      to the appropriate floating point registers with no extra cost.
      
      The only register that is modified is ra in this call.
      
      The helper functions make sure that the return values are in the floating
      point registers that they would be in if soft float was not in effect
      (which it is for mips16, though the soft float is implemented using a mips32
      library that uses hard float).
       
      
      llvm-svn: 181641
      783c7944
  3. May 10, 2013
  4. May 09, 2013
    • Bill Wendling's avatar
      Generate a compact unwind encoding in the face of a stack alignment push. · 07fe235e
      Bill Wendling authored
      We generate a `push' of a random register (%rax) if the stack needs to be
      aligned by the size of that register. However, this could mess up compact unwind
      generation. In particular, we want to still generate compact unwind in the
      presence of this monstrosity.
      
      Check if the push of of the %rax/%eax register. If it is and it's marked with
      the `FrameSetup' flag, then we can generate a compact unwind encoding for the
      function only if the push is the last FrameSetup instruction.
      
      llvm-svn: 181540
      07fe235e
    • Jyotsna Verma's avatar
      Hexagon: Remove switch cases from GetDotNewPredOp and isPostIncrement functions. · 00681dc1
      Jyotsna Verma authored
      No functionality change.
      
      llvm-svn: 181535
      00681dc1
    • Jyotsna Verma's avatar
      Hexagon: Use relation map for getMatchingCondBranchOpcode() and · 978e972f
      Jyotsna Verma authored
      getInvertedPredicatedOpcode() functions instead of switch cases.
      
      llvm-svn: 181530
      978e972f
    • Bill Wendling's avatar
      Simplify the code a bit. · 98d5c52d
      Bill Wendling authored
      The compact unwind registers were defined in two different
      places. It's better just to place them in the function that uses them
      and specify that this is a 64-bit or 32-bit machine.
      
      No functionality change.
      
      llvm-svn: 181529
      98d5c52d
    • Richard Osborne's avatar
      [XCore] Fix handling of functions where only the LR is spilled. · 1333fa3d
      Richard Osborne authored
      Previously we only checked if the LR required saving if the frame size was
      non zero. However because the caller reserves 1 word for the callee to use
      that doesn't count towards our frame size it is possible for the LR to need
      saving and for the frame size to be 0.
      
      We didn't hit when the LR needed saving because of a function calls because
      the 1 word of stack we must allocate for our callee means the frame size
      is always non zero in this case. However we can hit this case if the LR is
      clobbered in inline asm.
      
      llvm-svn: 181520
      1333fa3d
  5. May 08, 2013
  6. May 07, 2013
Loading