#
90f711da |
| 15-Oct-2012 |
Andrew Trick <atrick@apple.com> |
misched: ILP scheduler for experimental heuristics.
llvm-svn: 165950
|
#
dd79f0fc |
| 10-Oct-2012 |
Andrew Trick <atrick@apple.com> |
misched: Use the TargetSchedModel interface wherever possible.
Allows the new machine model to be used for NumMicroOps and OutputLatency.
Allows the HazardRecognizer to be disabled along with itine
misched: Use the TargetSchedModel interface wherever possible.
Allows the new machine model to be used for NumMicroOps and OutputLatency.
Allows the HazardRecognizer to be disabled along with itineraries.
llvm-svn: 165603
show more ...
|
#
984d98bf |
| 08-Oct-2012 |
Andrew Trick <atrick@apple.com> |
misched: avoid scheduling an instruction twice.
llvm-svn: 165416
|
#
a2733e95 |
| 14-Sep-2012 |
Andrew Trick <atrick@apple.com> |
misched: add a hook for custom DAG postprocessing.
llvm-svn: 163915
|
#
19f49ac6 |
| 11-Sep-2012 |
Manman Ren <mren@apple.com> |
Release build: guard dump functions with "#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)"
No functional change. Update r163339.
llvm-svn: 163653
|
#
7a8e1004 |
| 11-Sep-2012 |
Andrew Trick <atrick@apple.com> |
Reorganize MachineScheduler interfaces and publish them in the header.
The Hexagon target decided to use a lot of functionality from the target-independent scheduler. That's fine, and other targets
Reorganize MachineScheduler interfaces and publish them in the header.
The Hexagon target decided to use a lot of functionality from the target-independent scheduler. That's fine, and other targets should be able to do the same. This reorg and API update makes that easy.
For the record, ScheduleDAGMI was not meant to be subclassed. Instead, new scheduling algorithms should be able to implement MachineSchedStrategy and be done. But if need be, it's nice to be able to extend ScheduleDAGMI, so I also made that easier. The target scheduler is somewhat more apt to break that way though.
llvm-svn: 163580
show more ...
|
#
742534c4 |
| 06-Sep-2012 |
Manman Ren <mren@apple.com> |
Release build: guard dump functions with "ifndef NDEBUG"
No functional change.
llvm-svn: 163339
|
#
ae53561b |
| 23-Aug-2012 |
Andrew Trick <atrick@apple.com> |
Simplify the computeOperandLatency API.
The logic for recomputing latency based on a ScheduleDAG edge was shady. This bypasses the problem by requiring the client to provide operand indices. This en
Simplify the computeOperandLatency API.
The logic for recomputing latency based on a ScheduleDAG edge was shady. This bypasses the problem by requiring the client to provide operand indices. This ensures consistent use of the machine model's API.
llvm-svn: 162420
show more ...
|
#
a538d831 |
| 22-Aug-2012 |
Craig Topper <craig.topper@gmail.com> |
Add a getName function to MachineFunction. Use it in places that previously did getFunction()->getName(). Remove includes of Function.h that are no longer needed.
llvm-svn: 162347
|
#
35521e23 |
| 23-Jul-2012 |
Sylvestre Ledru <sylvestre@debian.org> |
Fix a typo (the the => the)
llvm-svn: 160621
|
#
87255e34 |
| 07-Jul-2012 |
Andrew Trick <atrick@apple.com> |
I'm introducing a new machine model to simultaneously allow simple subtarget CPU descriptions and support new features of MachineScheduler.
MachineModel has three categories of data: 1) Basic proper
I'm introducing a new machine model to simultaneously allow simple subtarget CPU descriptions and support new features of MachineScheduler.
MachineModel has three categories of data: 1) Basic properties for coarse grained instruction cost model. 2) Scheduler Read/Write resources for simple per-opcode and operand cost model (TBD). 3) Instruction itineraties for detailed per-cycle reservation tables.
These will all live side-by-side. Any subtarget can use any combination of them. Instruction itineraries will not change in the near term. In the long run, I expect them to only be relevant for in-order VLIW machines that have complex contraints and require a precise scheduling/bundling model. Once itineraries are only actively used by VLIW-ish targets, they could be replaced by something more appropriate for those targets.
This tablegen backend rewrite sets things up for introducing MachineModel type #2: per opcode/operand cost model.
llvm-svn: 159891
show more ...
|
#
2f26b348 |
| 02-Jul-2012 |
Andrew Trick <atrick@apple.com> |
misched: allow NULL InstrItineraries.
llvm-svn: 159599
|
#
8c9e6728 |
| 29-Jun-2012 |
Andrew Trick <atrick@apple.com> |
misched: avoid scheduling instructions that can't be dispatched.
llvm-svn: 159408
|
#
ce27bb99 |
| 29-Jun-2012 |
Andrew Trick <atrick@apple.com> |
misched: count micro-ops toward the issue limit.
llvm-svn: 159407
|
#
b9f84bb0 |
| 16-Jun-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Guard private fields that are unused in Release builds with #ifndef NDEBUG.
llvm-svn: 158608
|
#
05ff4667 |
| 06-Jun-2012 |
Andrew Trick <atrick@apple.com> |
Move RegisterClassInfo.h.
Allow targets to access this API. It's required for RegisterPressure.
llvm-svn: 158102
|
#
88517f60 |
| 06-Jun-2012 |
Andrew Trick <atrick@apple.com> |
Move RegisterPressure.h.
Make it a general utility for use by Targets.
llvm-svn: 158097
|
#
4544606c |
| 05-Jun-2012 |
Andrew Trick <atrick@apple.com> |
misched: API for minimum vs. expected latency.
Minimum latency determines per-cycle scheduling groups. Expected latency determines critical path and cost.
llvm-svn: 158021
|
#
d36adece |
| 05-Jun-2012 |
Andrew Trick <atrick@apple.com> |
misched: comments from code review.
llvm-svn: 157975
|
#
4e7f6a77 |
| 25-May-2012 |
Andrew Trick <atrick@apple.com> |
misched: trace formatting
llvm-svn: 157455
|
#
85d8f0cb |
| 24-May-2012 |
Kaelyn Uhrain <rikka@google.com> |
Silence unused variable warnings from when assertions are disabled.
llvm-svn: 157438
|
#
a306a8a8 |
| 24-May-2012 |
Andrew Trick <atrick@apple.com> |
misched: Use the same scheduling heuristics with -misched-topdown/bottomup.
(except the part about choosing direction)
llvm-svn: 157437
|
#
79d3eecb |
| 24-May-2012 |
Andrew Trick <atrick@apple.com> |
misched: Trace regpressure.
llvm-svn: 157429
|
#
a8ad5f7c |
| 24-May-2012 |
Andrew Trick <atrick@apple.com> |
misched: Give each ReadyQ a unique ID
llvm-svn: 157428
|
#
61f1a278 |
| 24-May-2012 |
Andrew Trick <atrick@apple.com> |
misched: Added ScoreboardHazardRecognizer.
The Hazard checker implements in-order contraints, or interlocked resources. Ready instructions with hazards do not enter the available queue and are not v
misched: Added ScoreboardHazardRecognizer.
The Hazard checker implements in-order contraints, or interlocked resources. Ready instructions with hazards do not enter the available queue and are not visible to other heuristics.
The major code change is the addition of SchedBoundary to encapsulate the state at the top or bottom of the schedule, including both a pending and available queue.
The scheduler now counts cycles in sync with the hazard checker. These are minimum cycle counts based on known hazards.
Targets with no itinerary (x86_64) currently remain at cycle 0. To fix this, we need to provide some maximum issue width for all targets. We also need to add the concept of expected latency vs. minimum latency.
llvm-svn: 157427
show more ...
|