Skip to content
  1. Dec 20, 2012
  2. Dec 03, 2012
    • Chandler Carruth's avatar
      Use the new script to sort the includes of every file under lib. · ed0881b2
      Chandler Carruth authored
      Sooooo many of these had incorrect or strange main module includes.
      I have manually inspected all of these, and fixed the main module
      include to be the nearest plausible thing I could find. If you own or
      care about any of these source files, I encourage you to take some time
      and check that these edits were sensible. I can't have broken anything
      (I strictly added headers, and reordered them, never removed), but they
      may not be the headers you'd really like to identify as containing the
      API being implemented.
      
      Many forward declarations and missing includes were added to a header
      files to allow them to parse cleanly when included first. The main
      module rule does in fact have its merits. =]
      
      llvm-svn: 169131
      ed0881b2
  3. Nov 29, 2012
  4. Nov 28, 2012
  5. Nov 27, 2012
  6. Nov 06, 2012
  7. Oct 31, 2012
  8. Oct 17, 2012
  9. Oct 16, 2012
  10. Aug 22, 2012
  11. Aug 09, 2012
  12. Jun 06, 2012
  13. Jun 02, 2012
  14. May 14, 2012
  15. Apr 20, 2012
    • Andrew Trick's avatar
      SparseSet: Add support for key-derived indexes and arbitrary key types. · 1eb4a0da
      Andrew Trick authored
      This nicely handles the most common case of virtual register sets, but
      also handles anticipated cases where we will map pointers to IDs.
      
      The goal is not to develop a completely generic SparseSet
      template. Instead we want to handle the expected uses within llvm
      without any template antics in the client code. I'm adding a bit of
      template nastiness here, and some assumption about expected usage in
      order to make the client code very clean.
      
      The expected common uses cases I'm designing for:
      - integer keys that need to be reindexed, and may map to additional
        data
      - densely numbered objects where we want pointer keys because no
        number->object map exists.
      
      llvm-svn: 155227
      1eb4a0da
  16. Mar 08, 2012
  17. Mar 04, 2012
  18. Feb 22, 2012
  19. 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
  20. Feb 17, 2012
    • Jakob Stoklund Olesen's avatar
      Transfer regmasks to MRI. · a0cf42f2
      Jakob Stoklund Olesen authored
      MRI keeps track of which physregs have been used. Make sure it gets
      updated with all the regmask-clobbered registers.
      
      Delete the closePhysRegsUsed() function which isn't necessary.
      
      llvm-svn: 150830
      a0cf42f2
  21. 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
  22. Jan 31, 2012
  23. 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
  24. Dec 07, 2011
    • Evan Cheng's avatar
      Add bundle aware API for querying instruction properties and switch the code · 7f8e563a
      Evan Cheng authored
      generator to it. For non-bundle instructions, these behave exactly the same
      as the MC layer API.
      
      For properties like mayLoad / mayStore, look into the bundle and if any of the
      bundled instructions has the property it would return true.
      For properties like isPredicable, only return true if *all* of the bundled
      instructions have the property.
      For properties like canFoldAsLoad, isCompare, conservatively return false for
      bundles.
      
      llvm-svn: 146026
      7f8e563a
  25. Nov 22, 2011
  26. Nov 15, 2011
  27. Jul 02, 2011
  28. Jun 28, 2011
  29. Jun 22, 2011
  30. Jun 13, 2011
    • Jakob Stoklund Olesen's avatar
      Be less aggressive about hinting in RAFast. · fb03a92c
      Jakob Stoklund Olesen authored
      In particular, don't spill dirty registers only to satisfy a hint. It is
      not worth it.
      
      The attached test case provides an example where the fast allocator
      would spill a register when other registers are available.
      
      llvm-svn: 132900
      fb03a92c
  31. Jun 03, 2011
    • Jakob Stoklund Olesen's avatar
      Avoid calling TRI->getAllocatableSet in RAFast. · 4b0bb839
      Jakob Stoklund Olesen authored
      When compiling a program with lots of small functions like
      483.xalancbmk, this makes RAFast 11% faster.
      
      Add some comments to clarify the difference between unallocatable and
      reserved registers. It's quite subtle.
      
      The fast register allocator depends on EFLAGS' not being allocatable on
      x86. That way it can completely avoid tracking liveness, and it won't
      mind when there are multiple uses of a single def.
      
      llvm-svn: 132514
      4b0bb839
  32. Jun 02, 2011
  33. Apr 22, 2011
    • Evan Cheng's avatar
      Typo · 8ea3af47
      Evan Cheng authored
      llvm-svn: 129970
      8ea3af47
  34. Apr 18, 2011
Loading