Skip to content
  1. 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
  2. Feb 05, 2012
  3. 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
  4. Dec 06, 2011
  5. Nov 13, 2011
  6. Aug 09, 2011
  7. Jun 27, 2011
  8. Jun 26, 2011
  9. Jun 17, 2011
  10. Jun 16, 2011
  11. Mar 10, 2011
  12. Nov 12, 2010
  13. 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
  14. Oct 04, 2010
  15. Sep 25, 2010
  16. 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
  17. Sep 21, 2010
  18. 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
  19. Sep 02, 2010
  20. Sep 01, 2010
  21. Aug 06, 2010
  22. Jul 20, 2010
  23. Jul 19, 2010
  24. Jul 18, 2010
  25. Jul 17, 2010
  26. Jul 16, 2010
  27. Jul 12, 2010
  28. May 15, 2010
  29. Feb 18, 2010
  30. Feb 17, 2010
  31. Feb 09, 2010
    • Lang Hames's avatar
      Fixed a bug in the PBQP allocator's findCoalesces method. · 48121948
      Lang Hames authored
      Previously spill registers, whose def indexes are not defined, would sometimes be improperly marked as coalescable with conflicting registers. The new findCoalesces routine conservatively assumes that any register with at least one undefined def is not coalescable with any register it interferes with.
      
      llvm-svn: 95636
      48121948
  32. Jan 26, 2010
    • Lang Hames's avatar
      New PBQP solver. · 090c7e82
      Lang Hames authored
      * Fixed a reduction bug which occasionally led to infinite-cost (invalid)
        register allocation solutions despite the existence finite-cost solutions.
      * Significantly reduced memory usage (>50% reduction).
      * Simplified a lot of the solver code.
      
      llvm-svn: 94514
      090c7e82
Loading