"llvm/git@repo.hca.bsc.es:rferrer/llvm-epi-0.8.git" did not exist on "800619f2bbac692075242e328b944e5d9eaf2134"
- Mar 23, 2011
-
-
Jakob Stoklund Olesen authored
Empty ranges may represent undef values. llvm-svn: 128144
-
- Mar 16, 2011
-
-
Jakob Stoklund Olesen authored
The live range of a virtual register may change which invalidates the cached interference information. llvm-svn: 127772
-
- Mar 12, 2011
-
-
Jakob Stoklund Olesen authored
Live range splitting can create a number of small live ranges containing only a single real use. Spill these small live ranges along with the large range they are connected to with copies. This enables memory operand folding and maximizes the spill to fill distance. Work in progress with known bugs. llvm-svn: 127529
-
- Mar 10, 2011
-
-
Jakob Stoklund Olesen authored
This makes it possible to register delegates and get callbacks when the spiller edits live ranges. llvm-svn: 127389
-
Jakob Stoklund Olesen authored
llvm-svn: 127388
-
- Feb 23, 2011
-
-
Jakob Stoklund Olesen authored
This is based on the observation that long live ranges are more difficult to allocate, so there is a better chance of solving the puzzle by handling the big pieces first. The allocator will evict and split long alive ranges when they get in the way. RABasic is still using spill weights for its priority queue, so the interface to the queue has been virtualized. llvm-svn: 126259
-
- Feb 18, 2011
-
-
Jakob Stoklund Olesen authored
The rewriter works almost identically to -rewriter=trivial, except it also eliminates any identity copies. This makes the new register allocators independent of VirtRegRewriter.cpp which will be going away at the same time as RegAllocLinearScan. llvm-svn: 125967
-
Jakob Stoklund Olesen authored
llvm-svn: 125802
-
- Feb 17, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 125789
-
- Feb 09, 2011
-
-
Jakob Stoklund Olesen authored
Registers are not allocated strictly in spill weight order when live range splitting and spilling has created new shorter intervals with higher spill weights. When one of the new heavy intervals conflicts with a single lighter interval, simply evict the old interval instead of trying to split the heavy one. The lighter interval is a better candidate for splitting, it has a smaller use density. llvm-svn: 125151
-
- Dec 18, 2010
-
-
Jakob Stoklund Olesen authored
createMachineVerifierPass and MachineFunction::verify. The banner is printed before the machine code dump, just like the printer pass. llvm-svn: 122113
-
Jakob Stoklund Olesen authored
RegAllocBase::VerifyEnabled. Run the machine code verifier in a few interesting places during RegAllocGreedy. llvm-svn: 122107
-
- Dec 15, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 121801
-
- Dec 14, 2010
-
-
Jakob Stoklund Olesen authored
LiveIntervalUnions. llvm-svn: 121781
-
- Dec 11, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 121604
-
Jakob Stoklund Olesen authored
llvm-svn: 121599
-
- Dec 09, 2010
-
-
Andrew Trick authored
heuristic to reshuffle register assignments when we can't find an available reg. llvm-svn: 121388
-
- Dec 08, 2010
-
-
Jakob Stoklund Olesen authored
abstract priority queue interface in subclasses that want to override the priority calculations. Subclasses must provide a getPriority() implementation instead. This approach requires less code as long as priorities are expressable as simple floats, and it avoids the dangers of defining potentially expensive priority comparison functions. It also should speed up priority_queue operations since they no longer have to chase pointers when comparing registers. This is not measurable, though. Preferably, we shouldn't use floats to guide code generation. The use of floats here is derived from the use of floats for spill weights. Spill weights have a dynamic range that doesn't lend itself easily to a fixpoint implementation. When someone invents a stable spill weight representation, it can be reused for allocation priorities. llvm-svn: 121294
-
Jakob Stoklund Olesen authored
Minor optimization to the use of IntervalMap iterators. They are fairly heavyweight, so prefer SI.valid() over SI != end(). llvm-svn: 121217
-
Jakob Stoklund Olesen authored
This speeds up RegAllocBasic by 20%, not counting releaseMemory which becomes way faster. llvm-svn: 121201
-
- Dec 07, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 121162
-
- Dec 01, 2010
-
-
Andrew Trick authored
in favor of the widespread llvm style. Capitalize variables and add newlines for visual parsing. Rename variables for readability. And other cleanup. llvm-svn: 120490
-
- Nov 25, 2010
-
-
Benjamin Kramer authored
llvm-svn: 120146
-
- Nov 20, 2010
-
-
Andrew Trick authored
llvm-svn: 119896
-
Andrew Trick authored
llvm-svn: 119895
-
- Nov 11, 2010
-
-
Andrew Trick authored
it makes no sense for allocation_order iterators to visit reserved regs. The inline spiller depends on AliasAnalysis. Manage the Query state to avoid uninitialized or stale results. llvm-svn: 118800
-
- Nov 10, 2010
-
-
Andrew Trick authored
benchmarks hitting an assertion. Adds LiveIntervalUnion::collectInterferingVRegs. Fixes "late spilling" by checking for any unspillable live vregs among all physReg aliases. llvm-svn: 118701
-
- Nov 09, 2010
-
-
Andrew Trick authored
(retry now that the windows build is green) llvm-svn: 118630
-
Andrew Trick authored
llvm-svn: 118613
-
Andrew Trick authored
llvm-svn: 118604
-
- Nov 08, 2010
-
-
Andrew Trick authored
handle cases in which a register is unavailable for spill code. Adds LiveIntervalUnion::extract. While processing interferences on a live virtual register, reuses the same Query object for each physcial reg. llvm-svn: 118423
-
- Nov 03, 2010
-
-
Jakob Stoklund Olesen authored
splitting needs them. llvm-svn: 118194
-
- Oct 26, 2010
-
-
Andrew Trick authored
llvm-svn: 117384
-
- Oct 23, 2010
-
-
Andrew Trick authored
framework. It's purpose is not to improve register allocation per se, but to make it easier to develop powerful live range splitting. I call it the basic allocator because it is as simple as a global allocator can be but provides the building blocks for sophisticated register allocation with live range splitting. A minimal implementation is provided that trivially spills whenever it runs out of registers. I'm checking in now to get high-level design and style feedback. I've only done minimal testing. The next step is implementing a "greedy" allocation algorithm that does some register reassignment and makes better splitting decisions. llvm-svn: 117174
-