- Apr 03, 2012
-
-
Pete Cooper authored
llvm-svn: 153906
-
Pete Cooper authored
Refactored the LiveRangeEdit interface so that MachineFunction, TargetInstrInfo, MachineRegisterInfo, LiveIntervals, and VirtRegMap are all passed into the constructor and stored as members instead of passed in to each method. llvm-svn: 153903
-
- Mar 27, 2012
-
-
Lang Hames authored
llvm-svn: 153483
-
- Mar 23, 2012
-
-
Lang Hames authored
llvm-svn: 153341
-
- Mar 04, 2012
-
-
Craig Topper authored
llvm-svn: 152001
-
Craig Topper authored
llvm-svn: 151998
-
- Feb 21, 2012
-
-
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
-
- Feb 10, 2012
-
-
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
-
Andrew Trick authored
llvm-svn: 150225
-
- Feb 05, 2012
-
-
Craig Topper authored
llvm-svn: 149816
-
- Jan 05, 2012
-
-
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
-
- Dec 06, 2011
-
-
Lang Hames authored
llvm-svn: 145897
-
Lang Hames authored
llvm-svn: 145893
-
- Nov 13, 2011
-
-
Jakob Stoklund Olesen authored
The very complicated VirtRegRewriter is going away. llvm-svn: 144479
-
Jakob Stoklund Olesen authored
It is worth noting that the old spiller would split live ranges around basic blocks. The new spiller doesn't do that. PBQP should do its own live range splitting with SplitEditor::splitSingleBlock() if desired. See RAGreedy::tryBlockSplit(). llvm-svn: 144476
-
- Aug 09, 2011
-
-
Jakob Stoklund Olesen authored
A public interface is no longer needed since RegisterCoalescer is not an analysis any more. llvm-svn: 137082
-
- Jun 27, 2011
-
-
Rafael Espindola authored
remove the analysis group. llvm-svn: 133899
-
- Jun 26, 2011
-
-
Rafael Espindola authored
llvm-svn: 133895
-
- Jun 17, 2011
-
-
Lang Hames authored
Add a hook for PBQP clients to run a custom pre-alloc pass to run prior to PBQP allocation. Patch by Arnaud Allard de Grandmaison. llvm-svn: 133249
-
- Jun 16, 2011
-
-
Jakob Stoklund Olesen authored
I think PBQP could use RegisterClassInfo, but it didn't fit neatly with the external interfaces that PBQP uses, so I'll leave that to Lang. llvm-svn: 133186
-
- Mar 10, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 127388
-
- Nov 12, 2010
-
-
Lang Hames authored
llvm-svn: 118883
-
- Oct 19, 2010
-
-
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
-
- Oct 04, 2010
-
-
Lang Hames authored
Removed the older style (in-allocator) problem construction system from the PBQP allocator. Problem construction is now done exclusively with the new builders. llvm-svn: 115502
-
- Sep 25, 2010
-
-
Lang Hames authored
Removed VNInfo::isDefAccurate(). Def "accuracy" can be checked by testing whether LiveIntervals::getInstructionFromIndex(def) returns NULL. llvm-svn: 114791
-
- Sep 23, 2010
-
-
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
-
- Sep 21, 2010
-
-
Lang Hames authored
llvm-svn: 114431
-
Lang Hames authored
Added an additional PBQP problem builder which adds coalescing costs (both between pairs of virtuals, and between virtuals and physicals). llvm-svn: 114429
-
- Sep 18, 2010
-
-
Benjamin Kramer authored
llvm-svn: 114284
-
Lang Hames authored
llvm-svn: 114273
-
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
-
- Sep 02, 2010
-
-
Lang Hames authored
Added support for register allocators to record which intervals are spill intervals, and where the uses and defs of the original intervals were in the original code. Spill intervals can be hidden using the "-rmf-intervals=virt-nospills*" option. llvm-svn: 112811
-
- Sep 01, 2010
-
-
Jim Grosbach authored
llvm-svn: 112742
-
- Aug 06, 2010
-
-
Owen Anderson authored
llvm-svn: 110460
-
Owen Anderson authored
llvm-svn: 110410
-
Owen Anderson authored
ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
-
- Jul 20, 2010
-
-
Lang Hames authored
Updated renderer to use allocation information from VirtRegMap (if available) to render spilled intervals differently. llvm-svn: 108815
-
- Jul 19, 2010
-
-
Lang Hames authored
pressure estimates and liveness alongside. Still experimental. llvm-svn: 108698
-
- Jul 18, 2010
-
-
Lang Hames authored
LoopSplitter be run prior to register allocation. Entirely for testing purposes at the moment. llvm-svn: 108634
-
- Jul 17, 2010
-
-
Lang Hames authored
any command line paramater changed the register allocation produced by PBQP. Turns out variety is not the spice of life. Fixed some comparators, added others. All good now. llvm-svn: 108613
-