Skip to content
  1. Nov 18, 2009
  2. Nov 09, 2009
  3. Nov 07, 2009
    • Jakob Stoklund Olesen's avatar
      Fix inverted conflict test in -early-coalesce. · 4141d8ee
      Jakob Stoklund Olesen authored
      A non-identity copy cannot be coalesced when the phi join destination register
      is live at the copy site.
      
      Also verify the condition that the PHI join source register is only used in
      the PHI join. Otherwise the coalescing is invalid.
      
      llvm-svn: 86322
      4141d8ee
  4. Nov 04, 2009
    • Lang Hames's avatar
      The Indexes Patch. · 05fb9637
      Lang Hames authored
      This introduces a new pass, SlotIndexes, which is responsible for numbering
      instructions for register allocation (and other clients). SlotIndexes numbering
      is designed to match the existing scheme, so this patch should not cause any
      changes in the generated code.
      
      For consistency, and to avoid naming confusion, LiveIndex has been renamed
      SlotIndex.
      
      The processImplicitDefs method of the LiveIntervals analysis has been moved
      into its own pass so that it can be run prior to SlotIndexes. This was
      necessary to match the existing numbering scheme.
      
      llvm-svn: 85979
      05fb9637
  5. Oct 20, 2009
  6. 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
  7. Oct 09, 2009
  8. Oct 07, 2009
  9. Oct 03, 2009
  10. Sep 26, 2009
  11. Sep 25, 2009
    • Dan Gohman's avatar
      Improve MachineMemOperand handling. · 48b185d6
      Dan Gohman authored
       - Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
         This eliminates MachineInstr's std::list member and allows the data to be
         created by isel and live for the remainder of codegen, avoiding a lot of
         copying and unnecessary translation. This also shrinks MemSDNode.
       - Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
         fields for MachineMemOperands.
       - Change MemSDNode to have a MachineMemOperand member instead of its own
         fields with the same information. This introduces some redundancy, but
         it's more consistent with what MachineInstr will eventually want.
       - Ignore alignment when searching for redundant loads for CSE, but remember
         the greatest alignment.
      
      Target-specific code which previously used MemOperandSDNodes with generic
      SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
      so that the SelectionDAG framework knows that MachineMemOperand information
      is available.
      
      llvm-svn: 82794
      48b185d6
  12. Sep 23, 2009
  13. Sep 21, 2009
  14. Sep 20, 2009
    • Dale Johannesen's avatar
      When computing live intervals for earlyclobber operands, · a894053a
      Dale Johannesen authored
      we pushed the beginning of the interval back 1, so the
      interval would overlap with inputs that die.  We were
      also pushing the end of the interval back 1, though,
      which means the earlyclobber didn't overlap with other
      output operands.  Don't do this.  PR 4964.
      
      llvm-svn: 82342
      a894053a
  15. Sep 15, 2009
  16. Sep 14, 2009
    • Evan Cheng's avatar
      Add early coalescing to liveintervals. This is work in progress and is known... · 7f789596
      Evan Cheng authored
      Add early coalescing to liveintervals. This is work in progress and is known to miscompute some tests. Read it at your own rish, I have aged 10 year while writing this.
      
      The gist of this is if source of some of the copies that feed into a phi join is defined by the phi join, we'd like to eliminate them. However, if any of the non-identity source overlaps the live interval of the phi join then the coalescer won't be able to coalesce them. The early coalescer's job is to eliminate the identity copies by partially-coalescing the two live intervals.
      
      llvm-svn: 81796
      7f789596
  17. Sep 12, 2009
  18. Sep 04, 2009
  19. Aug 23, 2009
  20. Aug 22, 2009
  21. Aug 11, 2009
  22. Aug 05, 2009
  23. Aug 03, 2009
    • David Greene's avatar
      · ec9bc288
      David Greene authored
      Re-apply LiveInterval index dumping patch, with fixes suggested by Bill
      and others.
      
      llvm-svn: 78003
      ec9bc288
  24. Aug 01, 2009
  25. 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
  26. Jul 24, 2009
  27. Jul 22, 2009
    • David Greene's avatar
      · e88680e3
      David Greene authored
      Constify the key in Mi2IndexMap.
      
      llvm-svn: 76801
      e88680e3
  28. Jul 21, 2009
    • Chris Lattner's avatar
      revert r76602, 76603, and r76615, pending design discussions. · 1eede6c6
      Chris Lattner authored
      llvm-svn: 76646
      1eede6c6
    • David Greene's avatar
      · ef1f36d3
      David Greene authored
      Prefix IR dumps with LiveInterval indices when possible.  This turns
      this:
      
      	%ESI<def> = MOV32rr %EDI<kill>
      	ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>
      	%reg1027<def> = MOVZX64rr32 %ESI
      	%reg1027<def> = ADD64ri8 %reg1027, 15, %EFLAGS<imp-def,dead>
      	%reg1027<def> = AND64ri8 %reg1027, -16, %EFLAGS<imp-def,dead>
      	%RDI<def> = MOV64rr %RSP
      	%RDI<def> = SUB64rr %RDI, %reg1027<kill>, %EFLAGS<imp-def,dead>
      	%RSP<def> = MOV64rr %RDI
      
      into this:
      
      4	%reg1024<def> = MOV32rr %EDI<kill>
      12	ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>
      20	%reg1025<def> = MOVZX64rr32 %reg1024
      28	%reg1026<def> = MOV64rr %reg1025<kill>
      36	%reg1026<def> = ADD64ri8 %reg1026, 15, %EFLAGS<imp-def,dead>
      44	%reg1027<def> = MOV64rr %reg1026<kill>
      52	%reg1027<def> = AND64ri8 %reg1027, -16, %EFLAGS<imp-def,dead>
      60	%reg1028<def> = MOV64rr %RSP
      68	%reg1029<def> = MOV64rr %reg1028<kill>
      76	%reg1029<def> = SUB64rr %reg1029, %reg1027<kill>, %EFLAGS<imp-def,dead>
      84	%RSP<def> = MOV64rr %reg1029
      
      This helps greatly when debugging register allocation and coalescing
      problems.
      
      llvm-svn: 76615
      ef1f36d3
  29. Jul 17, 2009
  30. Jul 16, 2009
  31. Jul 14, 2009
Loading