History log of /external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
936910d9293f7118056498c75c7bca79a7fc579c 05-Oct-2013 Craig Topper <craig.topper@gmail.com> Add OPC_CheckChildSame0-3 to the DAG isel matcher. This replaces sequences of MoveChild, CheckSame, MoveParent. Saves 846 bytes from the X86 DAG isel matcher, ~300 from ARM, ~840 from Hexagon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
596cfd045fa05c249083b5ff7cdb5e32f4d92b97 04-Oct-2013 Craig Topper <craig.topper@gmail.com> Revert r191940 to see if it fixes the build bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191941 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
d3562956789dbd0571a7e46052bee64b153fa7c4 04-Oct-2013 Craig Topper <craig.topper@gmail.com> Add OPC_CheckChildSame0-3 to the DAG isel matcher. This replaces sequences of MoveChild, CheckSame, MoveParent. Saves 846 bytes from the X86 DAG isel matcher, ~300 from ARM, ~840 from Hexagon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191940 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
ddcdcc88631c6bd4ad43d9198b98bc9a829be036 23-Apr-2011 Jay Foad <jay.foad@gmail.com> Remove unused STL header includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130068 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
036609bd7d42ed1f57865969e059eb7d1eb6c392 23-Dec-2010 Chris Lattner <sabre@nondot.org> Flag -> Glue, the ongoing saga


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122513 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
8950bcaa5aec9364bf4e7947d195c32433850816 23-Dec-2010 Chris Lattner <sabre@nondot.org> continue renaming flag -> glue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122506 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
084df627c82fdf4e1829723edf0a833b5bc31f89 24-Mar-2010 Chris Lattner <sabre@nondot.org> add plumbing for handling multiple result nodes
in some more places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
5f19c43161ea7c220bfdf9e958668daff55f1f23 16-Mar-2010 Chris Lattner <sabre@nondot.org> don't form a RecordChild or CheckChildType for child #'s over 7, we don't
have enums for them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98597 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
81d6d52592b928838d706e9fc5c9779de017d0d7 07-Mar-2010 Chris Lattner <sabre@nondot.org> turn off debug spew


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97912 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
6fd326b7ff3f114f3b1eda05e1142e52222c6b54 07-Mar-2010 Chris Lattner <sabre@nondot.org> more factoring.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97911 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
9cdd9659c381001a200aa4667919297187fa5764 07-Mar-2010 Chris Lattner <sabre@nondot.org> teach tblgen to be more aggressive when factoring CheckType nodes.
Now it will factor things like this:

CheckType i32
...
CheckOpcode ISD::AND
CheckType i64
...

into:

SwitchType:
i32: ...
i64:
CheckOpcode ISD::AND
...

This shrinks hte table by a few bytes, nothing spectacular.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97908 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
cfe2eab7446dedc471592fe702fefef783383171 03-Mar-2010 Chris Lattner <sabre@nondot.org> introduce a new SwitchTypeMatcher node (which is analogous to
SwitchOpcodeMatcher) and have DAGISelMatcherOpt form it. This
speeds up selection, particularly for X86 which has lots of
variants of instructions with only type differences.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97645 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
405f1252b9f3937b9c30edf683375cf261967c79 01-Mar-2010 Chris Lattner <sabre@nondot.org> resolve a fixme by having the .td file parser reject thigns like

(set GPR, somecomplexpattern)

if somecomplexpattern doesn't declare what it can match.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97513 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
7c720fc33a68678fb4ce736c9a0aba949fca01d4 01-Mar-2010 Chris Lattner <sabre@nondot.org> remove dead code, simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97510 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
f94bc547575236d06a45bc17c576f3e19e463803 01-Mar-2010 Chris Lattner <sabre@nondot.org> tolerate factoring the *last* node for CellSPU.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97508 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
fa342faef9d1c89de356ed83a6c6529ed3e87610 01-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate the CheckMultiOpcodeMatcher code and have each
ComplexPattern at the root be generated multiple times, once
for each opcode they are part of. This encourages factoring
because the opcode checks get treated just like everything
else in the matcher.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97439 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
eb66921adb943ea841e72c8eee4777607c48b70e 01-Mar-2010 Chris Lattner <sabre@nondot.org> add a new OPC_SwitchOpcode which is semantically equivalent
to a scope where every child starts with a CheckOpcode, but
executes more efficiently. Enhance DAGISelMatcherOpt to
form it.

