[X86] Merge the Has3DNow0F0FOpcode TSFlag into the OpMap encoding. NFC

The 3DNow instructions are encoded a little weird, but we can still represent it as an opcode map.

llvm-svn: 328410
diff --git a/llvm/utils/TableGen/X86RecognizableInstr.cpp b/llvm/utils/TableGen/X86RecognizableInstr.cpp
index 5da4a1f..e223e85 100644
--- a/llvm/utils/TableGen/X86RecognizableInstr.cpp
+++ b/llvm/utils/TableGen/X86RecognizableInstr.cpp
@@ -90,7 +90,6 @@
   HasEVEX_K          = Rec->getValueAsBit("hasEVEX_K");
   HasEVEX_KZ         = Rec->getValueAsBit("hasEVEX_Z");
   HasEVEX_B          = Rec->getValueAsBit("hasEVEX_B");
-  Has3DNow0F0FOpcode = Rec->getValueAsBit("has3DNow0F0FOpcode");
   IsCodeGenOnly      = Rec->getValueAsBit("isCodeGenOnly");
   ForceDisassemble   = Rec->getValueAsBit("ForceDisassemble");
   CD8_Scale          = byteFromRec(Rec, "CD8_Scale");
@@ -289,7 +288,7 @@
       errs() << "Instruction does not use a prefix: " << Name << "\n";
       llvm_unreachable("Invalid prefix");
     }
-  } else if (Has3DNow0F0FOpcode) {
+  } else if (OpMap == X86Local::ThreeDNow) {
     insnContext = IC_3DNOW;
   } else if (Is64Bit || HasREX_WPrefix || AdSize == X86Local::AdSize64) {
     if (HasREX_WPrefix && (OpSize == X86Local::OpSize16 || OpPrefix == X86Local::PD))
@@ -716,15 +715,17 @@
   case X86Local::XOP8:
   case X86Local::XOP9:
   case X86Local::XOPA:
+  case X86Local::ThreeDNow:
     switch (OpMap) {
     default: llvm_unreachable("Unexpected map!");
-    case X86Local::OB:   opcodeType = ONEBYTE;      break;
-    case X86Local::TB:   opcodeType = TWOBYTE;      break;
-    case X86Local::T8:   opcodeType = THREEBYTE_38; break;
-    case X86Local::TA:   opcodeType = THREEBYTE_3A; break;
-    case X86Local::XOP8: opcodeType = XOP8_MAP;     break;
-    case X86Local::XOP9: opcodeType = XOP9_MAP;     break;
-    case X86Local::XOPA: opcodeType = XOPA_MAP;     break;
+    case X86Local::OB:        opcodeType = ONEBYTE;      break;
+    case X86Local::TB:        opcodeType = TWOBYTE;      break;
+    case X86Local::T8:        opcodeType = THREEBYTE_38; break;
+    case X86Local::TA:        opcodeType = THREEBYTE_3A; break;
+    case X86Local::XOP8:      opcodeType = XOP8_MAP;     break;
+    case X86Local::XOP9:      opcodeType = XOP9_MAP;     break;
+    case X86Local::XOPA:      opcodeType = XOPA_MAP;     break;
+    case X86Local::ThreeDNow: opcodeType = TWOBYTE;      break;
     }
 
     switch (Form) {
diff --git a/llvm/utils/TableGen/X86RecognizableInstr.h b/llvm/utils/TableGen/X86RecognizableInstr.h
index 0959704..36579d0 100644
--- a/llvm/utils/TableGen/X86RecognizableInstr.h
+++ b/llvm/utils/TableGen/X86RecognizableInstr.h
@@ -122,7 +122,7 @@
   };
 
   enum {
-    OB = 0, TB = 1, T8 = 2, TA = 3, XOP8 = 4, XOP9 = 5, XOPA = 6
+    OB = 0, TB = 1, T8 = 2, TA = 3, XOP8 = 4, XOP9 = 5, XOPA = 6, ThreeDNow = 7
   };
 
   enum {
@@ -191,8 +191,6 @@
   bool HasEVEX_KZ;
   /// The hasEVEX_B field from the record
   bool HasEVEX_B;
-  /// The has3DNow0F0FOpcode field from the record
-  bool Has3DNow0F0FOpcode;
   /// Indicates that the instruction uses the L and L' fields for RC.
   bool EncodeRC;
   /// The isCodeGenOnly field from the record