Skip to content
  1. May 06, 2010
  2. May 05, 2010
  3. Mar 23, 2010
  4. Mar 03, 2010
  5. Mar 02, 2010
  6. Feb 11, 2010
  7. Feb 10, 2010
  8. Feb 09, 2010
  9. Jan 05, 2010
  10. Dec 03, 2009
  11. Nov 18, 2009
    • Jakob Stoklund Olesen's avatar
      Fix PR5300. · 575c3f3d
      Jakob Stoklund Olesen authored
      When TwoAddressInstructionPass deletes a dead instruction, make sure that all
      register kills are accounted for. The 2-addr register does not get special
      treatment.
      
      llvm-svn: 89246
      575c3f3d
  12. Nov 14, 2009
  13. Oct 25, 2009
  14. Oct 10, 2009
    • Dan Gohman's avatar
      Factor out LiveIntervalAnalysis' code to determine whether an instruction · 87b02d5b
      Dan Gohman authored
      is trivially rematerializable and integrate it into
      TargetInstrInfo::isTriviallyReMaterializable. This way, all places that
      need to know whether an instruction is rematerializable will get the
      same answer.
      
      This enables the useful parts of the aggressive-remat option by
      default -- using AliasAnalysis to determine whether a memory location
      is invariant, and removes the questionable parts -- rematting operations
      with virtual register inputs that may not be live everywhere.
      
      llvm-svn: 83687
      87b02d5b
  15. Sep 03, 2009
    • Bob Wilson's avatar
      Overhaul the TwoAddressInstructionPass to simplify the logic, especially · 5c7d9ca5
      Bob Wilson authored
      for the complicated case where one register is tied to multiple destinations.
      This avoids the extra scan of instruction operands that was introduced by
      my recent change.  I also pulled some code out into a separate
      TryInstructionTransform method, added more comments, and renamed some
      variables.
      
      Besides all those changes, this takes care of a FIXME in the code regarding
      an assumption about there being a single tied use of a register when
      converting to a 3-address form.  I'm not aware of cases where that assumption
      is violated, but the code now only attempts to transform an instruction,
      either by commuting its operands or by converting to a 3-address form,
      for the simple case where there is a single pair of tied operands.
      
      llvm-svn: 80945
      5c7d9ca5
  16. Sep 02, 2009
  17. Sep 01, 2009
  18. Aug 31, 2009
  19. Aug 23, 2009
  20. Aug 07, 2009
  21. Aug 01, 2009
  22. Jul 25, 2009
    • Daniel Dunbar's avatar
      More migration to raw_ostream, the water has dried up around the iostream hole. · 0dd5e1ed
      Daniel Dunbar authored
       - Some clients which used DOUT have moved to DEBUG. We are deprecating the
         "magic" DOUT behavior which avoided calling printing functions when the
         statement was disabled. In addition to being unnecessary magic, it had the
         downside of leaving code in -Asserts builds, and of hiding potentially
         unnecessary computations.
      
      llvm-svn: 77019
      0dd5e1ed
  23. Jul 20, 2009
  24. Jul 16, 2009
  25. Jul 11, 2009
  26. May 26, 2009
  27. May 14, 2009
  28. May 13, 2009
  29. May 09, 2009
  30. Apr 28, 2009
  31. Apr 14, 2009
  32. Apr 13, 2009
  33. 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
Loading