- Feb 24, 2010
-
-
Chris Lattner authored
the old one around for comparative purposes: have the ENABLE_NEW_ISEL #define (which is not enabled on mainline) stop emitting the old isel at all, yay for build time win. llvm-svn: 97033
-
Chris Lattner authored
the new isel: fold movechild+record+moveparent into a single recordchild N node. This shrinks the X86 table from 125443 to 117502 bytes. llvm-svn: 97031
-
Chris Lattner authored
Also add an easy macro at the top of DAGISelEmitter.cpp to enable it. Lets see if I can avoid accidentally turning it on :) llvm-svn: 97029
-
- Feb 21, 2010
-
-
Chris Lattner authored
least cost matches. This gets us from 195 -> 208 passes on the ppc codegen tests. llvm-svn: 96747
-
Chris Lattner authored
llvm-svn: 96725
-
Chris Lattner authored
of the matched pattern to use the newly created node results. Onto the "making it actually work" phase! llvm-svn: 96724
-
Chris Lattner authored
the point where it is to the 95% feature complete mark, it just needs result updating to be done (then testing, optimization etc). More specificallly, this adds support for chain and flag handling on the result nodes, support for sdnodexforms, support for variadic nodes, memrefs, pinned physreg inputs, and probably lots of other stuff. In the old DAGISelEmitter, this deletes the dead code related to OperatorMap, cleans up a variety of dead stuff handling "implicit remapping" from things like globaladdr -> targetglobaladdr (which is no longer used because globaladdr always needs to be legalized), and some minor formatting fixes. llvm-svn: 96716
-
- Feb 18, 2010
-
-
Chris Lattner authored
Nothing real here yet. llvm-svn: 96575
-
Chris Lattner authored
llvm-svn: 96541
-
- Feb 17, 2010
-
-
Chris Lattner authored
llvm-svn: 96497
-
Chris Lattner authored
and add a sparc implementation that knows about delay slots. Patch by Nathan Keynes! llvm-svn: 96492
-
Chris Lattner authored
tblgen splatted code into the implementation. llvm-svn: 96460
-
Chris Lattner authored
functionality change. llvm-svn: 96453
-
Chris Lattner authored
for evaluating complex patterns. Some cleanup has to happen before this can be used though. llvm-svn: 96419
-
Chris Lattner authored
does the same thing as getComplexPatternInfo. llvm-svn: 96411
-
- Feb 16, 2010
-
-
Chris Lattner authored
llvm-svn: 96409
-
rdar://7653908Chris Lattner authored
into a roundss intrinsic, producing a cyclic dag. The root cause of this is badness handling ComplexPattern nodes in the old dagisel that I noticed through inspection. Eliminate a copy of the of the code that handled ComplexPatterns by making EmitChildMatchCode call into EmitMatchCode. llvm-svn: 96408
-
Chris Lattner authored
with chains. On interior nodes that lead up to them, we just directly check that there is a single use. This generates slightly more efficient code. llvm-svn: 96366
-
Chris Lattner authored
llvm-svn: 96337
-
Chris Lattner authored
llvm-svn: 96333
-
Chris Lattner authored
llvm-svn: 96332
-
Chris Lattner authored
(isprofitable|islegal)tofold checks. llvm-svn: 96331
-
- Feb 15, 2010
-
-
Evan Cheng authored
IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use. This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses. llvm-svn: 96255
-
Chris Lattner authored
produce a table based matcher instead of gobs of C++ Code. Though it's not done yet, the shrinkage seems promising, the table for the X86 ISel is 75K and still has a lot of optimization to come (compare to the ~1.5M of .o generated the old way, much of which will go away). The code is currently disabled by default (the #if 0 in DAGISelEmitter.cpp). When enabled it generates a dead SelectCode2 function in the DAGISel Header which will eventually replace SelectCode. There is still a lot of stuff left to do, which are documented with a trail of FIXMEs. llvm-svn: 96215
-
- Feb 14, 2010
-
-
Chris Lattner authored
on TreePatternNode to be methods on TreePatternNode. llvm-svn: 96197
-
Chris Lattner authored
that predated -fast-isel which attempted to speed up the dag pattern matchers at -O0. Since fast-isel is around, this is basically obsolete and removing it shrinks the generated dag isels. llvm-svn: 96188
-
- Feb 13, 2010
-
-
Chris Lattner authored
class out of line. llvm-svn: 96113
-
- Jan 05, 2010
-
-
Dan Gohman authored
clear what information these functions are actually using. This is also a micro-optimization, as passing a SDNode * around is simpler than passing a { SDNode *, int } by value or reference. llvm-svn: 92564
-
- Jan 04, 2010
-
-
Dan Gohman authored
verifying that the special case does not occur. llvm-svn: 92504
-
Dan Gohman authored
for a refactoring I'm working on. llvm-svn: 92503
-
- Dec 19, 2009
-
-
Dan Gohman authored
llvm-svn: 91741
-
- Nov 24, 2009
-
-
Dan Gohman authored
Note that "hasDotLocAndDotFile"-style debug info was already broken; people wanting this functionality should implement it in the AsmPrinter/DwarfWriter code. llvm-svn: 89711
-
- Nov 14, 2009
-
-
Benjamin Kramer authored
forward declaration and patching tblgen to emit it right. Patch by Amine Khaldi! llvm-svn: 88798
-
- Nov 08, 2009
-
-
Anton Korobeynikov authored
since the instruction might use the other result of different type. llvm-svn: 86462
-
- Oct 30, 2009
-
-
Dan Gohman authored
llvm-svn: 85556
-
- Oct 29, 2009
-
-
Dan Gohman authored
*ISelDAGToDAG.cpp to being regular code in SelectionDAGISel.cpp. llvm-svn: 85530
-
Dan Gohman authored
bunch of associated comments, because it doesn't have anything to do with DAGs or scheduling. This is another step in decoupling MachineInstr emitting from scheduling. llvm-svn: 85517
-
- Oct 15, 2009
-
-
Jakob Stoklund Olesen authored
llvm-svn: 84193
-
- Sep 25, 2009
-
-
Dan Gohman authored
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions. This eliminates MachineInstr's std::list member and allows the data to be created by isel and live for the remainder of codegen, avoiding a lot of copying and unnecessary translation. This also shrinks MemSDNode. - Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated fields for MachineMemOperands. - Change MemSDNode to have a MachineMemOperand member instead of its own fields with the same information. This introduces some redundancy, but it's more consistent with what MachineInstr will eventually want. - Ignore alignment when searching for redundant loads for CSE, but remember the greatest alignment. Target-specific code which previously used MemOperandSDNodes with generic SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range so that the SelectionDAG framework knows that MachineMemOperand information is available. llvm-svn: 82794
-
Dan Gohman authored
naming scheme used in SelectionDAG, where there are multiple kinds of "target" nodes, but "machine" nodes are nodes which represent a MachineInstr. llvm-svn: 82790
-