summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/PostRASchedulerList.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove all remaining uses of Value::getNameStr().Benjamin Kramer2011-11-151-2/+2
| | | | llvm-svn: 144648
* Rename TargetSubtarget to TargetSubtargetInfo for consistency.Evan Cheng2011-07-011-12/+13
| | | | llvm-svn: 134259
* Teach antidependency breakers to use RegisterClassInfo.Jakob Stoklund Olesen2011-06-161-5/+10
| | | | | | No functional change was intended. llvm-svn: 133202
* Update DBG_VALUEs while breaking anti dependencies.Devang Patel2011-06-021-1/+1
| | | | llvm-svn: 132487
* Add an issue width check to the postRA scheduler. Patch by Max Kazakov!Andrew Trick2011-06-011-0/+6
| | | | | | | | | | For targets with no itinerary (x86) it is a nop by default. For targets with issue width already expressed in the itinerary (ARM) it bypasses a scoreboard check but otherwise does not affect the schedule. It does make the code more consistent and complete and allows new targets to specify their issue width in an arbitrary way. llvm-svn: 132385
* Typo: Reviewed by Alistair.Andrew Trick2011-05-061-1/+1
| | | | llvm-svn: 131001
* Post-RA scheduler compile time fix. Quadratic computation of DAG node depth.Andrew Trick2011-05-061-4/+10
| | | | | | | | | | | The post-ra scheduler was explicitly updating the depth of a node's successors after scheduling it, regardless of whether the successor was ready. This is quadratic for DAGs with transitively redundant edges. I simply removed the useless update of depth, which is lazilly computed later. Fixes <rdar://problem/9044332> compiler takes way too long to build TextInput. llvm-svn: 130992
* Various bits of framework needed for precise machine-level selectionAndrew Trick2010-12-241-37/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | DAG scheduling during isel. Most new functionality is currently guarded by -enable-sched-cycles and -enable-sched-hazard. Added InstrItineraryData::IssueWidth field, currently derived from ARM itineraries, but could be initialized differently on other targets. Added ScheduleHazardRecognizer::MaxLookAhead to indicate whether it is active, and if so how many cycles of state it holds. Added SchedulingPriorityQueue::HasReadyFilter to allowing gating entry into the scheduler's available queue. ScoreboardHazardRecognizer now accesses the ScheduleDAG in order to get information about it's SUnits, provides RecedeCycle for bottom-up scheduling, correctly computes scoreboard depth, tracks IssueCount, and considers potential stall cycles when checking for hazards. ScheduleDAGRRList now models machine cycles and hazards (under flags). It tracks MinAvailableCycle, drives the hazard recognizer and priority queue's ready filter, manages a new PendingQueue, properly accounts for stall cycles, etc. llvm-svn: 122541
* Teach if-converter to be more careful with predicating instructions that wouldEvan Cheng2010-09-101-1/+1
| | | | | | | | | | | take multiple cycles to decode. For the current if-converter clients (actually only ARM), the instructions that are predicated on false are not nops. They would still take machine cycles to decode. Micro-coded instructions such as LDM / STM can potentially take multiple cycles to decode. If-converter should take treat them as non-micro-coded simple instructions. llvm-svn: 113570
* Reapply r110396, with fixes to appease the Linux buildbot gods.Owen Anderson2010-08-061-1/+1
| | | | llvm-svn: 110460
* Revert r110396 to fix buildbots.Owen Anderson2010-08-061-1/+1
| | | | llvm-svn: 110410
* Don't use PassInfo* as a type identifier for passes. Instead, use the ↵Owen Anderson2010-08-051-1/+1
| | | | | | | | address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
* Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.Bill Wendling2010-07-151-2/+3
| | | | llvm-svn: 108450
* Allow ARM if-converter to be run after post allocation scheduling.Evan Cheng2010-06-181-24/+4
| | | | | | | | | | | | | | | | - This fixed a number of bugs in if-converter, tail merging, and post-allocation scheduler. If-converter now runs branch folding / tail merging first to maximize if-conversion opportunities. - Also changed the t2IT instruction slightly. It now defines the ITSTATE register which is read by instructions in the IT block. - Added Thumb2 specific hazard recognizer to ensure the scheduler doesn't change the instruction ordering in the IT block (since IT mask has been finalized). It also ensures no other instructions can be scheduled between instructions in the IT block. This is not yet enabled. llvm-svn: 106344
* - Do away with SimpleHazardRecognizer.h. It's not used and offers little value.Evan Cheng2010-06-141-25/+0
| | | | | | - Rename ExactHazardRecognizer to PostRAHazardRecognizer and move its header to include to allow targets to extend it. llvm-svn: 105959
* Allow target to provide its own hazard recognizer to post-ra scheduler.Evan Cheng2010-06-121-6/+16
| | | | llvm-svn: 105862
* - Change MachineInstr::findRegisterDefOperandIdx so it can also look for defsEvan Cheng2010-05-211-2/+2
| | | | | | | | | | that are aliases of the specified register. - Rename modifiesRegister to definesRegister since it's looking a def of the specific register or one of its super-registers. It's not looking for def of a sub-register or alias that could change the specified register. - Added modifiesRegister to look for defs of aliases. llvm-svn: 104377
* Remove dbg_value workaround and associated command line optionJim Grosbach2010-05-201-20/+0
| | | | llvm-svn: 104254
* Enable preserving debug information through post-RA schedulingJim Grosbach2010-05-191-1/+1
| | | | llvm-svn: 104175
* 80 column and trailing whitespace cleanupJim Grosbach2010-05-141-24/+25
| | | | llvm-svn: 103806
* add cmd line option to leave dbgvalues in during post-RA sceduling. UsefulJim Grosbach2010-05-141-5/+14
| | | | | | while debugging what's mishandled about them in the post-RA pass. llvm-svn: 103805
* Get rid of the EdgeMapping map. Instead, just check for BasicBlockDan Gohman2010-05-011-2/+2
| | | | | | changes before doing phi lowering for switches. llvm-svn: 102809
* As a temporary workaround for post-RA not handling DebugValue instructions,Bob Wilson2010-04-171-0/+11
| | | | | | | just remove them all. Radar 7873207 (working around the root problem of Radar 7759363). llvm-svn: 101604
* Remove a #include.Dan Gohman2010-04-121-1/+0
| | | | llvm-svn: 101043
* Fix some more places where dbg_value affected codegen.Dale Johannesen2010-03-051-0/+2
| | | | llvm-svn: 97765
* Change errs() to dbgs().David Greene2010-01-051-13/+13
| | | | llvm-svn: 92594
* <rdar://problem/7453528>. Track only physical registers that are valid for ↵David Goodwin2009-12-091-1/+2
| | | | | | the target. llvm-svn: 90970
* Don't hang on to pointers or references after vector::push_back.Jakob Stoklund Olesen2009-12-031-6/+3
| | | | | | | The MO reference to a MachineOperand can be invalidated by MachineInstr::addOperand. Don't even use it for debugging. llvm-svn: 90381
* Remove some old experimental code that is no longer needed. Remove ↵David Goodwin2009-11-201-112/+33
| | | | | | additional, speculative scheduling pass as its cost did not translate into significant performance improvement. Minor tweaks. llvm-svn: 89471
* Allow target to specify regclass for which antideps will only be broken ↵David Goodwin2009-11-131-3/+3
| | | | | | along the critical path. llvm-svn: 88682
* Rename registers to break output dependencies in addition to anti-dependencies.David Goodwin2009-11-121-3/+7
| | | | llvm-svn: 87015
* Fixed to address code review. No functional changes.David Goodwin2009-11-101-1/+1
| | | | llvm-svn: 86634
* Allow targets to specify register classes whose member registers should not ↵David Goodwin2009-11-101-2/+3
| | | | | | be renamed to break anti-dependencies. llvm-svn: 86628
* Break anti-dependencies using free registers in a round-robin manner to ↵David Goodwin2009-11-051-2/+4
| | | | | | avoid introducing new anti-dependencies. llvm-svn: 86098
* Do a scheduling pass ignoring anti-dependencies to identify candidate ↵David Goodwin2009-11-031-37/+112
| | | | | | registers that should be renamed. llvm-svn: 85939
* Make -print-machineinstrs more readable.Dan Gohman2009-10-311-2/+2
| | | | | | | | | | | | | | - Be consistent when referring to MachineBasicBlocks: BB#0. - Be consistent when referring to virtual registers: %reg1024. - Be consistent when referring to unknown physical registers: %physreg10. - Be consistent when referring to known physical registers: %RAX - Be consistent when referring to register 0: %reg0 - Be consistent when printing alignments: align=16 - Print jump table contents. - Don't print host addresses, in general. - and various other cleanups. llvm-svn: 85682
* Make AntiDepReg.h internal.David Goodwin2009-10-281-1/+1
| | | | llvm-svn: 85412
* Allow the aggressive anti-dep breaker to process the same region multiple ↵David Goodwin2009-10-261-6/+13
| | | | | | times. This is necessary because new anti-dependencies are exposed when "current" ones are broken. llvm-svn: 85166
* Define virtual destructor in *.cpp file.David Goodwin2009-10-261-0/+3
| | | | llvm-svn: 85146
* Add aggressive anti-dependence breaker. Currently it is not the default for ↵David Goodwin2009-10-261-3/+5
| | | | | | any target. Enable with -break-anti-dependencies=all. llvm-svn: 85145
* Break anti-dependence breaking out into its own class.David Goodwin2009-10-261-542/+43
| | | | llvm-svn: 85127
* Remove includes of Support/Compiler.h that are no longer needed after theNick Lewycky2009-10-251-1/+0
| | | | | | VISIBILITY_HIDDEN removal. llvm-svn: 85043
* Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.Nick Lewycky2009-10-251-2/+2
| | | | | | | Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. llvm-svn: 85042
* Allow the target to select the level of anti-dependence breaking that should ↵David Goodwin2009-10-221-5/+16
| | | | | | be performed by the post-RA scheduler. The default is none. llvm-svn: 84911
* Revert r84658 and r84691. They were causing llvm-gcc bootstrap to fail.Dan Gohman2009-10-211-489/+319
| | | | llvm-svn: 84727
* Respect src register allocation requirements when breaking ↵David Goodwin2009-10-201-17/+20
| | | | | | anti-dependencies. Remove some dead code. llvm-svn: 84691
* Checkpoint more aggressive anti-dependency breaking for post-ra scheduler.David Goodwin2009-10-201-310/+477
| | | | llvm-svn: 84658
* Change createPostRAScheduler so it can be turned off at llc -O1.Evan Cheng2009-10-161-4/+6
| | | | llvm-svn: 84273
* If post-alloc scheduler is not enabled, it should return false, not true.Evan Cheng2009-10-161-3/+3
| | | | llvm-svn: 84248
* Add debugging output.David Goodwin2009-10-131-2/+12
| | | | llvm-svn: 84011
OpenPOWER on IntegriCloud