Skip to content
  1. Jan 29, 2009
  2. Jan 20, 2009
  3. Jan 07, 2009
    • Evan Cheng's avatar
      The coalescer does not coalesce a virtual register to a physical register if... · f6768bd9
      Evan Cheng authored
      The coalescer does not coalesce a virtual register to a physical register if any of the physical register's sub-register live intervals overlaps with the virtual register. This is overly conservative. It prevents a extract_subreg from being coalesced away:
      
      v1024 = EDI  // not killed
            =
            = EDI
      
      One possible solution is for the coalescer to examine the sub-register live intervals in the same manner as the physical register. Another possibility is to examine defs and uses (when needed) of sub-registers. Both solutions are too expensive. For now, look for "short virtual intervals" and scan instructions to look for conflict instead.
      
      This is a small win on x86-64. e.g. It shaves 403.gcc by ~80 instructions.
      
      llvm-svn: 61847
      f6768bd9
  4. Dec 19, 2008
    • Evan Cheng's avatar
      Fix PR3149. If an early clobber def is a physical register and it is tied to... · 0869f785
      Evan Cheng authored
      Fix PR3149. If an early clobber def is a physical register and it is tied to an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this.
      
      172     %ECX<def> = MOV32rr %reg1039<kill>
      180     INLINEASM <es:subl $5,$1
              sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>,
      36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0
      188     %EAX<def> = MOV32rr %EAX<kill>
      196     %ECX<def> = MOV32rr %ECX<kill>
      204     %ECX<def> = MOV32rr %ECX<kill>
      212     %EAX<def> = MOV32rr %EAX<kill>
      220     %EAX<def> = MOV32rr %EAX
      228     %reg1039<def> = MOV32rr %ECX<kill>
      
      The early clobber operand ties ECX input to the ECX def.
      
      The live interval of ECX is represented as this:
      %reg20,inf = [46,47:1)[174,230:0)  0@174-(230) 1@46-(47)
      
      The right way to represent this is something like
      %reg20,inf = [46,47:2)[174,182:1)[181:230:0)  0@174-(182) 1@181-230 @2@46-(47)
      
      Of course that won't work since that means overlapping live ranges defined by two val#.
      
      The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom.
      
      llvm-svn: 61259
      0869f785
  5. Dec 08, 2008
  6. Dec 05, 2008
  7. Dec 03, 2008
  8. Nov 26, 2008
  9. Nov 21, 2008
  10. Nov 13, 2008
  11. Nov 12, 2008
  12. Oct 29, 2008
  13. Oct 27, 2008
    • David Greene's avatar
      · b00b267b
      David Greene authored
      Fix PR2634.  Create new virtual registers from spills early so that we
      can give it the same stack slot as the spilled interval if it is folded.
      This prevents the fold/unfold code from pointing to the wrong register.
      
      llvm-svn: 58255
      b00b267b
  14. Oct 24, 2008
  15. Oct 18, 2008
  16. Oct 07, 2008
  17. Oct 03, 2008
  18. Oct 01, 2008
  19. Sep 30, 2008
  20. Sep 24, 2008
  21. Sep 21, 2008
  22. Sep 19, 2008
  23. 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
  24. Sep 16, 2008
  25. Sep 13, 2008
    • Dan Gohman's avatar
      Remove isImm(), isReg(), and friends, in favor of · 38453eeb
      Dan Gohman authored
      isImmediate(), isRegister(), and friends, to avoid confusion
      about having two different names with the same meaning. I'm
      not attached to the longer names, and would be ok with
      changing to the shorter names if others prefer it.
      
      llvm-svn: 56189
      38453eeb
  26. Aug 20, 2008
  27. Aug 19, 2008
  28. Aug 18, 2008
  29. Aug 14, 2008
Loading