| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 144648
|
|
|
|
| |
llvm-svn: 134259
|
|
|
|
|
|
| |
No functional change was intended.
llvm-svn: 133202
|
|
|
|
| |
llvm-svn: 132487
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 131001
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 110460
|
|
|
|
| |
llvm-svn: 110410
|
|
|
|
|
|
|
|
| |
address of the static
ID member as the sole unique type identifier. Clean up APIs related to this change.
llvm-svn: 110396
|
|
|
|
| |
llvm-svn: 108450
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
| |
- Rename ExactHazardRecognizer to PostRAHazardRecognizer and move its header to include to allow targets to extend it.
llvm-svn: 105959
|
|
|
|
| |
llvm-svn: 105862
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 104254
|
|
|
|
| |
llvm-svn: 104175
|
|
|
|
| |
llvm-svn: 103806
|
|
|
|
|
|
| |
while debugging what's mishandled about them in the post-RA pass.
llvm-svn: 103805
|
|
|
|
|
|
| |
changes before doing phi lowering for switches.
llvm-svn: 102809
|
|
|
|
|
|
|
| |
just remove them all. Radar 7873207 (working around the root problem of
Radar 7759363).
llvm-svn: 101604
|
|
|
|
| |
llvm-svn: 101043
|
|
|
|
| |
llvm-svn: 97765
|
|
|
|
| |
llvm-svn: 92594
|
|
|
|
|
|
| |
the target.
llvm-svn: 90970
|
|
|
|
|
|
|
| |
The MO reference to a MachineOperand can be invalidated by
MachineInstr::addOperand. Don't even use it for debugging.
llvm-svn: 90381
|
|
|
|
|
|
| |
additional, speculative scheduling pass as its cost did not translate into significant performance improvement. Minor tweaks.
llvm-svn: 89471
|
|
|
|
|
|
| |
along the critical path.
llvm-svn: 88682
|
|
|
|
| |
llvm-svn: 87015
|
|
|
|
| |
llvm-svn: 86634
|
|
|
|
|
|
| |
be renamed to break anti-dependencies.
llvm-svn: 86628
|
|
|
|
|
|
| |
avoid introducing new anti-dependencies.
llvm-svn: 86098
|
|
|
|
|
|
| |
registers that should be renamed.
llvm-svn: 85939
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
llvm-svn: 85412
|
|
|
|
|
|
| |
times. This is necessary because new anti-dependencies are exposed when "current" ones are broken.
llvm-svn: 85166
|
|
|
|
| |
llvm-svn: 85146
|
|
|
|
|
|
| |
any target. Enable with -break-anti-dependencies=all.
llvm-svn: 85145
|
|
|
|
| |
llvm-svn: 85127
|
|
|
|
|
|
| |
VISIBILITY_HIDDEN removal.
llvm-svn: 85043
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
be performed by the post-RA scheduler. The default is none.
llvm-svn: 84911
|
|
|
|
| |
llvm-svn: 84727
|
|
|
|
|
|
| |
anti-dependencies. Remove some dead code.
llvm-svn: 84691
|
|
|
|
| |
llvm-svn: 84658
|
|
|
|
| |
llvm-svn: 84273
|
|
|
|
| |
llvm-svn: 84248
|
|
|
|
| |
llvm-svn: 84011
|