- Feb 12, 2010
-
-
Daniel Dunbar authored
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
-
- Feb 10, 2010
-
-
Daniel Dunbar authored
llvm-svn: 95802
-
Daniel Dunbar authored
- Pretty messy, but we need to rework how we handle tied operands in MCInst anyway. llvm-svn: 95774
-
- Feb 09, 2010
-
-
Chris Lattner authored
llvm-svn: 95627
-
- Feb 03, 2010
-
-
Daniel Dunbar authored
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
-
- Jan 30, 2010
-
-
Daniel Dunbar authored
in the order they were declared. llvm-svn: 94868
-
- Jan 23, 2010
-
-
Sean Callanan authored
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
-
Daniel Dunbar authored
llvm-svn: 94261
-
- Jan 14, 2010
-
-
Chris Lattner authored
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
-
- Aug 12, 2009
-
-
Daniel Dunbar authored
We now match all of 403.gcc (as emitted by clang). :) llvm-svn: 78750
-
Daniel Dunbar authored
- 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
-
- Aug 11, 2009
-
-
Daniel Dunbar authored
used to strip hard coded comments out of .td assembly strings. llvm-svn: 78716
-
Daniel Dunbar authored
related. llvm-svn: 78706
-
Daniel Dunbar authored
- This drops us to 123 ambiguous instructions (previously ~500) on X86. llvm-svn: 78636
-
- Aug 10, 2009
-
-
Daniel Dunbar authored
on target specific operands for testing class membership and converting to MCInst operands. llvm-svn: 78597
-
Daniel Dunbar authored
explicit parser match classes. llvm-svn: 78588
-
Daniel Dunbar authored
structure. llvm-svn: 78581
-
Daniel Dunbar authored
instruction operands. llvm-svn: 78565
-
- Aug 09, 2009
-
-
Daniel Dunbar authored
llvm-svn: 78533
-
Daniel Dunbar authored
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
-
Daniel Dunbar authored
- We can now discriminate SUB32ri8 from SUB32ri, for example. llvm-svn: 78530
-
Daniel Dunbar authored
- 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
-
Daniel Dunbar authored
-2 FIXMEs. llvm-svn: 78523
-
Daniel Dunbar authored
ambiguities. - Currently there are 483 ambiguities to resolve. :) llvm-svn: 78522
-
Chris Lattner authored
llvm-svn: 78520
-
Daniel Dunbar authored
llvm-svn: 78518
-
Daniel Dunbar authored
- 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
-
- Aug 08, 2009
-
-
Daniel Dunbar authored
Also, redefined MatchRegisterName to just return the register value or a sentinel, to simplify the generated code. llvm-svn: 78504
-
Chris Lattner authored
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
-
Chris Lattner authored
llvm-svn: 78487
-
Chris Lattner authored
llvm-svn: 78486
-
Benjamin Kramer authored
llvm-svn: 78462
-
Daniel Dunbar authored
- 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
-
Daniel Dunbar authored
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
-
- Aug 07, 2009
-
-
Daniel Dunbar authored
llvm-svn: 78408
-
Daniel Dunbar authored
llvm-svn: 78404
-
Daniel Dunbar authored
- Still not very sane, but a least its not 60k lines on X86. :) - In terms of correctness, currently some things are hard wired for X86, and we still don't properly resolve ambiguities (this is ignoring the instructions we don't even match due to funny .td stuff or other corner cases). The high level changes: 1. Represent tokens which are significant for matching explicitly as separate operands. This uniformly handles not only the instruction mnemonic, but also 'signficiant' syntax like the '*' in "call * ...". 2. Separate the matching of operands to an instruction from the construction of the MCInst. In theory this can be done during matching, but since the number of variations is small I think it makes sense to decompose the problems. 3. Improved a few of the mechanisms to at least successfully flatten / tokenize the assembly strings for PowerPC and ARM. 4. The comment at the top of AsmMatcherEmitter.cpp explains the approach I'm moving towards for handling ambiguous instructions. The high-bit is to infer a partial ordering of the operand classes (and force the user to specify one if we can't) and use that to resolve ambiguities. llvm-svn: 78378
-
- Aug 04, 2009
-
-
Daniel Dunbar authored
functions. - Fix variant flattening when the variant embeds an operand reference. - Ignore instructions which reference an operand multiple times (e.g., "xorb $dst, $dst"), and operands which have extra flags (e.g., "$dst:subreg32"). llvm-svn: 78099
-
- Aug 02, 2009
-
-
Daniel Dunbar authored
operands. llvm-svn: 77837
-
- Jul 31, 2009
-
-
Daniel Dunbar authored
- This is "experimental" code, I am feeling my way around and working out the best way to do things (and learning tblgen in the process). Comments welcome, but keep in mind this stuff will change radically. - This is enough to match "subb" and friends, but not much else. The next step is to automatically generate the matchers for individual operands. llvm-svn: 77657
-