This also fixes a bug in CheckOpcode: apparently the SDNodeInfo
objects are not pointer comparable, we have to compare the
enum name.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97438 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
c99b5a25bb7ea5ed14e242d16dbfd683dba68f4a 01-Mar-2010 Chris Lattner <sabre@nondot.org> pull MarkFlagResult out from between an EmitNode/CompleteMatch
pair. This encourages MorphNodeTo formation, this gets us 200
more MorphNodeTo's on X86 and shrinks the table a bit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
0cebe6181af8a2cf5e6cf9497cda4c47b426a0f8 01-Mar-2010 Chris Lattner <sabre@nondot.org> enhance RecordNode and RecordChild comments to indicate what
slot they're recording into, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97433 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
e9eeda878beb8d36507a69a2be2fe08fcc968fef 01-Mar-2010 Chris Lattner <sabre@nondot.org> Emit redundant opcode checks for andimm and orimm tests at root
so that we get grouping at the top level.

Add an optimization to reorder type check & record nodes
after opcode checks. We prefer to expose tree shape
matching which improves grouping and will enhance the next
optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97432 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
ccd23cc2a49f02acbcdd50128a9022477f7cb6a4 01-Mar-2010 Chris Lattner <sabre@nondot.org> simplify some code now that chain/flag results are not stored in
the vtlist for emitnode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97429 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
ff7fb60f2a7e2f3efd54df6480aadcb4adf5cab7 28-Feb-2010 Chris Lattner <sabre@nondot.org> enhance the EmitNode/MorphNodeTo operands to take a bit that
specifies whether there is an output flag or not. Use this
instead of redundantly encoding the chain/flag results in the
output vtlist.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97419 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
9a21500edc485a2c383a03fba429943f031c1398 28-Feb-2010 Chris Lattner <sabre@nondot.org> use MorphNodeTo instead of SelectNodeTo. SelectNodeTo
is just a silly wrapper around MorphNodeTo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97416 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
c78f2a39945339752a163949a2d7c27f28635d99 28-Feb-2010 Chris Lattner <sabre@nondot.org> enhance the new isel to use SelectNodeTo for most patterns,
even some the old isel didn't. There are several parts of
this that make me feel dirty, but it's no worse than the
old isel. I'll clean up the parts I can do without ripping
out the old one next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97415 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
6281cda6737bcda0e924318ddcce28392001691e 28-Feb-2010 Chris Lattner <sabre@nondot.org> enhance EmitNodeMatcher to keep track of the recorded slot numbers
it will populate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
e86097af5598e44727875f00e492d43c978239be 28-Feb-2010 Chris Lattner <sabre@nondot.org> add infrastructure to support forming selectnodeto. Not used yet
because I have to go on another detour first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97362 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
a230f9623d864450d432bb76c397b0cb35a3437e 27-Feb-2010 Chris Lattner <sabre@nondot.org> change CheckOpcodeMatcher to hold the SDNodeInfo instead of
the opcode name. This gives the optimizer more semantic info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
db8b6222d48f9cb22623a1cfcafafb0d62a184b7 27-Feb-2010 Chris Lattner <sabre@nondot.org> fix logic in DEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97315 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
247896272a8b812900b27ee85c8b1d347b4752d8 27-Feb-2010 Chris Lattner <sabre@nondot.org> teach the optimizer that opcode == ISD::STORE is contradictory
with getType() == MVT::i32 etc. Teach it that two different
integer constants are contradictory. This cuts 1K off the X86
table, down to 98k



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97314 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
82781b938af4057df90b5fa4035781ddc4aa681a 27-Feb-2010 Chris Lattner <sabre@nondot.org> Teach the grouper some simple tricks about looking contradictory
predicates. For example if we have:

Scope:
CheckType i32
ABC
CheckType f32
DEF
CheckType i32
GHI

