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
|