summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/RegisterPressure.cpp
Commit message (Collapse)AuthorAgeFilesLines
* MI-Sched: Adjust regpressure limits for reserved regs.Andrew Trick2013-06-211-4/+4
| | | | llvm-svn: 184564
* MI Sched: fix a typo in RegPressure heuristics.Andrew Trick2013-06-171-1/+1
| | | | llvm-svn: 184131
* Replace erase loop with std::remove_if.Benjamin Kramer2013-02-161-6/+5
| | | | | | This avoids unnecessary copies. No functionality change. llvm-svn: 175367
* RegPressureTracker::dump(): Remove unnecessary argument.Andrew Trick2012-12-051-1/+1
| | | | llvm-svn: 169443
* RegisterPressureTracker: fix findUseBetween to handle DebugValueAndrew Trick2012-12-051-0/+2
| | | | llvm-svn: 169427
* RegisterPressureTracker: unify virtual registers and physical regunits.Andrew Trick2012-12-051-241/+179
| | | | | | Now that live register units are tracked individually, the code can be simplified. llvm-svn: 169426
* RegisterPresssureTracker: Track live physical register by unit.Andrew Trick2012-12-051-94/+87
| | | | | | | | This is much simpler to reason about, more efficient, and fixes some corner cases involving implicit super-register defs. Fixed rdar://12797931. llvm-svn: 169425
* Added RegisterPressureTracker::dump() for debugging.Andrew Trick2012-12-051-5/+16
| | | | llvm-svn: 169359
* Use the new script to sort the includes of every file under lib.Chandler Carruth2012-12-031-2/+2
| | | | | | | | | | | | | | | | | 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
* misched: Fix RegisterPressureTracker handling of DebugVals.Andrew Trick2012-12-011-12/+14
| | | | | | | Assertion failed: (TopRPTracker.getPos() == RegionBegin && "bad initial Top tracker"). rdar://12790302. llvm-svn: 169072
* misched: handle on-the-fly regpressure queries better for 2-addrAndrew Trick2012-11-071-8/+13
| | | | | | instructions without relying on liveintervals. llvm-svn: 167526
* Remove RegisterClassInfo::isReserved() and isAllocatable().Jakob Stoklund Olesen2012-10-151-6/+6
| | | | | | Clients can use the equivalent functions in MRI. llvm-svn: 165990
* Release build: guard dump functions withManman Ren2012-09-111-1/+1
| | | | | | | | "#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)" No functional change. Update r163339. llvm-svn: 163653
* Release build: guard dump functions with "ifndef NDEBUG"Manman Ren2012-09-061-0/+2
| | | | | | No functional change. llvm-svn: 163339
* misched: When querying RegisterPressureTracker, always save current and max ↵Andrew Trick2012-06-111-2/+8
| | | | | | pressure. llvm-svn: 158340
* misched: regpressure getMaxPressureDelta, revert accidental checkin.Andrew Trick2012-06-111-8/+2
| | | | llvm-svn: 158339
* Register pressure: added getPressureAfterInstr.Andrew Trick2012-06-091-33/+80
| | | | llvm-svn: 158256
* Move RegisterClassInfo.h.Andrew Trick2012-06-061-1/+1
| | | | | | Allow targets to access this API. It's required for RegisterPressure. llvm-svn: 158102
* Move RegisterPressure.h.Andrew Trick2012-06-061-1/+1
| | | | | | Make it a general utility for use by Targets. llvm-svn: 158097
* Switch all register list clients to the new MC*Iterator interface.Jakob Stoklund Olesen2012-06-011-5/+4
| | | | | | | | | | | | | No functional change intended. Sorry for the churn. The iterator classes are supposed to help avoid giant commits like this one in the future. The TableGen-produced register lists are getting quite large, and it may be necessary to change the table representation. This makes it possible to do so without changing all clients (again). llvm-svn: 157854
* regpressure: Added RegisterPressure::dumpAndrew Trick2012-05-241-0/+18
| | | | llvm-svn: 157423
* regpressure: physreg livein/out fixAndrew Trick2012-05-241-2/+2
| | | | llvm-svn: 157422
* misched: Added 3-level regpressure back-off.Andrew Trick2012-05-171-21/+68
| | | | | | | | | | | | | | | | | | Introduce the basic strategy for register pressure scheduling. 1) Respect target limits at all times. 2) Indentify critical register classes (pressure sets). Track pressure within the scheduled region. Avoid increasing scheduled pressure for critical registers. 3) Avoid exceeding the max pressure of the region prior to scheduling. Added logic for picking between the top and bottom ready Q's based on regpressure heuristics. Status: functional but needs to be asjusted to achieve good results. llvm-svn: 157006
* commentAndrew Trick2012-05-171-1/+1
| | | | llvm-svn: 157005
* regpressure: Fix getMaxUpwardPressureDelta.Andrew Trick2012-05-171-2/+6
| | | | llvm-svn: 157004
* whitespaceAndrew Trick2012-05-171-2/+2
| | | | llvm-svn: 157002
* misched: Introducing Top and Bottom register pressure trackers during ↵Andrew Trick2012-05-101-16/+18
| | | | | | scheduling. llvm-svn: 156571
* RegPressure: API for speculatively checking instruction pressure.Andrew Trick2012-05-101-1/+180
| | | | | | | | | Added getMaxExcessUpward/DownwardPressure. They somewhat abuse the tracker by speculatively handling an instruction out of order. But it is convenient for now. In the future, we will cache each instruction's pressure contribution to make this efficient. llvm-svn: 156561
* RegPressure: fix array index iteration style.Andrew Trick2012-05-101-8/+8
| | | | llvm-svn: 156560
* RegisterPressure: ArrayRefize some functions for better readability. No ↵Benjamin Kramer2012-04-291-34/+36
| | | | | | functionality change. llvm-svn: 155795
* RegisterPressure: A utility for computing register pressure within aAndrew Trick2012-04-241-0/+543
MachineInstr sequence. This uses the new target interface for tracking register pressure using pressure sets to model overlapping register classes and subregisters. RegisterPressure results can be tracked incrementally or stored at region boundaries. Global register pressure can be deduced from local RegisterPressure results if desired. This is an early, somewhat untested implementation. I'm working on testing it within the context of a register pressure reducing MachineScheduler. llvm-svn: 155454
OpenPOWER on IntegriCloud