| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
result nodes correctly. Note that this includes a horrible hack
in DAGISelHeader which cannot be fixed reasonably without
eliminating (parallel) from input patterns. That, in turn,
can't be done until we support writing multiple result patterns
for the X86and_flag and related multiple-result nodes.
llvm-svn: 96767
|
|
|
|
|
|
|
| |
DAGISelEmitter does. This fixes 11 arm failures (8
left).
llvm-svn: 96757
|
|
|
|
|
|
|
| |
of the matched pattern to use the newly created node results. Onto
the "making it actually work" phase!
llvm-svn: 96724
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 96639
|
|
|
|
| |
llvm-svn: 96636
|
|
|
|
|
|
|
| |
building the tree to represent them but not emitting
table entries for them yet.
llvm-svn: 96617
|
|
|
|
|
|
| |
Nothing real here yet.
llvm-svn: 96575
|
|
|
|
|
|
| |
relationship, this is a linear list relationship.
llvm-svn: 96561
|
|
|
|
|
|
| |
field to MatcherNode.
llvm-svn: 96560
|
|
|
|
|
|
|
| |
I'd like to eventually rip it out, but for now producing the
same selections as the old matcher is more important.
llvm-svn: 96458
|
|
|
|
|
|
| |
resolving a fixme.
llvm-svn: 96457
|
|
|
|
|
|
|
| |
'ischaincompatible' when a pattern has more than one input chain. Need
to do some commenting and cleanup now that I understand how this works.
llvm-svn: 96443
|
|
|
|
| |
llvm-svn: 96437
|
|
|
|
|
|
|
| |
variables. Use the fancy OpNo variable instead of i,
which has the right index including chains.
llvm-svn: 96436
|
|
|
|
| |
llvm-svn: 96433
|
|
|
|
|
|
|
| |
for evaluating complex patterns. Some cleanup has to happen before
this can be used though.
llvm-svn: 96419
|
|
|
|
| |
llvm-svn: 96416
|
|
|
|
|
|
| |
record all their results.
llvm-svn: 96412
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
need to scan the entire subtree of the pattern anymore.
llvm-svn: 96369
|
|
|
|
|
|
|
|
|
| |
use and only call IsProfitableToFold/IsLegalToFold on the load
being folded, like the old dagiselemitter does. This
substantially simplifies the code and improves opportunities for
sharing.
llvm-svn: 96368
|
|
|
|
| |
llvm-svn: 96333
|
|
|
|
|
|
| |
(isprofitable|islegal)tofold checks.
llvm-svn: 96331
|
|
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
|