- Jun 14, 2013
-
-
Jakub Staszak authored
llvm-svn: 183960
-
- May 01, 2013
-
-
Andrew Trick authored
I'll fix the heuristic in a general way in a follow-up commit. llvm-svn: 180815
-
- Apr 25, 2013
-
-
Andrew Trick authored
Fixes PR15838. Need to check for blocks with nothing but dbg.value. I'm not sure how to force this situation with a unit test. I tried to reduce the test case in PR15838 (1k lines of metadata) but gave up. llvm-svn: 180227
-
- Apr 24, 2013
-
-
Andrew Trick authored
For now, we just reschedule instructions that use the copied vregs and let regalloc elliminate it. I would really like to eliminate the copies on-the-fly during scheduling, but we need a complete implementation of repairIntervalsInRange() first. The general strategy is for the register coalescer to eliminate as many global copies as possible and shrink live ranges to be extended-basic-block local. The coalescer should not have to worry about resolving local copies (e.g. it shouldn't attemp to reorder instructions). The scheduler is a much better place to deal with local interference. The coalescer side of this equation needs work. llvm-svn: 180193
-
Andrew Trick authored
llvm-svn: 180191
-
- Apr 13, 2013
-
-
Andrew Trick authored
llvm-svn: 179452
-
Andrew Trick authored
The register allocator expects minimal physreg live ranges. Schedule physreg copies accordingly. This is slightly tricky when they occur in the middle of the scheduling region. For now, this is handled by rescheduling the copy when its associated instruction is scheduled. Eventually we may instead bundle them, but only if we can preserve the bundles as parallel copies during regalloc. llvm-svn: 179449
-
- Apr 05, 2013
-
-
Andrew Trick authored
llvm-svn: 178823
-
Andrew Trick authored
For now, just save the compile time since the ConvergingScheduler heuristics don't use this analysis. We'll probably enable it later after compile-time investigation. llvm-svn: 178822
-
Andrew Trick authored
I'm getting more serious about tuning and enabling on x86/ARM. Start by making the trace readable. llvm-svn: 178821
-
- Mar 21, 2013
-
-
Matt Arsenault authored
llvm-svn: 177620
-
- Mar 10, 2013
-
-
Jakub Staszak authored
llvm-svn: 176787
-
- Mar 08, 2013
-
-
Andrew Trick authored
This verifies live intervals both before and after scheduling. It's useful for anyone hacking on live interval update. Note that we don't yet pass verification all the time. We don't yet handle updating nonallocatable live intervals perfectly. llvm-svn: 176685
-
- Feb 16, 2013
-
-
Jakub Staszak authored
updateScheduledPressure method. llvm-svn: 175362
-
- Feb 13, 2013
-
-
Andrew Trick authored
llvm-svn: 175067
-
- Jan 29, 2013
-
-
Andrew Trick authored
llvm-svn: 173775
-
- Jan 25, 2013
-
-
Jakub Staszak authored
llvm-svn: 173497
-
Andrew Trick authored
llvm-svn: 173433
-
Andrew Trick authored
llvm-svn: 173432
-
Andrew Trick authored
Allow the strategy to select SchedDFS. Allow the results of SchedDFS to affect initialization of the scheduler state. llvm-svn: 173425
-
Andrew Trick authored
interface and allow other strategies to select it. llvm-svn: 173413
-
- Jan 24, 2013
-
-
Andrew Trick authored
llvm-svn: 173318
-
- Jan 11, 2013
-
-
Andrew Trick authored
llvm-svn: 172224
-
Andrew Trick authored
llvm-svn: 172223
-
- Jan 09, 2013
-
-
Andrew Trick authored
This was an experimental option, but needs to be defined per-target. e.g. PPC A2 needs to aggressively hide latency. I converted some in-order scheduling tests to A2. Hal is working on more test cases. llvm-svn: 171946
-
- Dec 18, 2012
-
-
Andrew Trick authored
llvm-svn: 170453
-
Andrew Trick authored
llvm-svn: 170452
-
Andrew Trick authored
llvm-svn: 170451
-
Andrew Trick authored
llvm-svn: 170450
-
Andrew Trick authored
llvm-svn: 170449
-
- Dec 03, 2012
-
-
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
-
- Dec 01, 2012
-
-
Andrew Trick authored
Assertion failed: (TopRPTracker.getPos() == RegionBegin && "bad initial Top tracker"). rdar://12790302. llvm-svn: 169072
-
Andrew Trick authored
assert (RemainingInstrs == 0 && "Instruction count mismatch!") rdar://12776937. llvm-svn: 169069
-
- Nov 29, 2012
-
-
Benjamin Kramer authored
This was found by MSVC10's STL debug mode on a test from the test suite. Sadly std::is_heap isn't standard so there is no way to assert this without writing our own heap verify, which looks like overkill to me. llvm-svn: 168885
-
- Nov 28, 2012
-
-
Andrew Trick authored
This is a simple, cheap infrastructure for analyzing the shape of a DAG. It recognizes uniform DAGs that take the shape of bottom-up subtrees, such as the included matrix multiplication example. This is useful for heuristics that balance register pressure with ILP. Two canonical expressions of the heuristic are implemented in scheduling modes: -misched-ilpmin and -misched-ilpmax. llvm-svn: 168773
-
Andrew Trick authored
llvm-svn: 168772
-
Andrew Trick authored
llvm-svn: 168767
-
- Nov 13, 2012
-
-
Andrew Trick authored
This allows me to begin enabling (or backing out) misched by default for one subtarget at a time. To run misched we typically want to: - Disable SelectionDAG scheduling (use the source order scheduler) - Enable more aggressive coalescing (until we decide to always run the coalescer this way) - Enable MachineScheduler pass itself. Disabling PostRA sched may follow for some subtargets. llvm-svn: 167826
-
- Nov 12, 2012
-
-
Andrew Trick authored
llvm-svn: 167753
-
Andrew Trick authored
Uses the infrastructure from r167742 to support clustering instructure that the target processor can "fuse". e.g. cmp+jmp. Next step: target hook implementations with test cases, and enable. llvm-svn: 167744
-