Skip to content
  1. Feb 17, 2004
  2. Feb 15, 2004
  3. Feb 13, 2004
  4. Feb 12, 2004
  5. Feb 10, 2004
  6. Feb 09, 2004
    • Chris Lattner's avatar
      Another nice speedup for the register allocator. This time, we replace · 80cbed4f
      Chris Lattner authored
      the Virt2PhysRegMap std::map with an std::vector.  This speeds up the
      register allocator another (almost) 40%, from .72->.45s in a release build
      of LLC on 253.perlbmk.
      
      llvm-svn: 11219
      80cbed4f
    • Chris Lattner's avatar
      Change the PhysRegsUsed map into a dense array. Seeing that this is a mapping · 490627a4
      Chris Lattner authored
      from physical registers, and they are always dense, it makes sense to not have
      a ton of RBtree overhead.  This change speeds up regalloclocal about ~30% on
      253.perlbmk, from .35s -> .27s in the JIT (in LLC, it goes from .74 -> .55).
      
      Now live variable analysis is the slowest codegen pass.  Of course it doesn't
      help that we have to run it twice, because regalloclocal doesn't update it,
      but even if it did it would be the slowest pass (now it's just the 2x slowest
      pass :(
      
      llvm-svn: 11215
      490627a4
  7. Jan 31, 2004
  8. Jan 13, 2004
    • Alkis Evlogimenos's avatar
      Correctly compute live variable information for physical registers · ebbd66c0
      Alkis Evlogimenos authored
      when an implicitely defined register is later used by an alias. For example:
      
               call foo
               %reg1024 = mov %AL
      
      The call implicitely defines EAX but only AL is used. Before this fix
      no information was available on AL. Now EAX and all its aliases except
      AL get defined and die at the call instruction whereas AL lives to be
      killed by the assignment.
      
      llvm-svn: 10813
      ebbd66c0
  9. Dec 18, 2003
  10. Dec 14, 2003
    • Alkis Evlogimenos's avatar
      Change interface of MachineOperand as follows: · aaba4639
      Alkis Evlogimenos authored
          a) remove opIsUse(), opIsDefOnly(), opIsDefAndUse()
          b) add isUse(), isDef()
          c) rename opHiBits32() to isHiBits32(),
                    opLoBits32() to isLoBits32(),
                    opHiBits64() to isHiBits64(),
                    opLoBits64() to isLoBits64().
      
      This results to much more readable code, for example compare
      "op.opIsDef() || op.opIsDefAndUse()" to "op.isDef()" a pattern used
      very often in the code.
      
      llvm-svn: 10461
      aaba4639
  11. Dec 13, 2003
  12. Dec 05, 2003
  13. Nov 11, 2003
  14. Oct 24, 2003
  15. Oct 20, 2003
  16. Oct 08, 2003
    • Alkis Evlogimenos's avatar
      Change MRegisterDesc::AliasSet, TargetInstrDescriptor::ImplicitDefs · 5f1f337d
      Alkis Evlogimenos authored
      and TargetInstrDescriptor::ImplicitUses to always point to a null
      terminated array and never be null. So there is no need to check for
      pointer validity when iterating over those sets. Code that looked
      like:
      
      if (const unsigned* AS = TID.ImplicitDefs) {
        for (int i = 0; AS[i]; ++i) {
          // use AS[i]
        }
      }
      
      was changed to:
      
      for (const unsigned* AS = TID.ImplicitDefs; *AS; ++AS) {
        // use *AS
      }
      
      llvm-svn: 8960
      5f1f337d
  17. Aug 24, 2003
  18. Aug 17, 2003
  19. Aug 15, 2003
  20. Aug 13, 2003
  21. Aug 05, 2003
  22. Aug 03, 2003
  23. Aug 02, 2003
  24. May 27, 2003
    • Vikram S. Adve's avatar
      (1) Added special register class containing (for now) %fsr. · 7366fa1a
      Vikram S. Adve authored
          Fixed spilling of %fcc[0-3] which are part of %fsr.
      
      (2) Moved some machine-independent reg-class code to class TargetRegInfo
          from SparcReg{Class,}Info.
      
      (3) Renamed MachienOperand::opIsDef to MachineOperand::opIsDefOnly()
          and related functions and flags.  Fixed several bugs where only
          "isDef" was being checked, not "isDefAndUse".
      
      llvm-svn: 6341
      7366fa1a
  25. May 12, 2003
  26. May 05, 2003
  27. Jan 16, 2003
  28. Jan 14, 2003
  29. Jan 13, 2003
    • Chris Lattner's avatar
      * Convert to use LiveVariable analysis · bfa5319e
      Chris Lattner authored
      * Convert to use PHIElimination pass
      * Don't spill values which have just been reloaded (big win reducing spills)
      * Add experimental support for eliminating spills before TwoAddress
        instructions.  It currently is broken so it is #ifdef'd out.
      * Use new "is terminator" flag on instructions instead of looking for
        branches and returns explicitly.
      
      llvm-svn: 5219
      bfa5319e
  30. Dec 28, 2002
    • Chris Lattner's avatar
      Rename FunctionFrameInfo to MachineFrameInfo · ca4362fe
      Chris Lattner authored
      llvm-svn: 5200
      ca4362fe
    • Chris Lattner's avatar
      * Convert to be a MachineFunctionPass instance · b4e4111d
      Chris Lattner authored
      * Use new FunctionFrameInfo object to manage stack slots instead of doing
        it directly
      * Adjust to new MRegisterInfo API
      * Don't take a TM as a ctor argument
      * Don't keep track of which callee saved registers are modified
      * Don't emit prolog/epilog code or spill/restore code for callee saved regs
      * Use new allocation_order_begin/end iterators to simplify dramatically the
        logic for picking registers to allocate
      * Machine PHI nodes can no longer contain constant arguments
      
      llvm-svn: 5195
      b4e4111d
Loading