Skip to content
  1. Oct 07, 2013
    • Akira Hatanaka's avatar
      [mips] Fix definition of mfhi and mflo instructions to read from the whole · 16048332
      Akira Hatanaka authored
      accumulator instead of its sub-registers, $hi and $lo. 
      
      We need this change to prevent a mflo following a mtlo from reading an
      unpredictable/undefined value, as shown in the following example:
      
      mult $6, $7 // result of $6 * $7 is written to $lo and $hi.
      mflo $2     // read lower 32-bit result from $lo.
      mtlo $4     // write to $lo. the content of $hi becomes unpredictable.
      mfhi $3     // read higher 32-bit from $hi, which has an unpredictable value.
      
      I don't have a test case for this change that reliably reproduces the problem.
      
      llvm-svn: 192119
      16048332
  2. Aug 21, 2013
  3. Aug 20, 2013
  4. Aug 08, 2013
  5. Aug 07, 2013
  6. Jun 18, 2013
  7. Jun 07, 2013
  8. May 16, 2013
    • Rafael Espindola's avatar
      Remove addFrameMove. · b08d2c2d
      Rafael Espindola authored
      Now that we have good testing, remove addFrameMove and create cfi
      instructions directly.
      
      llvm-svn: 182052
      b08d2c2d
  9. May 11, 2013
  10. May 03, 2013
    • Akira Hatanaka's avatar
      [mips] Handle reading, writing or copying of ccond field of DSP control · 5705f546
      Akira Hatanaka authored
      register.
      
      - Define pseudo instructions which store or load ccond field of the DSP
        control register.
      - Emit the pseudos in MipsSEInstrInfo::storeRegToStack and loadRegFromStack.
      - Expand the pseudos before callee-scan save.
      - Emit instructions RDDSP or WRDSP to copy between ccond field and GPRs. 
      
      llvm-svn: 180969
      5705f546
  11. May 02, 2013
  12. May 01, 2013
  13. Mar 30, 2013
  14. Mar 23, 2013
    • Hal Finkel's avatar
      Allow the register scavenger to spill multiple registers · 9e331c2f
      Hal Finkel authored
      This patch lets the register scavenger make use of multiple spill slots in
      order to guarantee that it will be able to provide multiple registers
      simultaneously.
      
      To support this, the RS's API has changed slightly: setScavengingFrameIndex /
      getScavengingFrameIndex have been replaced by addScavengingFrameIndex /
      isScavengingFrameIndex / getScavengingFrameIndices.
      
      In forthcoming commits, the PowerPC backend will use this capability in order
      to implement the spilling of condition registers, and some special-purpose
      registers, without relying on r0 being reserved. In some cases, spilling these
      registers requires two GPRs: one for addressing and one to hold the value being
      transferred.
      
      llvm-svn: 177774
      9e331c2f
  15. Feb 21, 2013
    • Eli Bendersky's avatar
      Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo · 8da87163
      Eli Bendersky authored
      to TargetFrameLowering, where it belongs. Incidentally, this allows us
      to delete some duplicated (and slightly different!) code in TRI.
      
      There are potentially other layering problems that can be cleaned up
      as a result, or in a similar manner.
      
      The refactoring was OK'd by Anton Korobeynikov on llvmdev.
      
      Note: this touches the target interfaces, so out-of-tree targets may
      be affected.
      
      llvm-svn: 175788
      8da87163
  16. Jan 30, 2013
  17. Jan 02, 2013
    • Chandler Carruth's avatar
      Move all of the header files which are involved in modelling the LLVM IR · 9fb823bb
      Chandler Carruth authored
      into their new header subdirectory: include/llvm/IR. This matches the
      directory structure of lib, and begins to correct a long standing point
      of file layout clutter in LLVM.
      
      There are still more header files to move here, but I wanted to handle
      them in separate commits to make tracking what files make sense at each
      layer easier.
      
      The only really questionable files here are the target intrinsic
      tablegen files. But that's a battle I'd rather not fight today.
      
      I've updated both CMake and Makefile build systems (I think, and my
      tests think, but I may have missed something).
      
      I've also re-sorted the includes throughout the project. I'll be
      committing updates to Clang, DragonEgg, and Polly momentarily.
      
      llvm-svn: 171366
      9fb823bb
  18. Dec 03, 2012
    • Chandler Carruth's avatar
      Use the new script to sort the includes of every file under lib. · ed0881b2
      Chandler Carruth authored
      Sooooo many of these had incorrect or strange main module includes.
      I have manually inspected all of these, and fixed the main module
      include to be the nearest plausible thing I could find. If you own or
      care about any of these source files, I encourage you to take some time
      and check that these edits were sensible. I can't have broken anything
      (I strictly added headers, and reordered them, never removed), but they
      may not be the headers you'd really like to identify as containing the
      API being implemented.
      
      Many forward declarations and missing includes were added to a header
      files to allow them to parse cleanly when included first. The main
      module rule does in fact have its merits. =]
      
      llvm-svn: 169131
      ed0881b2
  19. Nov 03, 2012
  20. Oct 08, 2012
  21. Aug 02, 2012
  22. Aug 01, 2012
  23. Jul 31, 2012
  24. Jul 25, 2012
  25. Jul 24, 2012
  26. Jul 21, 2012
  27. Jul 11, 2012
  28. Jul 10, 2012
  29. Jun 27, 2012
  30. Jun 21, 2012
  31. Jun 14, 2012
  32. May 30, 2012
  33. May 12, 2012
  34. Apr 20, 2012
  35. Mar 28, 2012
    • Akira Hatanaka's avatar
      Emit all directives except for ".cprestore" during asm printing rather than emit · 34ee3ff8
      Akira Hatanaka authored
      them as machine instructions. Directives ".set noat" and ".set at" are now
      emitted only at the beginning and end of a function except in the case where
      they are emitted to enclose .cpload with an immediate operand that doesn't fit
      in 16-bit field or unaligned load/stores.
      
      Also, make the following changes:
      - Remove function isUnalignedLoadStore and use a switch-case statement to
        determine whether an instruction is an unaligned load or store.
      
      - Define helper function CreateMCInst which generates an instance of an MCInst
        from an opcode and a list of operands.
      
      llvm-svn: 153552
      34ee3ff8
  36. Mar 17, 2012
Loading