summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/AsmMatcherEmitter.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* have tblgen detect when an instruction would have matched, butChris Lattner2010-09-061-6/+11
| | | | | | | | | | | | | failed because a subtarget feature was not enabled. Use this to remove a bunch of hacks from the X86AsmParser for rejecting things like popfl in 64-bit mode. Previously these hacks weren't needed, but were important to get a message better than "invalid instruction" when used in the wrong mode. This also fixes bugs where pushal would not be rejected correctly in 32-bit mode (just pusha). llvm-svn: 113166
* change MatchInstructionImpl to return an enum instead of bool.Chris Lattner2010-09-061-6/+12
| | | | llvm-svn: 113165
* have AsmMatcherEmitter.cpp produce the hunk of code that gets includedChris Lattner2010-09-061-6/+26
| | | | | | | into the middle of the class, and rework how the different sections of the generated file are conditionally included for simplicity. llvm-svn: 113163
* factor the snazzy string matcher code that Daniel hatesChris Lattner2010-09-061-134/+10
| | | | | | out of AsmMatcherEmitter.cpp into its own class. llvm-svn: 113137
* tblgen/AsmMatcher: Always emit the match function as 'MatchInstructionImpl',Daniel Dunbar2010-08-121-6/+3
| | | | | | target specific parsers can adapt the TargetAsmParser to this. llvm-svn: 110888
* tblgen/AsmMatcher: Treat '.' in assembly strings as a token separator.Daniel Dunbar2010-08-111-0/+8
| | | | llvm-svn: 110789
* tblgen/AsmMatcher: Downgrade instructions with tied operands to a debug-only ↵Daniel Dunbar2010-08-111-3/+6
| | | | | | warning, for now. llvm-svn: 110779
* TblGen/AsmMatcher: Add support for honoring instruction Requires<[]> ↵Daniel Dunbar2010-07-191-2/+136
| | | | | | | | attributes as part of the matcher. - Currently includes a hack to limit ourselves to "In32BitMode" and "In64BitMode", because we don't have the other infrastructure to properly deal with setting SSE, etc. features on X86. llvm-svn: 108677
* Convert some tab stops into spaces.Duncan Sands2010-07-121-2/+2
| | | | llvm-svn: 108130
* AsmMatcher: Ensure classes are totally ordered, so we can std::sort them ↵Daniel Dunbar2010-05-271-1/+10
| | | | | | reliably. llvm-svn: 104806
* tblgen/AsmMatcher: Change AsmOperandClass to allow a list of superclasses ↵Daniel Dunbar2010-05-221-4/+8
| | | | | | instead of just one. llvm-svn: 104452
* MC/Matcher: Add support for over-riding the default MatchInstruction functionDaniel Dunbar2010-05-041-4/+8
| | | | | | | name (for example, to allow targets to interpose the actual MatchInstruction function). llvm-svn: 102987
* change Target.getInstructionsByEnumValue to return a referenceChris Lattner2010-03-191-2/+2
| | | | | | | to a vector that CGT stores instead of synthesizing it on every call. llvm-svn: 98910
* don't go through getInstructions().Chris Lattner2010-03-191-10/+11
| | | | llvm-svn: 98906
* MC/AsmMatcher: Add support for target specific "instruction cleanup" functions,Daniel Dunbar2010-03-181-5/+11
| | | | | | to allow custom post-processing of matched instructions. llvm-svn: 98857
* MC: Fix bug where trailing tied operands were forgotten; the X86 assemblerDaniel Dunbar2010-02-121-19/+43
| | | | | | | | | matcher is now free of implicit operands! - Still need to clean up the code now that we don't to worry about implicit operands, and to make it a hard error if an instruction fails to specify all of its operands for some reason. llvm-svn: 95956
* MC/AsmMatcher: Tweak conversion function name.Daniel Dunbar2010-02-101-1/+1
| | | | llvm-svn: 95802
* MC/AsmMatcher: Add support for creating tied operands when constructing MCInsts.Daniel Dunbar2010-02-101-9/+67
| | | | | | | - Pretty messy, but we need to rework how we handle tied operands in MCInst anyway. llvm-svn: 95774
* pass stringref by value instead of by const&Chris Lattner2010-02-091-10/+10
| | | | llvm-svn: 95627
* AsmMatcherEmitter: Use stable_sort when reordering instructions, so that orderDaniel Dunbar2010-02-021-3/+5
| | | | | | | is still deterministic even amongst ambiguous instructions (eventually ambiguous match orders will be a hard error, but we aren't there yet). llvm-svn: 95157
* AsmMatcher: Create operand classes before use, apparently records aren't visitedDaniel Dunbar2010-01-301-1/+7
| | | | | | in the order they were declared. llvm-svn: 94868
* Modified the register matcher function in AsmMatcher toSean Callanan2010-01-231-3/+5
| | | | | | | | | | | be static. Also made it possible for clients to get it and no other functions from ...GenAsmMatcher.inc by defining REGISTERS_ONLY before including GenAsmMatcher.inc. This sets the stage for target-specific lexers that can identify registers and return AsmToken::Register as appropriate. llvm-svn: 94266
* AsmMatcher: Add a comment.Daniel Dunbar2010-01-231-0/+4
| | | | llvm-svn: 94261
* Split the TargetAsmParser "ParseInstruction" interface in half:Chris Lattner2010-01-141-9/+13
| | | | | | | | | | | the new ParseInstruction method just parses and returns a list of target operands. A new MatchInstruction interface is used to turn the operand list into an MCInst. This requires new/deleting all the operands, but it also gives targets the ability to use polymorphic operands if they want to. llvm-svn: 93469
* 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
* llvm-mc/AsmMatcher: Fix two thinkos in determining whether two classes areDaniel Dunbar2009-08-111-4/+23
| | | | | | related. llvm-svn: 78706
* llvm-mc/AsmParser: Implement automatic classification of RegisterClass operands.Daniel Dunbar2009-08-111-71/+256
| | | | | | - This drops us to 123 ambiguous instructions (previously ~500) on X86. llvm-svn: 78636
* llvm-mc/AsmParser: Allow .td users to redefine the names of the methods to callDaniel Dunbar2009-08-101-2/+21
| | | | | | | on target specific operands for testing class membership and converting to MCInst operands. llvm-svn: 78597
* llvm-mc/AsmMatcher: Remove some code which has been obsoleted by move toDaniel Dunbar2009-08-101-24/+4
| | | | | | explicit parser match classes. llvm-svn: 78588
* llvm-mc/AsmMatcher: Change assembler parser match classes to their own recordDaniel Dunbar2009-08-101-61/+56
| | | | | | structure. llvm-svn: 78581
* llvm-mc/AsmParser: Check for matches with super classes when matchingDaniel Dunbar2009-08-101-1/+52
| | | | | | instruction operands. llvm-svn: 78565
* llvm-mc/AsmParser: Fix thinko in ClassInfo::operator<.Daniel Dunbar2009-08-091-2/+7
| | | | llvm-svn: 78533
* llvm-mc/AsmParser: Add hack to ignore Int_* and *_Int instructions for now, toDaniel Dunbar2009-08-091-0/+11
| | | | | | | | | | make it easier to see interesting ambiguities. - Also, check that user doesn't try to redefine the super class. This is a wart in the current design, in that assembler match classes aren't explicitly declared somewhere (so there isn't a unique place to declare the super class). This should probably be fixed. llvm-svn: 78532
* llvm-mc/AsmParser: Implement user defined super classes.Daniel Dunbar2009-08-091-10/+72
| | | | | | - We can now discriminate SUB32ri8 from SUB32ri, for example. llvm-svn: 78530
* llvm-mc/AsmParser: Separate instruction ordering for ambiguity detection.Daniel Dunbar2009-08-091-36/+45
| | | | | | | | | | | - We want the ordering operation to be simple, since we run it on every match. The old ordering is also not a strict weak ordering when there are ambiguities, which makes MSVC unhappy. - While we are at it, detect all ambiguities instead of just the adjacent ones. There are actually 655, for X86. llvm-svn: 78526
* llvm-mc/AsmParser: Define match classes in the .td file.Daniel Dunbar2009-08-091-27/+39
| | | | | | -2 FIXMEs. llvm-svn: 78523
* llvm-mc/AsmParser: Sketch infrastructure for ordering instructions & detectingDaniel Dunbar2009-08-091-14/+106
| | | | | | | ambiguities. - Currently there are 483 ambiguities to resolve. :) llvm-svn: 78522
* fix editoChris Lattner2009-08-081-1/+0
| | | | llvm-svn: 78520
* llvm-mc/AsmMatcher: Tweak string matcher (missed a newline).Daniel Dunbar2009-08-081-1/+1
| | | | llvm-svn: 78518
* llvm-mc/AsmMatcher: Tweak string matcher.Daniel Dunbar2009-08-081-26/+28
| | | | | | | | | | | - Track whether we need to insert an explicit 'break'. - Invert conditional when matching a single prefix to reduce nesting/bracing/breaking. - wc -l of X86GenAsmMatcher.inc decreased by 10%. :) llvm-svn: 78513
* llvm-mc/AsmMatcher: Switch token matching to use the new string matcher.Daniel Dunbar2009-08-081-33/+31
| | | | | | | Also, redefined MatchRegisterName to just return the register value or a sentinel, to simplify the generated code. llvm-svn: 78504
* add a little function to do arbitrary string pattern matching in aChris Lattner2009-08-081-3/+138
| | | | | | | | much more efficient way than a sequence of if's. Switch MatchRegisterName to use it. It would be nice if someone could factor this out to a shared place in tblgen :) llvm-svn: 78492
* add another constChris Lattner2009-08-081-1/+1
| | | | llvm-svn: 78487
* remove a useless anon-ns, make table const.Chris Lattner2009-08-081-6/+1
| | | | llvm-svn: 78486
* MSVC doesn't like member variables with the same name as the class.Benjamin Kramer2009-08-081-13/+13
| | | | llvm-svn: 78462
* llvm-mc/AsmMatcher: Improve match code.Daniel Dunbar2009-08-081-102/+318
| | | | | | | | | | | | | | - This doesn't actually improve the algorithm (its still linear), but the generated (match) code is now fairly compact and table driven. Still need a generic string matcher. - The table still needs to be compressed, this is quite simple to do and should shrink it to under 16k. - This also simplifies and restructures the code to make the match classes more explicit, in anticipation of resolving ambiguities. llvm-svn: 78461
* llvm-mc/AsmMatcher: Switch to a unified function to convert operands to MCInst,Daniel Dunbar2009-08-081-42/+73
| | | | | | | | | so that terminal states are as simple as possible. - If we were willing to assume that the order that operands get inserted in the MCInst is fixed we could actually dispose with this altogether, although it might be nice to have the flexibility to change it later. llvm-svn: 78458
* llvm-mc/AsmMatcher: Move emit for register -> enum matcher into a separate ↵Daniel Dunbar2009-08-071-11/+18
| | | | | | routine. llvm-svn: 78408
OpenPOWER on IntegriCloud