summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/DAGISelMatcherOpt.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* fix logic in DEBUG.Chris Lattner2010-02-271-2/+2
| | | | llvm-svn: 97315
* teach the optimizer that opcode == ISD::STORE is contradictoryChris Lattner2010-02-271-6/+6
| | | | | | | | with getType() == MVT::i32 etc. Teach it that two different integer constants are contradictory. This cuts 1K off the X86 table, down to 98k llvm-svn: 97314
* Teach the grouper some simple tricks about looking contradictoryChris Lattner2010-02-271-12/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 97312
* implement a new optimization to sink pattern predicates (like isSSE1) Chris Lattner2010-02-271-0/+68
| | | | | | | | | 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. llvm-svn: 97305
* switch from my nice hashtable based merging solution to aChris Lattner2010-02-261-66/+22
| | | | | | | | 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. llvm-svn: 97218
* finish off the factoring optimization along the lines of the Chris Lattner2010-02-261-11/+32
| | | | | | | | | | 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! :) llvm-svn: 97215
* change the scope node to include a list of children to be checkedChris Lattner2010-02-251-17/+22
| | | | | | | | | 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. llvm-svn: 97160
* Implement the first half of redundancy factoring: efficiently Chris Lattner2010-02-251-4/+89
| | | | | | | | | 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. llvm-svn: 97130
* rename fooMatcherNode to fooMatcher.Chris Lattner2010-02-251-20/+20
| | | | llvm-svn: 97096
* add some noop code to push it out of my tree.Chris Lattner2010-02-251-0/+23
| | | | llvm-svn: 97094
* rename PushMatcherNode -> ScopeMatcherNode to more accuratelyChris Lattner2010-02-251-11/+10
| | | | | | | reflect what it does. Switch the sense of the Next and the Check arms to be more logical. No functionality change. llvm-svn: 97093
* contract movechild+checktype into a new checkchild node, shrinking theChris Lattner2010-02-241-4/+11
| | | | | | x86 table by 1200 bytes. llvm-svn: 97053
* split the movechild/record/moveparent -> recordchild optzn into aChris Lattner2010-02-241-16/+22
| | | | | | | | movechild/record -> recordchild/movechild and movechild/moveparent -> noop xforms. This slightly shrinks the tables (x86 to 117454) and enables adding future improvements. llvm-svn: 97051
* implement a simple proof-of-concept optimization forChris Lattner2010-02-241-2/+31
| | | | | | | | 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
* The new isel passes all tests, time to start making it go fast.Chris Lattner2010-02-241-0/+19
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
OpenPOWER on IntegriCloud