Skip to content
  1. Oct 03, 2012
    • Jakob Stoklund Olesen's avatar
      Handle reserved registers more accurately in handleMove(). · c8e25d98
      Jakob Stoklund Olesen authored
      Reserved register live ranges look like a set of dead defs - any uses of
      reserved registers are ignored.
      
      Instead of skipping the updating of reserved register operands entirely,
      just ignore the use operands and treat the def operands normally.
      
      No test case, handleMove() is not commonly used yet.
      
      llvm-svn: 165060
      c8e25d98
  2. Sep 21, 2012
    • Jakob Stoklund Olesen's avatar
      Extend -new-coalescer SSA update to handle mapped values as well. · 09cd3036
      Jakob Stoklund Olesen authored
      The old-fashioned many-to-one value mapping doesn't always work when
      merging vector lanes. A value can map to multiple different values, and
      it can even be necessary to insert new PHIs.
      
      When a value number is defined by a copy from a value number that
      required SSa update, include the live range of the copied value number
      in the SSA update as well. It is not necessarily a copy of the original
      value number any longer.
      
      llvm-svn: 164329
      09cd3036
  3. Sep 18, 2012
    • Jakob Stoklund Olesen's avatar
      Merge into undefined lanes under -new-coalescer. · 0bb3dd78
      Jakob Stoklund Olesen authored
      Add LIS::pruneValue() and extendToIndices(). These two functions are
      used by the register coalescer when merging two live ranges requires
      more than a trivial value mapping as supported by LiveInterval::join().
      
      The pruneValue() function can remove the part of a value number that is
      going to conflict in join(). Afterwards, extendToIndices can restore the
      live range, using any new dominating value numbers and updating the SSA
      form.
      
      Use this complex value mapping to support merging a register into a
      vector lane that has a conflicting value, but the clobbered lane is
      undef.
      
      llvm-svn: 164074
      0bb3dd78
  4. Sep 12, 2012
  5. Sep 10, 2012
  6. Sep 06, 2012
  7. Sep 03, 2012
  8. Aug 22, 2012
  9. Aug 04, 2012
    • Jakob Stoklund Olesen's avatar
      Add an experimental -early-live-intervals option. · 1c465892
      Jakob Stoklund Olesen authored
      This option runs LiveIntervals before TwoAddressInstructionPass which
      will eventually learn to exploit and update the analysis.
      
      Eventually, LiveIntervals will run before PHIElimination, and we can get
      rid of LiveVariables.
      
      llvm-svn: 161270
      1c465892
  10. Aug 03, 2012
    • Jakob Stoklund Olesen's avatar
      Completely eliminate VNInfo flags. · daae19f7
      Jakob Stoklund Olesen authored
      The 'unused' state of a value number can be represented as an invalid
      def SlotIndex. This also exposed code that shouldn't have been looking
      at unused value VNInfos.
      
      llvm-svn: 161258
      daae19f7
    • Jakob Stoklund Olesen's avatar
      Eliminate the VNInfo::hasPHIKill() flag. · 9f565e19
      Jakob Stoklund Olesen authored
      The only real user of the flag was removeCopyByCommutingDef(), and it
      has been switched to LiveIntervals::hasPHIKill().
      
      All the code changed by this patch was only concerned with computing and
      propagating the flag.
      
      llvm-svn: 161255
      9f565e19
    • Jakob Stoklund Olesen's avatar
      Make the hasPHIKills flag a computed property. · 06d6a536
      Jakob Stoklund Olesen authored
      The VNInfo::HAS_PHI_KILL is only half supported. We precompute it in
      LiveIntervalAnalysis, but it isn't properly updated by live range
      splitting and functions like shrinkToUses().
      
      It is only used in one place: RegisterCoalescer::removeCopyByCommutingDef().
      
      This patch changes that function to use a new LiveIntervals::hasPHIKill()
      function that computes the flag for a given value number.
      
      llvm-svn: 161254
      06d6a536
  11. Jul 27, 2012
  12. Jun 22, 2012
  13. Jun 21, 2012
  14. Jun 20, 2012
  15. Jun 06, 2012
    • Jakob Stoklund Olesen's avatar
      Remove dead debug option -disable-rematerialization. · f435b186
      Jakob Stoklund Olesen authored
      Remat has been stable for years, and it isn't done by
      LiveIntervalAnalysis any longer. (See LiveRangeEdit).
      
      llvm-svn: 158079
      f435b186
    • Matt Beaumont-Gay's avatar
      Suppress -Wunused-variable in -Asserts build · 7ba769be
      Matt Beaumont-Gay authored
      llvm-svn: 158037
      7ba769be
    • Jakob Stoklund Olesen's avatar
      Simplify LiveInterval::print(). · f3f7d6f6
      Jakob Stoklund Olesen authored
      Don't print out the register number and spill weight, making the TRI
      argument unnecessary.
      
      This allows callers to interpret the reg field. It can currently be a
      virtual register, a physical register, a spill slot, or a register unit.
      
      llvm-svn: 158031
      f3f7d6f6
    • Jakob Stoklund Olesen's avatar
      Add experimental support for register unit liveness. · 12e03dae
      Jakob Stoklund Olesen authored
      Instead of computing a live interval per physreg, LiveIntervals can
      compute live intervals per register unit. This makes impossible the
      confusing situation where aliasing registers could have overlapping live
      intervals. It should also make fixed interferernce checking cheaper
      since registers have fewer register units than aliases.
      
      Live intervals for regunits are computed on demand, using MRI use-def
      chains and the new LiveRangeCalc class. Only regunits live in to ABI
      blocks are precomputed during LiveIntervals::runOnMachineFunction().
      
      The regunit liveness computations don't depend on LiveVariables.
      
      llvm-svn: 158029
      12e03dae
  16. Jun 05, 2012
  17. May 29, 2012
  18. May 20, 2012
  19. Apr 18, 2012
  20. Mar 21, 2012
Loading