This patch allows targets to define weather the instruction mnemonics in asm matcher...
authorVladimir Medic <Vladimir.Medic@imgtec.com>
Tue, 16 Jul 2013 09:22:38 +0000 (09:22 +0000)
committerVladimir Medic <Vladimir.Medic@imgtec.com>
Tue, 16 Jul 2013 09:22:38 +0000 (09:22 +0000)
llvm-svn: 186388

llvm/include/llvm/Target/Target.td
llvm/utils/TableGen/AsmMatcherEmitter.cpp

index 97df64c..82cd4dd 100644 (file)
@@ -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
index b45d40a..101d8b8 100644 (file)
@@ -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;