Provide support for detecting if the Win32 imaghlp and psapi libraries
[oota-llvm.git] / include / llvm / CodeGen / ValueTypes.h
index 43ac60b6390398fc5a42575e5c9a26bec7a132f2..e754cd529db2384e603c121f23d64ff5ff9105ba 100644 (file)
@@ -63,7 +63,11 @@ namespace MVT {  // MVT = Machine Value Types
     FIRST_VECTOR_VALUETYPE = v8i8,
     LAST_VECTOR_VALUETYPE  = v2f64,
 
-    LAST_VALUETYPE =  24    // This always remains at the end of the list.
+    LAST_VALUETYPE =  24,   // This always remains at the end of the list.
+
+    // iPTR - An int value the size of the pointer of the current
+    // target.  This should only be used internal to tblgen!
+    iPTR           = 255
   };
 
   /// MVT::isInteger - Return true if this is a simple integer, or a packed
@@ -132,6 +136,9 @@ namespace MVT {  // MVT = Machine Value Types
       if (NumElements == 2)  return MVT::v2i32;
       if (NumElements == 4)  return MVT::v4i32;
         break;
+    case MVT::i64:
+      if (NumElements == 2)  return MVT::v2i64;
+      break;
     case MVT::f32:
       if (NumElements == 2)  return MVT::v2f32;
       if (NumElements == 4)  return MVT::v4f32;
@@ -179,17 +186,30 @@ namespace MVT {  // MVT = Machine Value Types
     }
   }
   
+  /// MVT::getIntVectorWithNumElements - Return any integer vector type that has
+  /// the specified number of elements.
+  static inline ValueType getIntVectorWithNumElements(unsigned NumElts) {
+    switch (NumElts) {
+    default: assert(0 && "Invalid vector type!");
+    case  2: return v2i32;
+    case  4: return v4i16;
+    case  8: return v8i8;
+    case 16: return v16i8;
+    }
+  }
+  
+  
   /// MVT::getIntVTBitMask - Return an integer with 1's every place there are
   /// bits in the specified integer value type.
   static inline uint64_t getIntVTBitMask(ValueType VT) {
     assert(isInteger(VT) && !isVector(VT) && "Only applies to int scalars!");
-    return ~0ULL >> (64-getSizeInBits(VT));
+    return ~uint64_t(0UL) >> (64-getSizeInBits(VT));
   }
   /// MVT::getIntVTSignBit - Return an integer with a 1 in the position of the
   /// sign bit for the specified integer value type.
   static inline uint64_t getIntVTSignBit(ValueType VT) {
     assert(isInteger(VT) && !isVector(VT) && "Only applies to int scalars!");
-    return 1ULL << (getSizeInBits(VT)-1);
+    return uint64_t(1UL) << (getSizeInBits(VT)-1);
   }
 
   /// MVT::getValueTypeString - This function returns value type as a string,