Skip to content
  1. Feb 22, 2010
  2. Jan 05, 2010
  3. Nov 05, 2009
  4. Jul 08, 2009
  5. Nov 19, 2008
  6. Oct 27, 2008
    • David Greene's avatar
      · ce2a9381
      David Greene authored
      Have TableGen emit setSubgraphColor calls under control of a -gen-debug
      flag.  Then in a debugger developers can set breakpoints at these calls
      to see waht is about to be selected and what the resulting subgraph
      looks like.  This really helps when debugging instruction selection.
      
      llvm-svn: 58278
      ce2a9381
  7. Oct 16, 2008
  8. Oct 03, 2008
    • Dan Gohman's avatar
      Avoid creating two TargetLowering objects for each target. · 2c836cf1
      Dan Gohman authored
      Instead, just create one, and make sure everything that needs
      it can access it. Previously most of the SelectionDAGISel
      subclasses all had their own TargetLowering object, which was
      redundant with the TargetLowering object in the TargetMachine
      subclasses, except on Sparc, where SparcTargetMachine
      didn't have a TargetLowering object. Change Sparc to work
      more like the other targets here.
      
      llvm-svn: 57016
      2c836cf1
  9. Sep 12, 2008
  10. Aug 28, 2008
  11. Aug 23, 2008
    • Dan Gohman's avatar
      Move the point at which FastISel taps into the SelectionDAGISel · eb0cee91
      Dan Gohman authored
      process up to a higher level. This allows FastISel to leverage
      more of SelectionDAGISel's infastructure, such as updating Machine
      PHI nodes.
      
      Also, implement transitioning from SDISel back to FastISel in
      the middle of a block, so it's now possible to go back and
      forth. This allows FastISel to hand individual CallInsts and other
      complicated things off to SDISel to handle, while handling the rest
      of the block itself.
      
      To help support this, reorganize the SelectionDAG class so that it
      is allocated once and reused throughout a function, instead of
      being completely reallocated for each block.
      
      llvm-svn: 55219
      eb0cee91
  12. Aug 21, 2008
  13. Jul 27, 2008
  14. Jul 17, 2008
    • Dan Gohman's avatar
      Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk · 17059681
      Dan Gohman authored
      replacement of multiple values. This is slightly more efficient
      than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
      could be optimized even further. However, an important property of this
      new function is that it handles the case where the source value set and
      destination value set overlap. This makes it feasible for isel to use
      SelectNodeTo in many very common cases, which is advantageous because
      SelectNodeTo avoids a temporary node and it doesn't require CSEMap
      updates for users of values that don't change position.
      
      Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
      handle operand lists more efficiently, and to correctly handle a number
      of corner cases to which its new wider use exposes it.
      
      This commit also includes a change to the encoding of post-isel opcodes
      in SDNodes; now instead of being sandwiched between the target-independent
      pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
      opcodes are now represented as negative values. This makes it possible
      to test if an opcode is pre-isel or post-isel without having to know
      the size of the current target's post-isel instruction set.
      
      These changes speed up llc overall by 3% and reduce memory usage by 10%
      on the InstructionCombining.cpp testcase with -fast and -regalloc=local.
      
      llvm-svn: 53728
      17059681
  15. Jul 11, 2008
  16. Jul 07, 2008
  17. Jun 30, 2008
  18. May 14, 2008
  19. May 13, 2008
    • Sanjiv Gupta's avatar
      Adding files for Microchip's PIC16 target. · 4394c237
      Sanjiv Gupta authored
      A brief description about PIC16:
      ===============================
      PIC16 is an 8-bit microcontroller with only one 8-bit register which is the 
      accumulator. All arithmetic/load/store operations are 8-bit only.
      The architecture has two address spaces: program and data. The program memory 
      is divided into 2K pages and the data memory is divided into banks of 128 byte, with only 80 usable bytes, resulting in an non-contiguous data memory. 
      
      It supports direct data memory access (by specifying the address as part of the instruction) and indirect data and program memory access (in an unorthodox fashion which utilize a 16 bit pointer register). 
      
      Two classes of registers exist: (8-bit class which is only one
      accumulator) (16-bit class, which contains one or more 16 bit
      pointer(s))
      
      llvm-svn: 51027
      4394c237
Loading