Then we know that we can transform this into:
Scope:
CheckType i32
Scope
ABC
GHI
CheckType f32
DEF

This reorders the check for the 'GHI' predicate above
the check for the 'DEF' predidate. However it is safe to do this
in this situation because we know that a node cannot have both an
i32 and f32 type.

We're now doing more factoring that the old isel did.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97312 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
d323fd45e3eb5254a423e1ae14250854816a141f 27-Feb-2010 Chris Lattner <sabre@nondot.org> implement a new optimization to sink pattern predicates (like isSSE1)
as deeply into the pattern as we can get away with. In pratice, this
means "all the way to to the emitter code, but not across
ComplexPatterns". This substantially increases the amount of factoring
we get.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97305 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
d6f06025646f86bed78831ae2ec46bd1d4126d09 26-Feb-2010 Chris Lattner <sabre@nondot.org> switch from my nice hashtable based merging solution to a
gross little neighbor merging implementation. This one has
the benefit of not violating the ordering of patterns, so it
generates code that passes tests again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97218 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
d4397b9481cd848e580c86b4beb0d22e8c3d1213 26-Feb-2010 Chris Lattner <sabre@nondot.org> finish off the factoring optimization along the lines of the
current design. This generates a matcher that successfully
runs, but it turns out that the factoring we're doing violates
the ordering of patterns, so we end up matching (e.g.) movups
where we want movaps. This won't due, but I'll address this in
a follow on patch. It's nice to not be on by default yet! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97215 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
d6c84720df0b63e34081e0c7890f3074d8b110b9 25-Feb-2010 Chris Lattner <sabre@nondot.org> change the scope node to include a list of children to be checked
instead of to have a chained series of scope nodes. This makes
the generated table smaller, improves the efficiency of the
interpreter, and make the factoring optimization much more
reasonable to implement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97160 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
04db82d2ba5d9d8e935de82a465b1de5ea7cdf69 25-Feb-2010 Chris Lattner <sabre@nondot.org> Implement the first half of redundancy factoring: efficiently
splitting all the patterns under scope nodes into equality sets
based on their first node. The second step is to rewrite the
graph info a form that exposes the sharing. Before I do this,
I want to redesign the Scope node.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97130 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
b21ba71045420b4c0dc5f30e85b9b01c9165eb57 25-Feb-2010 Chris Lattner <sabre@nondot.org> rename fooMatcherNode to fooMatcher.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97096 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
06158406c5d0ba49ed3840bce382a3b502a3fdea 25-Feb-2010 Chris Lattner <sabre@nondot.org> add some noop code to push it out of my tree.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97094 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
60df53e30a7e39c884f4ca4eb03346bea5825109 25-Feb-2010 Chris Lattner <sabre@nondot.org> rename PushMatcherNode -> ScopeMatcherNode to more accurately
reflect what it does. Switch the sense of the Next and the Check
arms to be more logical. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
23cfda719e059ce7d761b08fbfb89e676d6c9737 24-Feb-2010 Chris Lattner <sabre@nondot.org> contract movechild+checktype into a new checkchild node, shrinking the
x86 table by 1200 bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97053 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
22c48b384cdb691150f520c78dcecb6134e5edb0 24-Feb-2010 Chris Lattner <sabre@nondot.org> split the movechild/record/moveparent -> recordchild optzn into a
movechild/record -> recordchild/movechild and
movechild/moveparent -> noop xforms. This slightly shrinks the tables
(x86 to 117454) and enables adding future improvements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97051 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
19b5a7590b784f19875b9880ea8838c393431656 24-Feb-2010 Chris Lattner <sabre@nondot.org> implement a simple proof-of-concept optimization for
the new isel: fold movechild+record+moveparent into a
single recordchild N node. This shrinks the X86 table
from 125443 to 117502 bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97031 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
91c6a822baaba3cb2def94224115e57b84805347 24-Feb-2010 Chris Lattner <sabre@nondot.org> The new isel passes all tests, time to start making it go fast.
Also add an easy macro at the top of DAGISelEmitter.cpp to enable
it. Lets see if I can avoid accidentally turning it on :)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97029 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/utils/TableGen/DAGISelMatcherOpt.cpp