diff options
| author | Vladimir Medic <Vladimir.Medic@imgtec.com> | 2013-07-16 09:22:38 +0000 |
|---|---|---|
| committer | Vladimir Medic <Vladimir.Medic@imgtec.com> | 2013-07-16 09:22:38 +0000 |
| commit | 9273151c3bbc96c9b2911caffe3e1a724261cd06 (patch) | |
| tree | 70790baba2cb6a2b3e4ac7212fedc76826a881e7 | |
| parent | 1cf95914b7ef65d517447d5b39fbda5ab1603d13 (diff) | |
| download | external_llvm-9273151c3bbc96c9b2911caffe3e1a724261cd06.zip external_llvm-9273151c3bbc96c9b2911caffe3e1a724261cd06.tar.gz external_llvm-9273151c3bbc96c9b2911caffe3e1a724261cd06.tar.bz2 | |
This patch allows targets to define weather the instruction mnemonics in asm matcher tables will contain '.' character.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186388 91177308-0d34-0410-b5e6-96231b3b80d8
| -rw-r--r-- | include/llvm/Target/Target.td | 3 | ||||
| -rw-r--r-- | utils/TableGen/AsmMatcherEmitter.cpp | 11 |
2 files changed, 10 insertions, 4 deletions
diff --git a/include/llvm/Target/Target.td b/include/llvm/Target/Target.td index 97df64c..82cd4dd 100644 --- a/include/llvm/Target/Target.td +++ b/include/llvm/Target/Target.td @@ -444,6 +444,9 @@ class Instruction { /// constraint. For example, "$Rn = $Rd". string TwoOperandAliasConstraint = ""; + /// Does the instruction mnemonic allow '.' + bit MnemonicContainsDot = 0; + ///@} /// UseNamedOperandTable - If set, the operand indices of this instruction diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp index b45d40a..101d8b8 100644 --- a/utils/TableGen/AsmMatcherEmitter.cpp +++ b/utils/TableGen/AsmMatcherEmitter.cpp @@ -837,9 +837,12 @@ void MatchableInfo::tokenizeAsmString(const AsmMatcherInfo &Info) { } case '.': - if (InTok) - AsmOperands.push_back(AsmOperand(String.slice(Prev, i))); - Prev = i; + if (!(TheDef->getValue("MnemonicContainsDot")) || + !(TheDef->getValueAsBit("MnemonicContainsDot"))) { + if (InTok) + AsmOperands.push_back(AsmOperand(String.slice(Prev, i))); + Prev = i; + } InTok = true; break; @@ -2326,7 +2329,7 @@ static void emitMnemonicAliasVariant(raw_ostream &OS,const AsmMatcherInfo &Info, } if (AliasesFromMnemonic.empty()) return; - + // Process each alias a "from" mnemonic at a time, building the code executed // by the string remapper. std::vector<StringMatcher::StringPair> Cases; |
