Skip to content
  1. Apr 08, 2009
    • Dan Gohman's avatar
      Implement support for using modeling implicit-zero-extension on x86-64 · ad3e549a
      Dan Gohman authored
      with SUBREG_TO_REG, teach SimpleRegisterCoalescing to coalesce
      SUBREG_TO_REG instructions (which are similar to INSERT_SUBREG
      instructions), and teach the DAGCombiner to take advantage of this on
      targets which support it. This eliminates many redundant
      zero-extension operations on x86-64.
      
      This adds a new TargetLowering hook, isZExtFree. It's similar to
      isTruncateFree, except it only applies to actual definitions, and not
      no-op truncates which may not zero the high bits.
      
      Also, this adds a new optimization to SimplifyDemandedBits: transform
      operations like x+y into (zext (add (trunc x), (trunc y))) on targets
      where all the casts are no-ops. In contexts where the high part of the
      add is explicitly masked off, this allows the mask operation to be
      eliminated. Fix the DAGCombiner to avoid undoing these transformations
      to eliminate casts on targets where the casts are no-ops.
      
      Also, this adds a new two-address lowering heuristic. Since
      two-address lowering runs before coalescing, it helps to be able to
      look through copies when deciding whether commuting and/or
      three-address conversion are profitable.
      
      Also, fix a bug in LiveInterval::MergeInClobberRanges. It didn't handle
      the case that a clobber range extended both before and beyond an
      existing live range. In that case, multiple live ranges need to be
      added. This was exposed by the new subreg coalescing code.
      
      Remove 2008-05-06-SpillerBug.ll. It was bugpoint-reduced, and the
      spiller behavior it was looking for no longer occurrs with the new
      instruction selection.
      
      llvm-svn: 68576
      ad3e549a
    • Devang Patel's avatar
      Revert prev. patch for now. · 10f7c3de
      Devang Patel authored
      llvm-svn: 68569
      10f7c3de
    • Devang Patel's avatar
      Right now DBG_LABEL are required for llvm.dbg.region_start and... · ddafc03e
      Devang Patel authored
      Right now DBG_LABEL are required for llvm.dbg.region_start and llvm.dbg.region_end in non-fast mode also.
      
      llvm-svn: 68559
      ddafc03e
  2. Apr 07, 2009
  3. Apr 03, 2009
  4. Apr 02, 2009
  5. Mar 31, 2009
  6. Mar 30, 2009
  7. Mar 29, 2009
  8. Mar 28, 2009
  9. Mar 27, 2009
  10. Mar 26, 2009
  11. Mar 25, 2009
  12. Mar 24, 2009
  13. Mar 23, 2009
    • Evan Cheng's avatar
      Fix a bug in spill weight computation. If the alias is a super-register, and... · 7fe1b0f5
      Evan Cheng authored
      Fix a bug in spill weight computation. If the alias is a super-register, and the super-register is in the register class we are trying to allocate. Then add the weight to all sub-registers of the super-register even if they are not aliases.                                                                                                  
      e.g. allocating for GR32, bh is not used, updating bl spill weight.                                                                                                        
           bl should get the same spill weight otherwise it will be choosen                                                                                              
           as a spill candidate since spilling bh doesn't make ebx available.
      This fix PR2866.
      
      llvm-svn: 67574
      7fe1b0f5
    • Dale Johannesen's avatar
      Fix internal representation of fp80 to be the · 93eefa00
      Dale Johannesen authored
      same as a normal i80 {low64, high16} rather
      than its own {high64, low16}.  A depressing number
      of places know about this; I think I got them all.
      Bitcode readers and writers convert back to the old
      form to avoid breaking compatibility.
      
      llvm-svn: 67562
      93eefa00
Loading