[llvm-commits] CVS: llvm/lib/Target/X86/X86.td X86InstrInfo.h

Chris Lattner lattner at cs.uiuc.edu
Wed Aug 6 10:33:01 PDT 2003


Changes in directory llvm/lib/Target/X86:

X86.td updated: 1.5 -> 1.6
X86InstrInfo.h updated: 1.25 -> 1.26

---
Log message:

Completely eliminate the isVoid TSFlag, shifting over all other fields


---
Diffs of the changes:

Index: llvm/lib/Target/X86/X86.td
diff -u llvm/lib/Target/X86/X86.td:1.5 llvm/lib/Target/X86/X86.td:1.6
--- llvm/lib/Target/X86/X86.td:1.5	Mon Aug  4 00:11:37 2003
+++ llvm/lib/Target/X86/X86.td	Wed Aug  6 10:32:20 2003
@@ -26,10 +26,10 @@
 
   // Define how we want to layout our TargetSpecific information field... This
   // should be kept up-to-date with the fields in the X86InstrInfo.h file.
-  let TSFlagsFields = ["FormBits",             "hasOpSizePrefix", "Prefix",
-                       "TypeBits", "FPFormBits", "printImplicitUses", "Opcode"];
-  let TSFlagsShifts = [         0,                             6,        7,
-                               11,       14,                  17,       18];
+  let TSFlagsFields = ["FormBits"  , "hasOpSizePrefix" ,  "Prefix", "TypeBits",
+                       "FPFormBits", "printImplicitUses", "Opcode"];
+  let TSFlagsShifts = [           0,                   5,        6,         10,
+                                 13,                  16,       17];
 }
 
 def X86 : Target {


Index: llvm/lib/Target/X86/X86InstrInfo.h
diff -u llvm/lib/Target/X86/X86InstrInfo.h:1.25 llvm/lib/Target/X86/X86InstrInfo.h:1.26
--- llvm/lib/Target/X86/X86InstrInfo.h:1.25	Sun Aug  3 16:56:22 2003
+++ llvm/lib/Target/X86/X86InstrInfo.h	Wed Aug  6 10:32:20 2003
@@ -71,74 +71,75 @@
     //===------------------------------------------------------------------===//
     // Actual flags...
 
-    /// Void - Set if this instruction produces no value
-    Void        = 1 << 5,
-
     // OpSize - Set if this instruction requires an operand size prefix (0x66),
     // which most often indicates that the instruction operates on 16 bit data
     // instead of 32 bit data.
-    OpSize      = 1 << 6,
+    OpSize      = 1 << 5,
 
     // Op0Mask - There are several prefix bytes that are used to form two byte
     // opcodes.  These are currently 0x0F, and 0xD8-0xDF.  This mask is used to
     // obtain the setting of this field.  If no bits in this field is set, there
     // is no prefix byte for obtaining a multibyte opcode.
     //
-    Op0Mask     = 0xF << 7,
-    Op0Shift    = 7,
+    Op0Shift    = 6,
+    Op0Mask     = 0xF << Op0Shift,
 
     // TB - TwoByte - Set if this instruction has a two byte opcode, which
     // starts with a 0x0F byte before the real opcode.
-    TB          = 1 << 7,
+    TB          = 1 << Op0Shift,
 
     // D8-DF - These escape opcodes are used by the floating point unit.  These
     // values must remain sequential.
-    D8 = 2 << 7,   D9 = 3 << 7,   DA = 4 << 7,   DB = 5 << 7,
-    DC = 6 << 7,   DD = 7 << 7,   DE = 8 << 7,   DF = 9 << 7,
+    D8 = 2 << Op0Shift,   D9 = 3 << Op0Shift,
+    DA = 4 << Op0Shift,   DB = 5 << Op0Shift,
+    DC = 6 << Op0Shift,   DD = 7 << Op0Shift,
+    DE = 8 << Op0Shift,   DF = 9 << Op0Shift,
 
     //===------------------------------------------------------------------===//
     // This three-bit field describes the size of a memory operand.  Zero is
     // unused so that we can tell if we forgot to set a value.
-    Arg8     = 1 << 11,
-    Arg16    = 2 << 11,
-    Arg32    = 3 << 11,
-    Arg64    = 4 << 11,  // 64 bit int argument for FILD64
-    ArgF32   = 5 << 11,
-    ArgF64   = 6 << 11,
-    ArgF80   = 7 << 11,
-    ArgMask  = 7 << 11,
+    ArgShift = 10,
+    ArgMask  = 7 << ArgShift,
+    Arg8     = 1 << ArgShift,
+    Arg16    = 2 << ArgShift,
+    Arg32    = 3 << ArgShift,
+    Arg64    = 4 << ArgShift,  // 64 bit int argument for FILD64
+    ArgF32   = 5 << ArgShift,
+    ArgF64   = 6 << ArgShift,
+    ArgF80   = 7 << ArgShift,
 
     //===------------------------------------------------------------------===//
     // FP Instruction Classification...  Zero is non-fp instruction.
 
+    // FPTypeMask - Mask for all of the FP types...
+    FPTypeShift = 13,
+    FPTypeMask  = 7 << FPTypeShift,
+
     // ZeroArgFP - 0 arg FP instruction which implicitly pushes ST(0), f.e. fld0
-    ZeroArgFP  = 1 << 14,
+    ZeroArgFP  = 1 << FPTypeShift,
 
     // OneArgFP - 1 arg FP instructions which implicitly read ST(0), such as fst
-    OneArgFP   = 2 << 14,
+    OneArgFP   = 2 << FPTypeShift,
 
     // OneArgFPRW - 1 arg FP instruction which implicitly read ST(0) and write a
     // result back to ST(0).  For example, fcos, fsqrt, etc.
     //
-    OneArgFPRW = 3 << 14,
+    OneArgFPRW = 3 << FPTypeShift,
 
     // TwoArgFP - 2 arg FP instructions which implicitly read ST(0), and an
     // explicit argument, storing the result to either ST(0) or the implicit
     // argument.  For example: fadd, fsub, fmul, etc...
-    TwoArgFP   = 4 << 14,
+    TwoArgFP   = 4 << FPTypeShift,
 
     // SpecialFP - Special instruction forms.  Dispatch by opcode explicitly.
-    SpecialFP  = 5 << 14,
-
-    // FPTypeMask - Mask for all of the FP types...
-    FPTypeMask = 7 << 14,
+    SpecialFP  = 5 << FPTypeShift,
 
     // PrintImplUses - Print out implicit uses in the assembly output.
-    PrintImplUses = 1 << 17,
+    PrintImplUses = 1 << 16,
 
-    OpcodeMask    = 0xFF << 18,
-    OpcodeShift   = 18,
-    // Bits 26 -> 31 are unused
+    OpcodeShift   = 17,
+    OpcodeMask    = 0xFF << OpcodeShift,
+    // Bits 25 -> 31 are unused
   };
 }
 





More information about the llvm-commits mailing list