Skip to content
  1. Jun 06, 2012
  2. Jun 02, 2012
    • Jakob Stoklund Olesen's avatar
      Switch all register list clients to the new MC*Iterator interface. · 54038d79
      Jakob Stoklund Olesen authored
      No functional change intended.
      
      Sorry for the churn. The iterator classes are supposed to help avoid
      giant commits like this one in the future. The TableGen-produced
      register lists are getting quite large, and it may be necessary to
      change the table representation.
      
      This makes it possible to do so without changing all clients (again).
      
      llvm-svn: 157854
      54038d79
  3. May 23, 2012
  4. May 19, 2012
  5. Apr 03, 2012
  6. Mar 27, 2012
  7. Mar 23, 2012
  8. Mar 04, 2012
  9. Feb 21, 2012
    • Andrew Trick's avatar
      Clear virtual registers after they are no longer referenced. · da84e646
      Andrew Trick authored
      Passes after RegAlloc should be able to rely on MRI->getNumVirtRegs() == 0.
      This makes sharing code for pre/postRA passes more robust.
      Now, to check if a pass is running before the RA pipeline begins, use MRI->isSSA().
      To check if a pass is running after the RA pipeline ends, use !MRI->getNumVirtRegs().
      
      PEI resets virtual regs when it's done scavenging.
      
      PTX will either have to provide its own PEI pass or assign physregs.
      
      llvm-svn: 151032
      da84e646
  10. Feb 10, 2012
    • Andrew Trick's avatar
      RegAlloc superpass: includes phi elimination, coalescing, and scheduling. · d3f8fe81
      Andrew Trick authored
      Creates a configurable regalloc pipeline.
      
      Ensure specific llc options do what they say and nothing more: -reglloc=... has no effect other than selecting the allocator pass itself. This patch introduces a new umbrella flag, "-optimize-regalloc", to enable/disable the optimizing regalloc "superpass". This allows for example testing coalscing and scheduling under -O0 or vice-versa.
      
      When a CodeGen pass requires the MachineFunction to have a particular property, we need to explicitly define that property so it can be directly queried rather than naming a specific Pass. For example, to check for SSA, use MRI->isSSA, not addRequired<PHIElimination>.
      
      CodeGen transformation passes are never "required" as an analysis
      
      ProcessImplicitDefs does not require LiveVariables.
      
      We have a plan to massively simplify some of the early passes within the regalloc superpass.
      
      llvm-svn: 150226
      d3f8fe81
    • Andrew Trick's avatar
      whitespace · 9363b597
      Andrew Trick authored
      llvm-svn: 150225
      9363b597
  11. Feb 05, 2012
  12. Jan 05, 2012
    • Jakob Stoklund Olesen's avatar
      Freeze reserved registers before starting register allocation. · d19d3cab
      Jakob Stoklund Olesen authored
      The register allocators don't currently support adding reserved
      registers while they are running.  Extend the MRI API to keep track of
      the set of reserved registers when register allocation started.
      
      Target hooks like hasFP() and needsStackRealignment() can look at this
      set to avoid reserving more registers during register allocation.
      
      llvm-svn: 147577
      d19d3cab
  13. Dec 06, 2011
  14. Nov 13, 2011
  15. Aug 09, 2011
  16. Jun 27, 2011
  17. Jun 26, 2011
  18. Jun 17, 2011
  19. Jun 16, 2011
  20. Mar 10, 2011
  21. Nov 12, 2010
  22. Oct 19, 2010
    • Owen Anderson's avatar
      Get rid of static constructors for pass registration. Instead, every pass... · 6c18d1aa
      Owen Anderson authored
      Get rid of static constructors for pass registration.  Instead, every pass exposes an initializeMyPassFunction(), which
      must be called in the pass's constructor.  This function uses static dependency declarations to recursively initialize
      the pass's dependencies.
      
      Clients that only create passes through the createFooPass() APIs will require no changes.  Clients that want to use the
      CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
      before parsing commandline arguments.
      
      I have tested this with all standard configurations of clang and llvm-gcc on Darwin.  It is possible that there are problems
      with the static dependencies that will only be visible with non-standard options.  If you encounter any crash in pass
      registration/creation, please send the testcase to me directly.
      
      llvm-svn: 116820
      6c18d1aa
  23. Oct 04, 2010
  24. Sep 25, 2010
  25. Sep 23, 2010
    • Lang Hames's avatar
      Moved the PBQP allocator class out of the header and back in to the cpp file... · fd1bc422
      Lang Hames authored
      Moved the PBQP allocator class out of the header and back in to the cpp file to hide the gory details.
      Allocator instances can now be created by calling createPBQPRegisterAllocator.
      
      Tidied up use of CoalescerPair as per Jakob's suggestions.
      
      Made the new PBQPBuilder based construction process the default. The internal construction process
      remains in-place and available via -pbqp-builder=false for now. It will be removed shortly if the new
      process doesn't cause any regressions.
      
      llvm-svn: 114626
      fd1bc422
  26. Sep 21, 2010
  27. Sep 18, 2010
    • Benjamin Kramer's avatar
      Unbreak msvc build. · 45a56d3c
      Benjamin Kramer authored
      llvm-svn: 114284
      45a56d3c
    • Lang Hames's avatar
      Fixed non-const iterator error. · 361de987
      Lang Hames authored
      llvm-svn: 114273
      361de987
    • Lang Hames's avatar
      Added a separate class (PBQPBuilder) for PBQP Problem construction. This class... · cb1e1017
      Lang Hames authored
      Added a separate class (PBQPBuilder) for PBQP Problem construction. This class can be extended to support custom constraints.
      
      For now the allocator still uses the old (internal) construction mechanism by default. This will be phased out soon assuming 
      no issues with the builder system come up.
      
      To invoke the new construction mechanism just pass '-regalloc=pbqp -pbqp-builder' to llc. To provide custom constraints a
      Target just needs to extend PBQPBuilder and pass an instance of their derived builder to the RegAllocPBQP constructor.
      
      llvm-svn: 114272
      cb1e1017
  28. Sep 02, 2010
  29. Sep 01, 2010
  30. Aug 06, 2010
Loading