Skip to content
  1. Oct 03, 2008
  2. Sep 29, 2008
  3. Sep 26, 2008
  4. Sep 25, 2008
  5. Sep 23, 2008
  6. Sep 22, 2008
  7. Sep 16, 2008
  8. Sep 13, 2008
    • Dan Gohman's avatar
      Remove isImm(), isReg(), and friends, in favor of · 38453eeb
      Dan Gohman authored
      isImmediate(), isRegister(), and friends, to avoid confusion
      about having two different names with the same meaning. I'm
      not attached to the longer names, and would be ok with
      changing to the shorter names if others prefer it.
      
      llvm-svn: 56189
      38453eeb
    • Dan Gohman's avatar
      Define CallSDNode, an SDNode subclass for use with ISD::CALL. · d3fe174c
      Dan Gohman authored
      Currently it just holds the calling convention and flags
      for isVarArgs and isTailCall.
      
      And it has several utility methods, which eliminate magic
      5+2*i and similar index computations in several places.
      
      CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle
      nodes that are not CSE'd gracefully.
      
      llvm-svn: 56183
      d3fe174c
  9. Sep 12, 2008
  10. Sep 04, 2008
  11. Aug 28, 2008
  12. Aug 26, 2008
  13. 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
  14. Aug 21, 2008
  15. Aug 16, 2008
  16. Aug 15, 2008
  17. Aug 08, 2008
  18. Aug 07, 2008
  19. Aug 03, 2008
  20. Jul 27, 2008
  21. 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
  22. Jul 10, 2008
  23. Jul 08, 2008
    • Dan Gohman's avatar
      Pool-allocation for MachineInstrs, MachineBasicBlocks, and · 3b460303
      Dan Gohman authored
      MachineMemOperands. The pools are owned by MachineFunctions.
      
      This drastically reduces the number of calls to malloc/free made
      during the "Emit" phase of scheduling, as well as later phases
      in CodeGen. Combined with other changes, this speeds up the
      "instruction selection" phase of CodeGen by 10% in some cases.
      
      llvm-svn: 53212
      3b460303
  24. Jul 07, 2008
  25. Jul 03, 2008
    • Evan Cheng's avatar
      - Remove calls to copyKillDeadInfo which is an N^2 function. Instead,... · 7d98a48f
      Evan Cheng authored
      - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
      - Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.
      
      llvm-svn: 53097
      7d98a48f
  26. Jul 02, 2008
    • Duncan Sands's avatar
      Add a new getMergeValues method that does not need · 739a0548
      Duncan Sands authored
      to be passed the list of value types, and use this
      where appropriate.  Inappropriate places are where
      the value type list is already known and may be
      long, in which case the existing method is more
      efficient.
      
      llvm-svn: 53035
      739a0548
  27. Jul 01, 2008
    • Dan Gohman's avatar
      Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating · fb19f940
      Dan Gohman authored
      the need for a flavor operand, and add a new SDNode subclass,
      LabelSDNode, for use with them to eliminate the need for a label id
      operand.
      
      Change instruction selection to let these label nodes through
      unmodified instead of creating copies of them. Teach the MachineInstr
      emitter how to emit a MachineInstr directly from an ISD label node.
      
      This avoids the need for allocating SDNodes for the label id and
      flavor value, as well as SDNodes for each of the post-isel label,
      label id, and label flavor.
      
      llvm-svn: 52943
      fb19f940
  28. Jun 30, 2008
    • Dan Gohman's avatar
      Rename ISD::LOCATION to ISD::DBG_STOPPOINT to better reflect its · 5c73a886
      Dan Gohman authored
      purpose, and give it a custom SDNode subclass so that it doesn't
      need to have line number, column number, filename string, and
      directory string, all existing as individual SDNodes to be the
      operands.
      
      This was the only user of ISD::STRING, StringSDNode, etc., so
      remove those and some associated code.
      
      This makes stop-points considerably easier to read in
      -view-legalize-dags output, and reduces overhead (creating new
      nodes and copying std::strings into them) on code containing
      debugging information.
      
      llvm-svn: 52924
      5c73a886
    • Evan Cheng's avatar
      Split scheduling from instruction selection. · 0711d68f
      Evan Cheng authored
      llvm-svn: 52923
      0711d68f
Loading