- Mar 07, 2012
-
-
Bill Wendling authored
the DebugLoc information can be maintained throughout by grabbing the DebugLoc before the RemoveBranch and then passing the result to the InsertBranch. Patch by Andrew Stanford-Jason! llvm-svn: 152212
-
Andrew Trick authored
llvm-svn: 152210
-
Andrew Trick authored
llvm-svn: 152209
-
Andrew Trick authored
ScheduleDAG is responsible for the DAG: SUnits and SDeps. It provides target hooks for latency computation. ScheduleDAGInstrs extends ScheduleDAG and defines the current scheduling region in terms of MachineInstr iterators. It has access to the target's scheduling itinerary data. ScheduleDAGInstrs provides the logic for building the ScheduleDAG for the sequence of MachineInstrs in the current region. Target's can implement highly custom schedulers by extending this class. ScheduleDAGPostRATDList provides the driver and diagnostics for current postRA scheduling. It maintains a current Sequence of scheduled machine instructions and logic for splicing them into the block. During scheduling, it uses the ScheduleHazardRecognizer provided by the target. Specific changes: - Removed driver code from ScheduleDAG. clearDAG is the only interface needed. - Added enterRegion/exitRegion hooks to ScheduleDAGInstrs to delimit the scope of each scheduling region and associated DAG. They should be used to setup and cleanup any region-specific state in addition to the DAG itself. This is necessary because we reuse the same ScheduleDAG object for the entire function. The target may extend these hooks to do things at regions boundaries, like bundle terminators. The hooks are called even if we decide not to schedule the region. So all instructions in a block are "covered" by these calls. - Added ScheduleDAGInstrs::begin()/end() public API. - Moved Sequence into the driver layer, which is specific to the scheduling algorithm. llvm-svn: 152208
-
Andrew Trick authored
llvm-svn: 152207
-
Andrew Trick authored
ScheduleDAG has nothing to do with how the instructions are scheduled. llvm-svn: 152206
-
Andrew Trick authored
ScheduleDAG will not refer to the scheduled instruction sequence. llvm-svn: 152205
-
Andrew Trick authored
ScheduleDAG will not refer to the scheduled instruction sequence. llvm-svn: 152204
-
Andrew Trick authored
llvm-svn: 152203
-
Chandler Carruth authored
to hash_combine. One of the interfaces could already do this, and the other can just use a small buffer. This is a much more efficient way to use the hash_combine interface, although I don't have any particular benchmark where this code was hot, so I can't measure much of an impact. It at least doesn't slow anything down. llvm-svn: 152200
-
Chandler Carruth authored
"is sized". This prevents every query to isSized() from recursing over every sub-type of a struct type. This could get *very* slow for extremely deep nesting of structs, as in 177.mesa. This change is a 45% speedup for 'opt -O2' of 177.mesa.linked.bc, and likely a significant speedup for other cases as well. It even impacts -O0 cases because so many part of the code try to check whether a type is sized. Thanks for the review from Nick Lewycky and Benjamin Kramer on IRC. llvm-svn: 152197
-
Nick Lewycky authored
until after other inexpensive tests. llvm-svn: 152195
-
Jim Grosbach authored
llvm-svn: 152188
-
Jim Grosbach authored
llvm-svn: 152185
-
Jim Grosbach authored
llvm-svn: 152184
-
Andrew Trick authored
GV and XDOT paths are untested but should work the same. llvm-svn: 152179
-
Andrew Trick authored
llvm-svn: 152178
-
Andrew Trick authored
Soon, ScheduleDAG will not refer to the BB. llvm-svn: 152177
-
Andrew Trick authored
llvm-svn: 152176
-
Andrew Trick authored
llvm-svn: 152175
-
Andrew Trick authored
llvm-svn: 152174
-
Andrew Trick authored
llvm-svn: 152173
-
Andrew Trick authored
llvm-svn: 152172
-
Eric Christopher authored
as well as completely defined classes. This fixes rdar://10956070 llvm-svn: 152171
-
Evan Cheng authored
Extend r148086 to check for [r +/- reg] address mode. This fixes queens performance regression (due to increased register pressure from overly aggressive pre-inc formation). llvm-svn: 152162
-
Jim Grosbach authored
Register pair, all lanes subscripting. llvm-svn: 152157
-
- Mar 06, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 152153
-
Jim Grosbach authored
Register pair VLD1/VLD2 all-lanes instructions. Kill off more of the pseudos as a result. llvm-svn: 152150
-
Benjamin Kramer authored
SmallPtrSet: Provide a more efficient implementation of swap than the default triple-copy std::swap. This currently assumes that both sets have the same SmallSize to keep the implementation simple, a limitation that can be lifted if someone cares. llvm-svn: 152143
-
Eli Friedman authored
llvm-svn: 152136
-
Jim Grosbach authored
llvm-svn: 152131
-
Jakob Stoklund Olesen authored
llvm-svn: 152129
-
Kevin Enderby authored
llvm-svn: 152127
-
Roman Divacky authored
llvm-svn: 152122
-
Jay Foad authored
implementation. Patch by Meador Inge llvm-svn: 152116
-
Jakob Stoklund Olesen authored
When an instruction only writes sub-registers, it is still necessary to add an <imp-def> operand for the super-register. When reloading into a virtual register, rewriting will add the operand, but when loading directly into a virtual register, the <imp-def> operand is still necessary. llvm-svn: 152095
-
Evan Cheng authored
llvm-svn: 152089
-
Owen Anderson authored
Make it possible for a target to mark FSUB as Expand. This requires providing a default expansion (FADD+FNEG), and teaching DAGCombine not to form FSUBs post-legalize if they are not legal. llvm-svn: 152079
-
Lang Hames authored
The fpscr register contains both flags (set by FP operations/comparisons) and control bits. The control bits (FPSCR) should be reserved, since they're always available and needn't be defined before use. The flag bits (FPSCR_NZCV) should like to be unreserved so they can be hoisted by MachineCSE. This fixes PR12165. llvm-svn: 152076
-
Eli Friedman authored
llvm-svn: 152070
-