summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen
Commit message (Collapse)AuthorAgeFilesLines
* 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-255-38/+37
| | | | | | | reflect what it does. Switch the sense of the Next and the Check arms to be more logical. No functionality change. llvm-svn: 97093
* add a fixme for an experiment that defeated me for the time being.Chris Lattner2010-02-251-0/+4
| | | | llvm-svn: 97081
* contract movechild+checktype into a new checkchild node, shrinking theChris Lattner2010-02-244-5/+46
| | | | | | 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
* emit a histogram of the opcodes in comments.Chris Lattner2010-02-241-2/+59
| | | | llvm-svn: 97047
* lets not break the old isel.Chris Lattner2010-02-241-1/+0
| | | | llvm-svn: 97034
* Since the new instruction selector now works, I don't need to keepChris Lattner2010-02-242-8/+7
| | | | | | | | 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
* implement a simple proof-of-concept optimization forChris Lattner2010-02-245-4/+73
| | | | | | | | 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-244-3/+29
| | | | | | | 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
* The new isel was not properly handling patterns that coveredChris Lattner2010-02-244-7/+71
| | | | | | | | | internal nodes with flag results. Record these with a new OPC_MarkFlagResults opcode and use this to update the interior nodes' flag results properly. This fixes CodeGen/X86/i256-add.ll with the new isel. llvm-svn: 97021
* Changed the table generator so that the X86Sean Callanan2010-02-241-3/+4
| | | | | | disassembler never recognizes InitReg instructions. llvm-svn: 97017
* Trailing whitespace.Mikhail Glushenkov2010-02-231-1/+1
| | | | llvm-svn: 96923
* Implement order-preserving option forwarding.Mikhail Glushenkov2010-02-231-20/+44
| | | | | | | | | | | Needed to correctly handle things like 'llvmc -framework Foo foo.o -framework Bar bar.o' - before this commit all '-framework' options would've been grouped together in the beginning. Due to our dependence on CommandLine this turned out to be a giant hack; we will migrate away from CommandLine eventually. llvm-svn: 96922
* Correct option forwarding: initial implementation.Mikhail Glushenkov2010-02-231-162/+127
| | | | | | Does not work, but the infrastructure changes are in place. llvm-svn: 96920
* New experimental/undocumented feature: 'works_on_empty'.Mikhail Glushenkov2010-02-231-3/+33
| | | | | | For now, just enough support to make -filelist work. llvm-svn: 96918
* Add a way to enable '-opt=foo' forwarding.Mikhail Glushenkov2010-02-231-3/+30
| | | | llvm-svn: 96916
* add some #if 0'd out code for checking that named values in Chris Lattner2010-02-231-19/+41
| | | | | | | | input/output patterns have the same type. It turns out that this triggers all the time because we don't infer types between these boundaries. Until we do, don't turn this on. llvm-svn: 96905
* Reject patterns that use a name multiple times in the src or resultChris Lattner2010-02-231-7/+8
| | | | | | of a pattern and where the uses have different types. llvm-svn: 96904
* reject patterns that have dead named arguments in the input patternChris Lattner2010-02-231-7/+24
| | | | | | this is tidier and can find bugs. llvm-svn: 96900
* reject patterns that mention a name in the destination patternChris Lattner2010-02-231-3/+29
| | | | | | | but not in the input. Previously, this would trigger an abort late in the isel logic. llvm-svn: 96898
* merge some code.Chris Lattner2010-02-232-16/+21
| | | | llvm-svn: 96896
* more tidying upChris Lattner2010-02-231-15/+15
| | | | llvm-svn: 96891
* reduce indentation by eliminating 'else after return'Chris Lattner2010-02-231-23/+33
| | | | llvm-svn: 96889
* really fix an off-by-one errorChris Lattner2010-02-231-1/+1
| | | | llvm-svn: 96845
* switch the value# in OPC_CompleteMatch and OPC_EmitNode to use aChris Lattner2010-02-231-5/+29
| | | | | | VBR encoding for the insanity being perpetrated by the spu backend. llvm-svn: 96843
* add a new Push2 opcode for targets (like cellspu) which haveChris Lattner2010-02-221-5/+18
| | | | | | | | ridiculously ginormous patterns and need more than one byte of displacement for encodings. This fixes CellSPU/fdiv.ll. SPU is still doing something else ridiculous though. llvm-svn: 96833
* Change ComplexPattern handling to push the node being matched asChris Lattner2010-02-221-21/+13
| | | | | | | | | | well as the operands produced when the pattern is matched. This allows CheckSame to work correctly when matching replicated names involving ComplexPatterns. This fixes a bunch of MSP430 failures, we're down to 13 failures, two of which are due to a sched bug. llvm-svn: 96824
* add a new CheckMultiOpcode opcode for checking that a nodeChris Lattner2010-02-224-3/+40
| | | | | | | has one of the list of acceptable opcodes for a complex pattern. This fixes 4 regtest failures. llvm-svn: 96814
* When matching patterns that have a complex pattern as their root, make Chris Lattner2010-02-221-1/+16
| | | | | | | | sure to only run the complex pattern on nodes where the target opts in. This patch only handles targets with one opcode specified so far, but fixes 16 failures, only 34 left. llvm-svn: 96813
* fix most of the failures in the x86 suite by handling multiple Chris Lattner2010-02-211-8/+36
| | | | | | | | | | 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
* Always emit register class id references as i32 likeChris Lattner2010-02-211-1/+1
| | | | | | | DAGISelEmitter does. This fixes 11 arm failures (8 left). llvm-svn: 96757
* Sort the patterns before adding them to the FA so that we get theChris Lattner2010-02-211-7/+52
| | | | | | least cost matches. This gets us from 195 -> 208 passes on the ppc codegen tests. llvm-svn: 96747
* emit table indexes before each row so that it is debuggable.Chris Lattner2010-02-211-7/+11
| | | | llvm-svn: 96730
* fix a table size miscomputation, target opcodes are 2 bytes.Chris Lattner2010-02-211-1/+1
| | | | | | | With this, the matcher actually works reasonably well, but crashes on larger examples in the scheduler. llvm-svn: 96727
* emit to the right streams, to avoid emitting the pushChris Lattner2010-02-211-15/+16
| | | | | | body before the push. llvm-svn: 96726
* oops don't turn this on for everyone yet.Chris Lattner2010-02-211-1/+1
| | | | llvm-svn: 96725
* implement the last known missing feature: updating uses of results Chris Lattner2010-02-215-20/+33
| | | | | | | of the matched pattern to use the newly created node results. Onto the "making it actually work" phase! llvm-svn: 96724
* Lots of improvements to the new dagisel emitter. This gets it toChris Lattner2010-02-215-205/+737
| | | | | | | | | | | | | | | | | | | 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
* add emitter support for integer constants and simple physreg references.Chris Lattner2010-02-192-4/+15
| | | | llvm-svn: 96663
* fix this to work more determinstically, patch by Thomas Veith!Chris Lattner2010-02-191-1/+1
| | | | llvm-svn: 96661
* I confused myself, temporaries will be recorded right along with other inputs.Chris Lattner2010-02-191-31/+7
| | | | llvm-svn: 96639
* introduce a new ResultVal and start keeping track of temporary values.Chris Lattner2010-02-191-12/+60
| | | | llvm-svn: 96636
* add support for referencing registers and immediates,Chris Lattner2010-02-184-34/+130
| | | | | | | building the tree to represent them but not emitting table entries for them yet. llvm-svn: 96617
* start sketching out the structure of code for result emission generation.Chris Lattner2010-02-184-11/+120
| | | | | | Nothing real here yet. llvm-svn: 96575
* rename the child field to 'next'. This is not a parent/child Chris Lattner2010-02-184-44/+46
| | | | | | relationship, this is a linear list relationship. llvm-svn: 96561
* eliminate the MatcherNodeWithChild class, give the 'child'Chris Lattner2010-02-184-67/+53
| | | | | | field to MatcherNode. llvm-svn: 96560
* fit in 80 colsChris Lattner2010-02-181-7/+11
| | | | llvm-svn: 96541
* redisable this to save people a small amount of build time.Chris Lattner2010-02-171-1/+1
| | | | llvm-svn: 96497
* move isOnlyReachableByFallthrough out of MachineBasicBlock into AsmPrinter,Chris Lattner2010-02-171-1/+1
| | | | | | | and add a sparc implementation that knows about delay slots. Patch by Nathan Keynes! llvm-svn: 96492
OpenPOWER on IntegriCloud