revert r95949, it turns out that adding new prefixes is not a
authorChris Lattner <sabre@nondot.org>
Fri, 12 Feb 2010 01:55:31 +0000 (01:55 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 12 Feb 2010 01:55:31 +0000 (01:55 +0000)
great solution for the disassembler, we'll go with "plan b".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95957 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86.td
lib/Target/X86/X86InstrInfo.h

index a8f735b0ee92c94a09075375b7b2e51ab1da7376..7919559058b1c8f280bf7156c581d3595c4cb3b9 100644 (file)
@@ -168,11 +168,11 @@ def X86InstrInfo : InstrInfo {
                        6,
                        7,
                        8,
+                       12,
                        13,
-                       14,
-                       17,
+                       16,
+                       19,
                        20,
-                       21,
                        24];
 }
 
index 7bd3e4f1cabc3813bbea49164a5c5a0ace131fa1..a6b38637f50a1cfb767cff8b896d2be700ad94ff 100644 (file)
@@ -291,7 +291,7 @@ namespace X86II {
     // set, there is no prefix byte for obtaining a multibyte opcode.
     //
     Op0Shift    = 8,
-    Op0Mask     = 0x1F << Op0Shift,
+    Op0Mask     = 0xF << Op0Shift,
 
     // TB - TwoByte - Set if this instruction has a two byte opcode, which
     // starts with a 0x0F byte before the real opcode.
@@ -324,13 +324,13 @@ namespace X86II {
     // etc. We only cares about REX.W and REX.R bits and only the former is
     // statically determined.
     //
-    REXShift    = 13,
+    REXShift    = 12,
     REX_W       = 1 << REXShift,
 
     //===------------------------------------------------------------------===//
     // This three-bit field describes the size of an immediate operand.  Zero is
     // unused so that we can tell if we forgot to set a value.
-    ImmShift = 14,
+    ImmShift = 13,
     ImmMask  = 7 << ImmShift,
     Imm8     = 1 << ImmShift,
     Imm16    = 2 << ImmShift,
@@ -341,7 +341,7 @@ namespace X86II {
     // FP Instruction Classification...  Zero is non-fp instruction.
 
     // FPTypeMask - Mask for all of the FP types...
-    FPTypeShift = 17,
+    FPTypeShift = 16,
     FPTypeMask  = 7 << FPTypeShift,
 
     // NotFP - The default, set for instructions that do not use FP registers.
@@ -374,17 +374,17 @@ namespace X86II {
     SpecialFP  = 7 << FPTypeShift,
 
     // Lock prefix
-    LOCKShift = 20,
+    LOCKShift = 19,
     LOCK = 1 << LOCKShift,
 
     // Segment override prefixes. Currently we just need ability to address
     // stuff in gs and fs segments.
-    SegOvrShift = 21,
+    SegOvrShift = 20,
     SegOvrMask  = 3 << SegOvrShift,
     FS          = 1 << SegOvrShift,
     GS          = 2 << SegOvrShift,
 
-    // Bit 23 is unused.
+    // Bits 22 -> 23 are unused
     OpcodeShift   = 24,
     OpcodeMask    = 0xFF << OpcodeShift
   };