#
2a767c0d |
| 12-Aug-2009 |
Dan Gohman <gohman@apple.com> |
This logic was accidentally inverted in r78767.
llvm-svn: 78773
|
#
f7912edb |
| 12-Aug-2009 |
Dan Gohman <gohman@apple.com> |
Factor out the code for finding an available register for use in breaking an anti-dependence into a separate function.
llvm-svn: 78767
|
#
92492f2f |
| 11-Aug-2009 |
David Goodwin <david_goodwin@apple.com> |
Use DEBUG macro for debug output.
llvm-svn: 78694
|
#
ebd694bb |
| 11-Aug-2009 |
David Goodwin <david_goodwin@apple.com> |
Add some debug output.
llvm-svn: 78687
|
#
f20236ac |
| 11-Aug-2009 |
David Goodwin <david_goodwin@apple.com> |
Replace DOUT.
llvm-svn: 78634
|
#
6021b4dc |
| 10-Aug-2009 |
David Goodwin <david_goodwin@apple.com> |
Post RA scheduler changes. Introduce a hazard recognizer that uses the target schedule information to accurately model the pipeline. Update the scheduler to correctly handle multi-issue targets.
llv
Post RA scheduler changes. Introduce a hazard recognizer that uses the target schedule information to accurately model the pipeline. Update the scheduler to correctly handle multi-issue targets.
llvm-svn: 78563
show more ...
|
#
0402315d |
| 31-Jul-2009 |
Dan Gohman <gohman@apple.com> |
Use setPreservesAll and setPreservesCFG in CodeGen passes.
llvm-svn: 77754
|
#
76673328 |
| 29-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
inline the global 'getInstrOperandRegClass' function into its callers now that TargetOperandInfo does the heavy lifting.
llvm-svn: 77508
|
#
fbcc663c |
| 14-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location i
llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed").
llvm-svn: 75640
show more ...
|
#
56d06597 |
| 11-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
assert(0) -> LLVM_UNREACHABLE. Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG bu
assert(0) -> LLVM_UNREACHABLE. Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds.
llvm-svn: 75379
show more ...
|
#
1ff2727c |
| 05-May-2009 |
Evan Cheng <evan.cheng@apple.com> |
Move getInstrOperandRegClass from the scheduler to TargetInstrInfo.
llvm-svn: 70950
|
#
51856173 |
| 09-Apr-2009 |
Bob Wilson <bob.wilson@apple.com> |
Fix pr3954. The register scavenger asserts for inline assembly with register destinations that are tied to source operands. The TargetInstrDescr::findTiedToSrcOperand method silently fails for inli
Fix pr3954. The register scavenger asserts for inline assembly with register destinations that are tied to source operands. The TargetInstrDescr::findTiedToSrcOperand method silently fails for inline assembly. The existing MachineInstr::isRegReDefinedByTwoAddr was very close to doing what is needed, so this revision makes a few changes to that method and also renames it to isRegTiedToUseOperand (for consistency with the very similar isRegTiedToDefOperand and because it handles both two-address instructions and inline assembly with tied registers).
llvm-svn: 68714
show more ...
|
#
be69d60d |
| 11-Mar-2009 |
Duncan Sands <baldrick@free.fr> |
Add parentheses to pacify gcc-4.3.
llvm-svn: 66653
|
#
64613ace |
| 10-Mar-2009 |
Dan Gohman <gohman@apple.com> |
Fix a post-RA scheduling liveness bug. When a basic block is being scheduled in multiple regions, liveness data used by the anti-dependence breaker is carried from one region to the next, however the
Fix a post-RA scheduling liveness bug. When a basic block is being scheduled in multiple regions, liveness data used by the anti-dependence breaker is carried from one region to the next, however the information reflects the state of the instructions before scheduling. After scheduling, there may be new live range overlaps. Handle this by pessimizing the liveness data carried between regions to the point where it will be conservatively correct now matter how the earlier region is scheduled. This fixes a miscompilation in 176.gcc with the post-RA scheduler enabled.
llvm-svn: 66558
show more ...
|
Revision tags: llvmorg-2.5.0 |
|
#
dfaf646c |
| 11-Feb-2009 |
Dan Gohman <gohman@apple.com> |
When scheduling a block in parts, keep track of the overall instruction index across each part. Instruction indices are used to make live range queries, and live ranges can extend beyond scheduling r
When scheduling a block in parts, keep track of the overall instruction index across each part. Instruction indices are used to make live range queries, and live ranges can extend beyond scheduling region boundaries.
Refactor the ScheduleDAGSDNodes class some more so that it doesn't have to worry about this additional information.
llvm-svn: 64288
show more ...
|
#
b3dbb21d |
| 10-Feb-2009 |
Dan Gohman <gohman@apple.com> |
Consider any instruction that modifies the stack pointer to be a scheduling region boundary. This isn't necessary for correctness; it helps with compile time, as it avoids the need for data- and ant
Consider any instruction that modifies the stack pointer to be a scheduling region boundary. This isn't necessary for correctness; it helps with compile time, as it avoids the need for data- and anti-dependencies from all spills and reloads on the stack-pointer modification.
llvm-svn: 64255
show more ...
|
#
b9543435 |
| 10-Feb-2009 |
Dan Gohman <gohman@apple.com> |
Factor out more code for computing register live-range informationfor scheduling, and generalize is so that preserves state across scheduling regions. This fixes incorrect live-range information arou
Factor out more code for computing register live-range informationfor scheduling, and generalize is so that preserves state across scheduling regions. This fixes incorrect live-range information around terminators and labels, which are effective region boundaries.
In place of looking for terminators to anchor inter-block dependencies, introduce special entry and exit scheduling units for this purpose.
llvm-svn: 64254
show more ...
|
#
066757ee |
| 06-Feb-2009 |
Evan Cheng <evan.cheng@apple.com> |
Move getPointerRegClass from TargetInstrInfo to TargetRegisterInfo.
llvm-svn: 63938
|
#
f4b08b4f |
| 06-Feb-2009 |
Dan Gohman <gohman@apple.com> |
Move ScheduleDAGInstrs.h to be a private header. Front-ends that used this header to select a scheduling policy should use SchedulerRegistry.h instead (llvm-gcc and clang were updated a while ago).
Move ScheduleDAGInstrs.h to be a private header. Front-ends that used this header to select a scheduling policy should use SchedulerRegistry.h instead (llvm-gcc and clang were updated a while ago).
llvm-svn: 63934
show more ...
|
#
d5643531 |
| 03-Feb-2009 |
Dan Gohman <gohman@apple.com> |
Change the post-RA scheduler to iterate through the basic-block segments bottom-up instead of top down. This is the first step in a general restructuring of the way register liveness is tracked in th
Change the post-RA scheduler to iterate through the basic-block segments bottom-up instead of top down. This is the first step in a general restructuring of the way register liveness is tracked in the post-RA scheduler.
llvm-svn: 63643
show more ...
|
#
5f8a2598 |
| 16-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Instead of adding dependence edges between terminator instructions and every other instruction in their blocks to keep the terminator instructions at the end, teach the post-RA scheduler how to opera
Instead of adding dependence edges between terminator instructions and every other instruction in their blocks to keep the terminator instructions at the end, teach the post-RA scheduler how to operate on ranges of instructions, and exclude terminators from the range of instructions that get scheduled.
Also, exclude mid-block labels, such as EH_LABEL instructions, and schedule code before them separately from code after them. This fixes problems with the post-RA scheduler moving code past EH_LABELs.
llvm-svn: 62366
show more ...
|
#
157e0088 |
| 16-Jan-2009 |
Dan Gohman <gohman@apple.com> |
If an anti-dependence uses a non-allocatable register, set AntiDepReg to 0, to ensure that the subsequent code doesn't try to break the dependence.
llvm-svn: 62365
|
#
014142fd |
| 16-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Fix the check for an empty basic block to check for an empty SUnits array instead, since this is what the scheduler actually cares about. And remove a check that is unnecessary, since it can assume t
Fix the check for an empty basic block to check for an empty SUnits array instead, since this is what the scheduler actually cares about. And remove a check that is unnecessary, since it can assume that SUnits isn't empty.
llvm-svn: 62362
show more ...
|
#
b9030717 |
| 16-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Fix a "comparison between signed and unsigned integer expressions" warning.
llvm-svn: 62327
|
#
ceac7c34 |
| 16-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Initial hazard recognizer support in post-pass scheduling. This includes a new toy hazard recognizier heuristic which attempts to direct the scheduler to avoid clumping large groups of loads or store
Initial hazard recognizer support in post-pass scheduling. This includes a new toy hazard recognizier heuristic which attempts to direct the scheduler to avoid clumping large groups of loads or stores too densely.
llvm-svn: 62291
show more ...
|