- 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
-
Andrew Trick authored
This infrastructure is generally useful for any target that wants to strongly prefer two instructions to be adjacent after scheduling. A following checkin will add target-specific hooks with unit tests. Then this feature will be enabled by default with misched. llvm-svn: 167742
-
Andrew Trick authored
This adds support for weak DAG edges to the general scheduling infrastructure in preparation for MachineScheduler support for heuristics based on weak edges. llvm-svn: 167738
-
- Nov 09, 2012
-
-
Benjamin Kramer authored
llvm-svn: 167618
-
- Nov 07, 2012
-
-
Andrew Trick authored
misched is disabled by default. With -enable-misched, these heuristics balance the schedule to simultaneously avoid saturating processor resources, expose ILP, and minimize register pressure. I've been analyzing the performance of these heuristics on everything in the llvm test suite in addition to a few other benchmarks. I would like each heuristic check to be verified by a unit test, but I'm still trying to figure out the best way to do that. The heuristics are still in considerable flux, but as they are refined we should be rigorous about unit testing the improvements. llvm-svn: 167527
-
- Nov 06, 2012
-
-
Andrew Trick authored
llvm-svn: 167443
-
- Oct 16, 2012
-
-
Andrew Trick authored
This is a medium term workaround until we have a more robust solution in the form of a register liveness utility for postRA passes. llvm-svn: 166001
-
- Oct 15, 2012
-
-
Andrew Trick authored
llvm-svn: 165950
-
- Oct 10, 2012
-
-
Andrew Trick authored
Allows the new machine model to be used for NumMicroOps and OutputLatency. Allows the HazardRecognizer to be disabled along with itineraries. llvm-svn: 165603
-
- Oct 08, 2012
-
-
Andrew Trick authored
llvm-svn: 165416
-
- Sep 14, 2012
-
-
Andrew Trick authored
llvm-svn: 163915
-
- Sep 12, 2012
-
-
Manman Ren authored
"#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)" No functional change. Update r163339. llvm-svn: 163653
-
- Sep 11, 2012
-
-
Andrew Trick authored
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
-
- Sep 06, 2012
-
-
Manman Ren authored
No functional change. llvm-svn: 163339
-
- Aug 23, 2012
-
-
Andrew Trick authored
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
-
- Aug 22, 2012
-
-
Craig Topper authored
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
-
- Jul 23, 2012
-
-
Sylvestre Ledru authored
llvm-svn: 160621
-
- Jul 07, 2012
-
-
Andrew Trick authored
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
-
- Jul 02, 2012
-
-
Andrew Trick authored
llvm-svn: 159599
-
- Jun 29, 2012
-
-
Andrew Trick authored
llvm-svn: 159408
-
Andrew Trick authored
llvm-svn: 159407
-
- Jun 16, 2012
-
-
Benjamin Kramer authored
llvm-svn: 158608
-
- Jun 06, 2012
-
-
Andrew Trick authored
Allow targets to access this API. It's required for RegisterPressure. llvm-svn: 158102
-
Andrew Trick authored
Make it a general utility for use by Targets. llvm-svn: 158097
-
- Jun 05, 2012
-
-
Andrew Trick authored
Minimum latency determines per-cycle scheduling groups. Expected latency determines critical path and cost. llvm-svn: 158021
-
Andrew Trick authored
llvm-svn: 157975
-
- May 25, 2012
-
-
Andrew Trick authored
llvm-svn: 157455
-
Kaelyn Uhrain authored
llvm-svn: 157438
-
Andrew Trick authored
(except the part about choosing direction) llvm-svn: 157437
-
Andrew Trick authored
llvm-svn: 157429
-
Andrew Trick authored
llvm-svn: 157428
-