- Mar 09, 2011
-
-
Jakob Stoklund Olesen authored
This will we used for keeping register allocator data structures up to date while LiveRangeEdit is trimming live intervals. llvm-svn: 127300
-
Jakob Stoklund Olesen authored
llvm-svn: 127295
-
- Mar 08, 2011
-
-
Jakob Stoklund Olesen authored
LiveRangeEdit::eliminateDeadDefs() will eventually be used by coalescing, splitting, and spilling for dead code elimination. It can delete chains of dead instructions as long as there are no dependency loops. llvm-svn: 127287
-
Jakob Stoklund Olesen authored
Patch by Olaf Krzikalla! llvm-svn: 127264
-
Eric Christopher authored
with this before since none of the register tracking or nightly tests had unschedulable nodes. This should probably be refixed with a special default Node that just returns some "don't touch me" values. Fixes PR9427 llvm-svn: 127263
-
Oscar Fuentes authored
MSVC 9." The "fix" was meaningless. This reverts commit r127245. llvm-svn: 127260
-
Benjamin Kramer authored
llvm-svn: 127254
-
Oscar Fuentes authored
llvm-svn: 127245
-
Andrew Trick authored
This change uses the MaxReorderWindow for both height and depth, which tends to limit the negative effects of high register pressure. llvm-svn: 127203
-
Jakob Stoklund Olesen authored
llvm-svn: 127192
-
- Mar 07, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 127181
-
Cameron Zwarich authored
llvm-svn: 127175
-
Jakob Stoklund Olesen authored
In this case, the value need to be available at the load index instead of the normal use index. llvm-svn: 127167
-
Owen Anderson authored
llvm-svn: 127163
-
- Mar 06, 2011
-
-
Eric Christopher authored
llvm-svn: 127131
-
NAKAMURA Takumi authored
llvm-svn: 127114
-
Andrew Trick authored
Disable a couple of experimental heuristics to get the best results from the current implementation of -pre-RA-sched=list-ilp. llvm-svn: 127113
-
- Mar 05, 2011
-
-
Anton Korobeynikov authored
llvm-svn: 127099
-
Anton Korobeynikov authored
llvm-svn: 127098
-
Jakob Stoklund Olesen authored
The coalescer can in very rare cases leave too large live intervals around after rematerializing cheap-as-a-move instructions. Linear scan doesn't really care, but live range splitting gets very confused when a live range is killed by a ghost instruction. I will fix this properly in the coalescer after 2.9 branches. llvm-svn: 127096
-
Andrew Trick authored
llvm-svn: 127075
-
Andrew Trick authored
llvm-svn: 127071
-
Andrew Trick authored
llvm-svn: 127068
-
Andrew Trick authored
regs. This is the only change in this checkin that may affects the default scheduler. With better register tracking and heuristics, it doesn't make sense to artificially lower the register limit so much. Added -sched-high-latency-cycles and X86InstrInfo::isHighLatencyDef to give the scheduler a way to account for div and sqrt on targets that don't have an itinerary. It is currently defaults to 10 (the actual number doesn't matter much), but only takes effect on non-default schedulers: list-hybrid and list-ilp. Added several heuristics that can be individually disabled for the non-default sched=list-ilp mode. This helps us determine how much better we can do on a given benchmark than the default scheduler. Certain compute intensive loops run much faster in this mode with the right set of heuristics, and it doesn't seem to have much negative impact elsewhere. Not all of the heuristics are needed, but we still need to experiment to decide which should be disabled by default for sched=list-ilp. llvm-svn: 127067
-
Jakob Stoklund Olesen authored
The global cost is the sum of block frequencies for spill code that must be inserted because preferences weren't met. llvm-svn: 127062
-
Jakob Stoklund Olesen authored
This simplifies the code and makes it faster too. The interference patterns are saved for each candidate register. It will be reused for actually executing the split. Work in progress. llvm-svn: 127054
-
Jim Grosbach authored
llvm-svn: 127049
-
- Mar 04, 2011
-
-
Eric Christopher authored
llvm-svn: 127043
-
Jakob Stoklund Olesen authored
llvm-svn: 127040
-
Jakob Stoklund Olesen authored
It gives better results. Sometimes, a live range can be large and still have high spill weight. Such a range should not be spilled. llvm-svn: 127036
-
Jakob Stoklund Olesen authored
Initially, slot indexes are quad-spaced. There is room for inserting up to 3 new instructions between the original instructions. When we run out of indexes between two instructions, renumber locally using double-spaced indexes. The original quad-spacing means that we catch up quickly, and we only have to renumber a handful of instructions to get a monotonic sequence. This is much faster than renumbering the whole function as we did before. llvm-svn: 127023
-
Jakob Stoklund Olesen authored
You can't really predict how many indexes will be needed from the number of defs, so let's keep it simple. Also remove an extra empty index that was inserted after each basic block. It was intended for live-out ranges, but it was never used that way. llvm-svn: 127014
-
Jakob Stoklund Olesen authored
llvm-svn: 127007
-
Jakob Stoklund Olesen authored
llvm-svn: 127006
-
Duncan Sands authored
type after type legalization has completed. Before then it may simply not be big enough to hold the shift amount, particularly on x86 which uses a very small type for shifts (this issue broke stuff in the past which is why LegalizeTypes carefully uses a large type for shift amounts). llvm-svn: 127000
-
Andrew Trick authored
Fix the PendingQueue, then disable it because it's not required for the current schedulers' heuristics. Fix the logic for the unused list-ilp scheduler. llvm-svn: 126981
-
Jakob Stoklund Olesen authored
llvm-svn: 126975
-
Jakob Stoklund Olesen authored
This speeds up updateSSA() so it only accounts for 5% of the live range splitting time. llvm-svn: 126972
-
Bill Wendling authored
it. It's been assumed up til now that it would be in its immediate successor. However, this isn't necessarily the case. It could be in one of its successor's successors. Modify the code to more thoroughly check for an 'eh.selector' call in successors. It only looks at a successor if we get there as a result of an unconditional branch. Testcase ObjC/exceptions-4.m in r126968. llvm-svn: 126969
-
- Mar 03, 2011
-
-
Eli Friedman authored
llvm-svn: 126964
-