Skip to content
  1. Sep 25, 2008
  2. Sep 24, 2008
  3. Sep 23, 2008
  4. Sep 22, 2008
  5. Sep 21, 2008
  6. Sep 20, 2008
  7. Sep 18, 2008
    • Dan Gohman's avatar
      Add a new "fast" scheduler. This is currently basically just a · 95be7d7b
      Dan Gohman authored
      copy of the BURRList scheduler, but with several parts ripped
      out, such as backtracking, online topological sort maintenance
      (needed by backtracking), the priority queue, and Sethi-Ullman
      number computation and maintenance (needed by the priority
      queue). As a result of all this, it generates somewhat lower
      quality code, but that's its tradeoff for running about 30%
      faster than list-burr in -fast mode in many cases.
      
      This is somewhat experimental. Moving forward, major pieces of
      this can be refactored with pieces in common with
      ScheduleDAGRRList.cpp.
      
      llvm-svn: 56307
      95be7d7b
  8. Sep 17, 2008
    • Dale Johannesen's avatar
      Add a bit to mark operands of asm's that conflict · f8610ebe
      Dale Johannesen authored
      with an earlyclobber operand elsewhere.  Propagate
      this bit and the earlyclobber bit through SDISel.
      Change linear-scan RA not to allocate regs in a way 
      that conflicts with an earlyclobber.  See also comments.
      
      llvm-svn: 56290
      f8610ebe
    • Dan Gohman's avatar
      Don't worry about clobbering physical register defs that aren't used. · 6ab52a80
      Dan Gohman authored
      llvm-svn: 56281
      6ab52a80
    • Evan Cheng's avatar
      When converting a CopyFromReg to a copy instruction, use the register class of... · a904f466
      Evan Cheng authored
      When converting a CopyFromReg to a copy instruction, use the register class of its uses to determine the right destination register class of the copy. This is important for targets where a physical register may belong to multiple register classes.
      
      llvm-svn: 56258
      a904f466
    • Dan Gohman's avatar
      Change SelectionDAG::getConstantPool to always set the alignment of the · 64d6c6fe
      Dan Gohman authored
      ConstantPoolSDNode, using the target's preferred alignment for the
      constant type.
      
      In LegalizeDAG, when performing loads from the constant pool, the
      ConstantPoolSDNode's alignment is used in the calls to getLoad and
      getExtLoad.
      
      This change prevents SelectionDAG::getLoad/getExtLoad from incorrectly
      choosing the ABI alignment for constant pool loads when Alignment == 0.
      The incorrect alignment is only a performance issue when ABI alignment
      does not equal preferred alignment (i.e., on x86 it was generating
      MOVUPS instead of MOVAPS for v4f32 constant loads when the default ABI
      alignment for 128bit vectors is forced to 1 byte.)
      
      Patch by Paul Redmond!
      
      llvm-svn: 56253
      64d6c6fe
  9. Sep 16, 2008
  10. Sep 15, 2008
  11. Sep 13, 2008
    • 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
  12. Sep 12, 2008
    • Dan Gohman's avatar
      Change ConstantSDNode and ConstantFPSDNode to use ConstantInt* and · ec270fb6
      Dan Gohman authored
      ConstantFP* instead of APInt and APFloat directly.
      
      This reduces the amount of time to create ConstantSDNode
      and ConstantFPSDNode nodes when ConstantInt* and ConstantFP*
      respectively are already available, as is the case in
      SelectionDAGBuild.cpp. Also, it reduces the amount of time
      to legalize constants into constant pools, and the amount of
      time to add ConstantFP operands to MachineInstrs, due to
      eliminating ConstantInt::get and ConstantFP::get calls.
      
      It increases the amount of work needed to create new constants
      in cases where the client doesn't already have a ConstantInt*
      or ConstantFP*, such as legalize expanding 64-bit integer constants
      to 32-bit constants. And it adds a layer of indirection for the
      accessor methods. But these appear to be outweight by the benefits
      in most cases.
      
      It will also make it easier to make ConstantSDNode and
      ConstantFPNode more consistent with ConstantInt and ConstantFP.
      
      llvm-svn: 56162
      ec270fb6
    • Dale Johannesen's avatar
      Pass "earlyclobber" bit through to machine · 1f3ab868
      Dale Johannesen authored
      representation; coalescer and RA need to know
      about it.  No functional change.
      
      llvm-svn: 56161
      1f3ab868
Loading