Skip to content
  1. May 16, 2013
  2. May 14, 2013
    • Reed Kotler's avatar
      Fix typo. · 821e86f0
      Reed Kotler authored
      llvm-svn: 181759
      821e86f0
    • Reed Kotler's avatar
      Removed an unnamed namespace and forgot to make two of the functions inside · cad47f02
      Reed Kotler authored
      "static".
      
      llvm-svn: 181754
      cad47f02
    • Reed Kotler's avatar
      This is the first of three patches which creates stubs used for · 2c4657d9
      Reed Kotler authored
      Mips16/32 floating point interoperability.
      
      When Mips16 code calls external functions that would normally have some
      of its parameters or return values passed in floating point registers,
      it needs (Mips32) helper functions to do this because while in Mips16 mode
      there is no ability to access the floating point registers.
      
      In Pic mode, this is done with a set of predefined functions in libc.
      This case is already handled in llvm for Mips16.
      
      In static relocation mode, for efficiency reasons, the compiler generates
      stubs that the linker will use if it turns out that the external function
      is a Mips32 function. (If it's Mips16, then it does not need the helper
      stubs).
      
      These stubs are identically named and the linker knows about these tricks
      and will not create multiple copies and will delete them if they are not
      needed.
      
      llvm-svn: 181753
      2c4657d9
  3. May 13, 2013
  4. 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
  5. May 10, 2013
  6. May 08, 2013
  7. May 04, 2013
  8. May 03, 2013
  9. May 02, 2013
  10. May 01, 2013
  11. Apr 30, 2013
  12. Apr 26, 2013
    • Jack Carter's avatar
      Mips assembler: .set reorder support · c15c1d24
      Jack Carter authored
      Mips have delayslots for certain instructions 
      like jumps and branches. These are instructions 
      that follow the branch or jump and are executed
      before the jump or branch is completed.
      
      Early Mips compilers could not cope with delayslots
      and left them up to the assembler. The assembler would
      fill the delayslots with the appropriate instruction,
      usually just a nop to allow correct runtime behavior.
      
      The default behavior for this is set with .set reorder.
      To tell the assembler that you don't want it to mess with
      the delayslot one used .set noreorder.
      
      For backwards compatibility we need to support
      .set reorder and have it be the default behavior in the 
      assembler.
      
      Our support for it is to insert a NOP directly after an
      instruction with a delayslot when in .set reorder mode.
      
      Contributer: Vladimir Medic
      llvm-svn: 180584
      c15c1d24
  13. Apr 25, 2013
  14. Apr 23, 2013
  15. Apr 22, 2013
  16. Apr 20, 2013
Loading