summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen
Commit message (Collapse)AuthorAgeFilesLines
* Input files should go before all other options.Mikhail Glushenkov2009-10-081-14/+24
| | | | | | Important, for example, when calling 'gcc a.o b.o c.o -lD -lE -lF'. llvm-svn: 83524
* Add instruction flags: hasExtraSrcRegAllocReq and hasExtraDefRegAllocReq. WhenEvan Cheng2009-10-013-0/+6
| | | | | | | | | | set, these flags indicate the instructions source / def operands have special register allocation requirement that are not captured in their register classes. Post-allocation passes (e.g. post-alloc scheduler) should not change their allocations. e.g. ARM::LDRD require the two definitions to be allocated even / odd register pair. llvm-svn: 83196
* Introduce the TargetInstrInfo::KILL machine instruction and get rid of theJakob Stoklund Olesen2009-09-284-9/+11
| | | | | | | | | | unused DECLARE instruction. KILL is not yet used anywhere, it will replace TargetInstrInfo::IMPLICIT_DEF in the places where IMPLICIT_DEF is just used to alter liveness of physical registers. llvm-svn: 83006
* Add a way to query the number of input files.Mikhail Glushenkov2009-09-281-5/+21
| | | | llvm-svn: 82957
* A bit prettier formatting.Mikhail Glushenkov2009-09-281-3/+3
| | | | llvm-svn: 82955
* Improve MachineMemOperand handling.Dan Gohman2009-09-251-18/+11
| | | | | | | | | | | | | | | | | | | | | - Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions. This eliminates MachineInstr's std::list member and allows the data to be created by isel and live for the remainder of codegen, avoiding a lot of copying and unnecessary translation. This also shrinks MemSDNode. - Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated fields for MachineMemOperands. - Change MemSDNode to have a MachineMemOperand member instead of its own fields with the same information. This introduces some redundancy, but it's more consistent with what MachineInstr will eventually want. - Ignore alignment when searching for redundant loads for CSE, but remember the greatest alignment. Target-specific code which previously used MemOperandSDNodes with generic SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range so that the SelectionDAG framework knows that MachineMemOperand information is available. llvm-svn: 82794
* Rename getTargetNode to getMachineNode, for consistency with theDan Gohman2009-09-251-3/+3
| | | | | | | | naming scheme used in SelectionDAG, where there are multiple kinds of "target" nodes, but "machine" nodes are nodes which represent a MachineInstr. llvm-svn: 82790
* Make the end-of-itinerary mark explicit. Some cleanup.David Goodwin2009-09-241-5/+3
| | | | llvm-svn: 82709
* Use raw_ostream::indent instead of passing strings.Mikhail Glushenkov2009-09-211-145/+163
| | | | llvm-svn: 82456
* convert some stuff to StringRef to avoid temporary std::strings.Chris Lattner2009-09-182-47/+47
| | | | llvm-svn: 82244
* add a comment.Chris Lattner2009-09-181-0/+5
| | | | llvm-svn: 82236
* slightly increase prettiness.Chris Lattner2009-09-141-2/+2
| | | | llvm-svn: 81742
* emit the register table as a massive string to avoid relocations.Chris Lattner2009-09-141-5/+16
| | | | llvm-svn: 81741
* move StringToOffsetTable out to its own header.Chris Lattner2009-09-142-56/+77
| | | | llvm-svn: 81740
* factor string table generation out to its own class. This changesChris Lattner2009-09-141-50/+73
| | | | | | the encoding of the AsmStrs table saving a byte or two. llvm-svn: 81739
* eliminate the TargetRegisterDesc::AsmName field, the asmprinters now have ↵Chris Lattner2009-09-131-6/+1
| | | | | | this table. llvm-svn: 81728
* the tblgen produced 'getRegisterName' method does not accessChris Lattner2009-09-131-1/+1
| | | | | | the object, make it static instead of const. llvm-svn: 81711
* make tblgen produce a function that returns the name for a physreg.Chris Lattner2009-09-132-8/+49
| | | | | | Nothing is using this info yet. llvm-svn: 81707
* Eliminate some unnecessary implicit constructors in generated DAG ISel code.Owen Anderson2009-09-111-1/+1
| | | | | | Partial fix for PR4946. llvm-svn: 81518
* PHI nodes can never reach the asmprinter, assert and die instead of printingChris Lattner2009-09-111-1/+2
| | | | | | out an illegal "PHINODE" instruction. llvm-svn: 81495
* Distinguish between 'empty' and empty DAG marker.Mikhail Glushenkov2009-09-101-1/+1
| | | | llvm-svn: 81448
* Add a logical 'not' operator to llvmc's TableGen dialect.Mikhail Glushenkov2009-09-101-0/+12
| | | | llvm-svn: 81447
* remove DebugLoc from MCInst and eliminate "Comment printing" fromChris Lattner2009-09-091-4/+0
| | | | | | | | | | | | | the MCInst path of the asmprinter. Instead, pull comment printing out of the autogenerated asmprinter into each target that uses the autogenerated asmprinter. This causes code duplication into each target, but in a way that will be easier to clean up later when more asmprinter stuff is commonized into the base AsmPrinter class. This also fixes an xcore strangeness where it inserted two tabs before every instruction. llvm-svn: 81396
* Fix a subtle bug in "return;" generation which caused us to missChris Lattner2009-09-091-22/+3
| | | | | | | | a return in one case. Instead of sprinking return handling code throughout the asmprinter generator, just treat it like any other normal statement. llvm-svn: 81395
* hoist the call to processDebugLoc out of the generatedChris Lattner2009-09-091-2/+0
| | | | | | | | | | | | | asm printer into the "printInstruction" routine. This fixes a problem where the experimental asmprinter would drop debug labels in some cases, and fixes issues on ppc/xcore where pseudo instructions like "mr" didn't get debug locs properly. It is annoying that this moves the call from one place into each target, but a future set of more invasive refactorings will fix that problem. llvm-svn: 81377
* Remove some unused variables and methods warned about byDuncan Sands2009-09-061-1/+0
| | | | | | icc (#177, partial). Patch by Erick Tryzelaar. llvm-svn: 81106
* PR4795: Remove EEVT::isFP, isInt and isVec types used by TableGen's typeBob Wilson2009-08-292-35/+46
| | | | | | | | | | | | | | | inferencing. As far as I can tell, these are equivalent to the existing MVT::fAny, iAny and vAny types, and having both of them makes it harder to reason about and modify the type inferencing code. The specific problem in PR4795 occurs when updating a vAny type to be fAny or iAny, or vice versa. Both iAny and fAny include vector types -- they intersect with the set of types represented by vAny. When merging them, choose fAny/iAny to represent the intersection. This is not perfect, since fAny/iAny also include scalar types, but it is good enough for TableGen's type inferencing. llvm-svn: 80423
* Fix bad length argument to substr calls. Apparently I'm the first one toBob Wilson2009-08-261-2/+2
| | | | | | attempt more than 2 constraints on an instruction. llvm-svn: 80169
* Make LLVM command-line tools overwrite their output files without -f.Dan Gohman2009-08-251-2/+1
| | | | | | | | | | | | | | | | This is conventional command-line tool behavior. -f now just means "enable binary output on terminals". Add a -f option to llvm-extract and llvm-link, for consistency. Remove F_Force from raw_fd_ostream and enable overwriting and truncating by default. Introduce an F_Excl flag to permit users to enable a failure when the file already exists. This flag is currently unused. Update Makefiles and documentation accordingly. llvm-svn: 79990
* prune the #includes in raw_ostream.h by moving a Chris Lattner2009-08-241-0/+1
| | | | | | | member out of line. ftostr is not particularly speedy, so that method is presumably not perf sensitive. llvm-svn: 79885
* Prune #includes from llvm/Linker.h and llvm/System/Path.h,Chris Lattner2009-08-231-3/+3
| | | | | | | | | | | | | | | | | | forcing them down into various .cpp files. This change also: 1. Renames TimeValue::toString() and Path::toString() to ::str() for similarity with the STL. 2. Removes all stream insertion support for sys::Path, forcing clients to call .str(). 3. Removes a use of Config/alloca.h from bugpoint, using smallvector instead. 4. Weans llvm-db off <iostream> sys::Path really needs to be gutted, but I don't have the desire to do it at this point. llvm-svn: 79869
* Try to fix MSVC build after r79846.Benjamin Kramer2009-08-232-4/+7
| | | | llvm-svn: 79850
* Fix non-determinism in DAGISel emitter.Daniel Dunbar2009-08-234-7/+23
| | | | | | | | | | | | | | | | | | | | | | | - This manifested as non-determinism in the .inc output in rare cases (when two distinct patterns ended up being equivalent, which is rather rare). That meant the pattern matching was non-deterministic, which could eventually mean the code generator selected different instructions based on the arch. - It's probably worth making the DAGISel ensure a total ordering (or force the user to), but the simple fix here is to totally order the Record* maps based on a unique ID. - PR4672, PR4711. Yay: -- ddunbar@giles:~$ cat ~/llvm.obj.64/lib/Target/*/*.inc | shasum d1099ff34b21459a5a3e7021c225c080e6017ece - ddunbar@giles:~$ cat ~/llvm.obj.ppc/lib/Target/*/*.inc | shasum d1099ff34b21459a5a3e7021c225c080e6017ece - -- llvm-svn: 79846
* Change Pass::print to take a raw ostream instead of std::ostream,Chris Lattner2009-08-231-1/+1
| | | | | | update all code that this affects. llvm-svn: 79830
* remove some DOUTsChris Lattner2009-08-233-21/+21
| | | | llvm-svn: 79821
* Change raw_fd_ostream to take flags as an optional bitmask Chris Lattner2009-08-231-2/+2
| | | | | | | | | | | | | | | | instead of as two bools. Use this to add a F_Append flag which has the obvious behavior. Other unrelated changes conflated into this patch: 1. REmove EH stuff from llvm-dis and llvm-as, the try blocks are dead. 2. Simplify the filename inference code in llvm-as/llvm-dis, because raw_fd_ostream does the right thing with '-'. 3. Switch machine verifier to use raw_ostream instead of ostream (Which is the thing that needed append in the first place). llvm-svn: 79807
* Record variable debug info at ISel time directly.Devang Patel2009-08-222-21/+0
| | | | llvm-svn: 79742
* Extend the instruction itinerary model to include the ability to indicate ↵David Goodwin2009-08-172-42/+107
| | | | | | the def and use cycle for each operand. This additional information is optional, so existing itineraries do not need to be changed. llvm-svn: 79247
* the MinPad argument to PadToColumn only really makes sense to be 1,Chris Lattner2009-08-171-2/+2
| | | | | | just remove the argument and replace it with 1. llvm-svn: 79246
* Push LLVMContexts through the IntegerType APIs.Owen Anderson2009-08-131-9/+9
| | | | llvm-svn: 78948
* Add a new "SDTCisVec" SDTypeConstraint. This complements the vAny type.Bob Wilson2009-08-122-11/+30
| | | | | | | | There have been a few times where I've wanted this but ended up leaving the operand type unconstrained. It is easy to add this now and should help catch errors in the future. llvm-svn: 78849
* This void is implicit in C++.Dan Gohman2009-08-122-5/+5
| | | | llvm-svn: 78848
* Enhance the InstrStage object to enable the specification of an Itinerary ↵David Goodwin2009-08-121-4/+7
| | | | | | with overlapping stages. The default is to maintain the current behavior that the "next" stage immediately follows the previous one. llvm-svn: 78827
* Add contexts to some of the MVT APIs. No functionality change yet, just the ↵Owen Anderson2009-08-122-21/+2
| | | | | | infrastructure work needed to get the contexts to where they need to be first. llvm-svn: 78759
* llvm-mc/AsmParser: Match hard coded registers (e.g. 'shldl %cl, %eax, %eax')Daniel Dunbar2009-08-111-25/+102
| | | | | | We now match all of 403.gcc (as emitted by clang). :) llvm-svn: 78750
* Add 'isCodeGenOnly' bit to Instruction .td records.Daniel Dunbar2009-08-111-20/+13
| | | | | | | | | | | | | | | - Used to mark fake instructions which don't correspond to an actual machine instruction (or are duplicates of a real instruction). This is to be used for "special cases" in the .td files, which should be ignored by things like the assembler and disassembler. We still need a good solution to handle pervasive duplication, like with the Int_ instructions. - Set the bit on fake "mov 0" style instructions, which allows turning an assembler matcher warning into a hard error. - -2 FIXMEs. llvm-svn: 78731
* llvm-mc/AsmParser: Allow target to specific a comment delimiter, which will beDaniel Dunbar2009-08-111-1/+26
| | | | | | used to strip hard coded comments out of .td assembly strings. llvm-svn: 78716
* Split EVT into MVT and EVT, the former representing _just_ a primitive type, ↵Owen Anderson2009-08-1110-207/+207
| | | | | | | | while the latter is capable of representing either a primitive or an extended type. llvm-svn: 78713
* llvm-mc/AsmMatcher: Fix two thinkos in determining whether two classes areDaniel Dunbar2009-08-111-4/+23
| | | | | | related. llvm-svn: 78706
* Fix a few more places in TableGen that need to handle EVT::vAny types.Bob Wilson2009-08-111-2/+4
| | | | llvm-svn: 78643
OpenPOWER on IntegriCloud