improve comments.
[oota-llvm.git] / include / llvm / CodeGen / ValueTypes.h
index e661c58940e1dc70d461176edd799a21f9926f63..57ca285fac49fa160053d3b4422d7fb45874a393 100644 (file)
@@ -23,6 +23,7 @@
 
 namespace llvm {
   class Type;
+  class LLVMContext;
 
   struct MVT { // MVT = Machine Value Type
   public:
@@ -59,30 +60,31 @@ namespace llvm {
       v8i16          =  21,   //  8 x i16
       v16i16         =  22,   // 16 x i16
       v2i32          =  23,   //  2 x i32
-      v3i32          =  24,   //  3 x i32
-      v4i32          =  25,   //  4 x i32
-      v8i32          =  26,   //  8 x i32
-      v1i64          =  27,   //  1 x i64
-      v2i64          =  28,   //  2 x i64
-      v4i64          =  29,   //  4 x i64
-
-      v2f32          =  30,   //  2 x f32
-      v3f32          =  31,   //  3 x f32
-      v4f32          =  32,   //  4 x f32
-      v8f32          =  33,   //  8 x f32
-      v2f64          =  34,   //  2 x f64
-      v4f64          =  35,   //  4 x f64
-  
+      v4i32          =  24,   //  4 x i32
+      v8i32          =  25,   //  8 x i32
+      v1i64          =  26,   //  1 x i64
+      v2i64          =  27,   //  2 x i64
+      v4i64          =  28,   //  4 x i64
+
+      v2f32          =  29,   //  2 x f32
+      v4f32          =  30,   //  4 x f32
+      v8f32          =  31,   //  8 x f32
+      v2f64          =  32,   //  2 x f64
+      v4f64          =  33,   //  4 x f64
+
       FIRST_VECTOR_VALUETYPE = v2i8,
       LAST_VECTOR_VALUETYPE  = v4f64,
 
-      LAST_VALUETYPE =  36,   // This always remains at the end of the list.
+      LAST_VALUETYPE =  34,   // This always remains at the end of the list.
 
       // This is the current maximum for LAST_VALUETYPE.
       // MVT::MAX_ALLOWED_VALUETYPE is used for asserts and to size bit vectors
       // This value must be a multiple of 32.
       MAX_ALLOWED_VALUETYPE = 64,
 
+      // Metadata - This is MDNode or MDString.
+      Metadata       = 251,
+
       // iPTRAny - An int value the size of the pointer of the current
       // target to any address space. This must only be used internal to
       // tblgen. Other than for overloading, we treat iPTRAny the same as iPTR.
@@ -189,22 +191,20 @@ namespace llvm {
         if (NumElements == 2)  return v2i16;
         if (NumElements == 4)  return v4i16;
         if (NumElements == 8)  return v8i16;
-        if (NumElements == 16)  return v16i16;
+        if (NumElements == 16) return v16i16;
         break;
       case i32:
         if (NumElements == 2)  return v2i32;
-        if (NumElements == 3)  return v3i32;
         if (NumElements == 4)  return v4i32;
-       if (NumElements == 8)  return v8i32;
+        if (NumElements == 8)  return v8i32;
         break;
       case i64:
         if (NumElements == 1)  return v1i64;
         if (NumElements == 2)  return v2i64;
-       if (NumElements == 4)  return v4i64;
+        if (NumElements == 4)  return v4i64;
         break;
       case f32:
         if (NumElements == 2)  return v2f32;
-        if (NumElements == 3)  return v3f32;
         if (NumElements == 4)  return v4f32;
         if (NumElements == 8)  return v8f32;
         break;
@@ -223,7 +223,6 @@ namespace llvm {
       default: return getVectorVT(i8, NumElts);
       case  1: return v1i64;
       case  2: return v2i32;
-      case  3: return v3i32;
       case  4: return v4i16;
       case  8: return v8i8;
       case 16: return v16i8;
@@ -280,7 +279,7 @@ namespace llvm {
 
     /// is256BitVector - Return true if this is a 256-bit vector type.
     inline bool is256BitVector() const {
-      return isSimple() ? 
+      return isSimple() ?
              (V==v8f32 || V==v4f64 || V==v32i8 || V==v16i16 || V==v8i32 ||
               V==v4i64) : isExtended256BitVector();
     }
@@ -346,14 +345,12 @@ namespace llvm {
       case v8i16:
       case v16i16: return i16;
       case v2i32:
-      case v3i32:
       case v4i32:
       case v8i32: return i32;
       case v1i64:
       case v2i64:
       case v4i64: return i64;
       case v2f32:
-      case v3f32:
       case v4f32:
       case v8f32: return f32;
       case v2f64:
@@ -381,8 +378,6 @@ namespace llvm {
       case v4i64:
       case v4f32:
       case v4f64: return 4;
-      case v3i32:
-      case v3f32: return 3;
       case v2i8:
       case v2i16:
       case v2i32:
@@ -420,8 +415,6 @@ namespace llvm {
       case v1i64:
       case v2f32: return 64;
       case f80 :  return 80;
-      case v3i32:
-      case v3f32: return 96;
       case f128:
       case ppcf128:
       case i128:
@@ -434,7 +427,7 @@ namespace llvm {
       case v32i8:
       case v16i16:
       case v8i32:
-      case v4i64:      
+      case v4i64:
       case v8f32:
       case v4f64: return 256;
       }
@@ -484,7 +477,7 @@ namespace llvm {
     /// getTypeForMVT - This method returns an LLVM type corresponding to the
     /// specified MVT.  For integer types, this returns an unsigned type.  Note
     /// that this will abort for types that cannot be represented.
-    const Type *getTypeForMVT() const;
+    const Type *getTypeForMVT(LLVMContext &Context) const;
 
     /// getMVT - Return the value type corresponding to the specified type.
     /// This returns all pointers as iPTR.  If HandleUnknown is true, unknown