summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen
Commit message (Collapse)AuthorAgeFilesLines
* Avoid triggering an assertion failure when an instruction patternDan Gohman2009-01-161-1/+2
| | | | | | is a leaf node. Patch by Brandner! llvm-svn: 62361
* Add support for instructions with multiple ComplexPatterns, byDan Gohman2009-01-161-7/+7
| | | | | | | adding more information to the temporary variables names so that they don't conflict. llvm-svn: 62296
* Rename getABITypeSize to getTypePaddedSize, asDuncan Sands2009-01-121-1/+1
| | | | | | suggested by Chris. llvm-svn: 62099
* make tblgen autogenerate the nocapture intrinsics for Chris Lattner2009-01-121-7/+22
| | | | | | | llvm.memcpy/memset/memmove. This allows removal of some hackish code from basicaa. llvm-svn: 62071
* add scaffolding to emit argument attributes. No functionality Chris Lattner2009-01-121-2/+31
| | | | | | change. llvm-svn: 62067
* make tblgen emit the entire Intrinsic::getAttributes method, Chris Lattner2009-01-121-0/+7
| | | | | | not a random piece of it. No functionality change. llvm-svn: 62066
* add nocapture attribute to llvm.mem* intrinsics and have tblgenChris Lattner2009-01-122-5/+12
| | | | | | parse them. tblgen doesn't yet do anything with this info though. llvm-svn: 62065
* Improve support for type-generic vector intrinsics by teaching TableGen howBob Wilson2009-01-072-5/+46
| | | | | | | | to handle LLVMMatchType intrinsic parameters, and by adding new subclasses of LLVMMatchType to match vector types with integral elements that are either twice as wide or half as wide as the elements of the matched type. llvm-svn: 61834
* Delete an unused variable and simplify the code.Dan Gohman2009-01-051-10/+7
| | | | llvm-svn: 61732
* Handle iAny and fAny types in TreePatternNode::UpdateNodeType.Bob Wilson2009-01-051-5/+7
| | | | llvm-svn: 61713
* Fix spelling in some comments.Bob Wilson2009-01-052-2/+2
| | | | llvm-svn: 61702
* Use dyn_cast intead of isa + cast in the generated DAGISel code. ThisDan Gohman2008-12-191-7/+13
| | | | | | reduces the amount of code slightly when assertions are enabled. llvm-svn: 61249
* Added support for vector widening.Mon P Wang2008-12-181-0/+6
| | | | llvm-svn: 61209
* Fix typo in error message.Mikhail Glushenkov2008-12-181-1/+1
| | | | llvm-svn: 61191
* Some enhancements for the 'case' expression.Mikhail Glushenkov2008-12-171-7/+27
| | | | | | Add (error) and (empty). llvm-svn: 61117
* Put Edge* classes into anonymous namespace.Mikhail Glushenkov2008-12-111-7/+7
| | | | | | Prevents conflicts between plugins. llvm-svn: 60871
* Make 'extern' an option property.Mikhail Glushenkov2008-12-071-38/+19
| | | | | | Makes (forward) work better. llvm-svn: 60667
* Better error message.Mikhail Glushenkov2008-12-071-1/+6
| | | | llvm-svn: 60664
* Re-apply Cedric's changes.Mikhail Glushenkov2008-12-071-24/+24
| | | | | | | Use B instead of Beg (for consistency), but NodeA and NodeB instead of A and B. llvm-svn: 60663
* Try to guess when the auto-generated cl::Sink option should be marked 'extern'.Mikhail Glushenkov2008-12-071-5/+20
| | | | | | | This would be much easier to do if the CommandLine library didn't use global state. Global state is evil. llvm-svn: 60659
* Add a (progn)-like construct for (actions). Implemented as a DAG list.Mikhail Glushenkov2008-12-071-10/+37
| | | | llvm-svn: 60658
* Use (actions) instead of option properties, support external options.Mikhail Glushenkov2008-12-071-975/+885
| | | | | | | Also includes a major refactoring. See documentation for more information. llvm-svn: 60656
* The use of the construct:Cedric Venet2008-12-051-12/+12
| | | | | | | | for(Type1 B = ...;;) { Type2 B ; ... } is bad: code is hard to read and VS VS don't like it (it ignore the second declaration of B). This patch fix the problem in tablegen. Please don't write code like this. llvm-svn: 60590
* Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning.Dan Gohman2008-12-033-3/+3
| | | | llvm-svn: 60487
* Mark x86's V_SET0 and V_SETALLONES with isSimpleLoad, and teach X86'sDan Gohman2008-12-031-9/+0
| | | | | | | | | | | | foldMemoryOperand how to "fold" them, by converting them into constant-pool loads. When they aren't folded, they use xorps/cmpeqd, but for example when register pressure is high, they may now be folded as memory operands, which reduces register pressure. Also, mark V_SET0 isAsCheapAsAMove so that two-address-elimination will remat it instead of copying zeros around (V_SETALLONES was already marked). llvm-svn: 60461
* Add a sanity-check to tablegen to catch the case where isSimpleLoadDan Gohman2008-12-032-1/+10
| | | | | | | | | is set but mayLoad is not set. Fix all the problems this turned up. Change code to not use isSimpleLoad instead of mayLoad unless it really wants isSimpleLoad. llvm-svn: 60459
* Support multiple compilation graph definitions. Not terribly useful, but ↵Mikhail Glushenkov2008-11-281-42/+51
| | | | | | makes the code more generic. llvm-svn: 60199
* Add 'hidden' and 'really_hidden' option properties.Mikhail Glushenkov2008-11-281-1/+43
| | | | llvm-svn: 60198
* On x86 favors folding short immediate into some arithmetic operations (e.g. ↵Evan Cheng2008-11-271-2/+2
| | | | | | | | | | | | | | | add, and, xor, etc.) because materializing an immediate in a register is expensive in turns of code size. e.g. movl 4(%esp), %eax addl $4, %eax is 2 bytes shorter than movl $4, %eax addl 4(%esp), %eax llvm-svn: 60139
* Small fix: the error message was incorrect in some cases.Mikhail Glushenkov2008-11-261-3/+3
| | | | llvm-svn: 60099
* Support dependencies between plugins by priority-sorting.Mikhail Glushenkov2008-11-171-5/+19
| | | | llvm-svn: 59449
* Filter ToolPropertiesList to exclude all Tools not mentioned in the ↵Mikhail Glushenkov2008-11-171-49/+78
| | | | | | compilation graph. llvm-svn: 59448
* Add a layer of indirection to make plugins more flexible.Mikhail Glushenkov2008-11-171-55/+58
| | | | | | | Use strings instead of TableGen defs in the compilation graph definition. Makes it easier for the plugins to modify an existing graph. llvm-svn: 59447
* Fix to record comparator to make it work for return values > 1.Bill Wendling2008-11-131-1/+1
| | | | llvm-svn: 59242
* Put comma in correct place for call to StructType::getBill Wendling2008-11-131-2/+4
| | | | llvm-svn: 59241
* Modify the intrinsics pattern to separate out the "return" types from theBill Wendling2008-11-134-66/+170
| | | | | | | | | | "parameter" types. An intrinsic can now return a multiple return values like this: def add_with_overflow : Intrinsic<[llvm_i32_ty, llvm_i1_ty], [LLVMMatchType<0>, LLVMMatchType<0>]>; llvm-svn: 59237
* Check the return value of std::getenv.Mikhail Glushenkov2008-11-121-4/+8
| | | | | | | | | When constructing std::strings from C strings, we should check the input value to be not NULL so that the std::string constructor does not segfault. Fixes #3047. llvm-svn: 59131
* Add a bit of lazy evaluation to PopulateCompilationGraph().Mikhail Glushenkov2008-11-121-11/+18
| | | | | | | | Only the tools that are mentioned in the compilation graph definition are now inserted by PopulateCompilationGraph(). This should cut down plugin loading time a little. llvm-svn: 59097
* Some cosmetic changes.Mikhail Glushenkov2008-11-121-0/+2
| | | | llvm-svn: 59096
* Allow $CALL and $ENV in command names. Fixes #3025.Mikhail Glushenkov2008-11-081-1/+1
| | | | llvm-svn: 58922
* Properly escape dashes in TableGen's LLVMC2 emitter.Anton Korobeynikov2008-11-081-2/+2
| | | | | | Patch by Patrick Walton! llvm-svn: 58901
* Make tablegen print out a nice error message for a const char*Dan Gohman2008-11-071-0/+7
| | | | | | exception, like it does for a std::string exception. llvm-svn: 58865
* Use an assert to check that SelectCode isn't called onDan Gohman2008-11-051-5/+4
| | | | | | nodes that are already selected. llvm-svn: 58763
* Eliminate the ISel priority queue, which used the topological order for aDan Gohman2008-11-051-30/+5
| | | | | | | | | | | | | | | | | | | | | | | | priority function. Instead, just iterate over the AllNodes list, which is already in topological order. This eliminates a fair amount of bookkeeping, and speeds up the isel phase by about 15% on many testcases. The impact on most targets is that AddToISelQueue calls can be simply removed. In the x86 target, there are two additional notable changes. The rule-bending AND+SHIFT optimization in MatchAddress that creates new pre-isel nodes during isel is now a little more verbose, but more robust. Instead of either creating an invalid DAG or creating an invalid topological sort, as it has historically done, it can now just insert the new nodes into the node list at a position where they will be consistent with the topological ordering. Also, the address-matching code has logic that checked to see if a node was "already selected". However, when a node is selected, it has all its uses taken away via ReplaceAllUsesWith or equivalent, so it won't recieve any further visits from MatchAddress. This code is now removed. llvm-svn: 58748
* Give tablegen's Type a destructor, to suppress spuriousDan Gohman2008-11-041-0/+1
| | | | | | | "Type has virtual functions but non-virtual destructor" warnings. llvm-svn: 58710
* Add some asserts to verify MVT invariant assumptions.Dan Gohman2008-11-041-0/+2
| | | | llvm-svn: 58701
* Change how extended types are represented in MVTs. Instead of fiddlingDan Gohman2008-11-032-0/+124
| | | | | | | | | | | | | | | | | | | | | | | | bits, use a union of a SimpleValueType enum and a regular Type*. This increases the size of MVT on 64-bit hosts from 32 bits to 64 bits. In most cases, this doesn't add significant overhead. There are places in codegen that use arrays of MVTs, so these are now larger, but they're small in common cases. This eliminates restrictions on the size of integer types and vector types that can be represented in codegen. As the included testcase demonstrates, it's now possible to codegen very large add operations. There are still some complications with using very large types. PR2880 is still open so they can't be used as return values on normal targets, there are no libcalls defined for very large integers so operations like multiply and divide aren't supported. This also introduces a minimal tablgen Type library, capable of handling IntegerType and VectorType. This will allow parts of TableGen that don't depend on using SimpleValueType values to handle arbitrary integer and vector types. llvm-svn: 58623
* Have TableGen emit setSubgraphColor calls under control of a -gen-debugDavid Greene2008-10-271-5/+45
| | | | | | | | flag. Then in a debugger developers can set breakpoints at these calls to see waht is about to be selected and what the resulting subgraph looks like. This really helps when debugging instruction selection. llvm-svn: 58278
* Remove tabs from my previous commit.Cedric Venet2008-10-271-2/+2
| | | | llvm-svn: 58263
* Remove redundant word in tblgen error message.Matthijs Kooijman2008-10-271-1/+1
| | | | llvm-svn: 58250
OpenPOWER on IntegriCloud