Move MVT::getVectorType out of line, it is large and shouldn't be inlined.

llvm-svn: 29195
This commit is contained in:
Chris Lattner 2006-07-19 00:40:45 +00:00
parent 02d8836cd5
commit 4238ca55ef
2 changed files with 36 additions and 30 deletions

View File

@ -120,36 +120,8 @@ namespace MVT { // MVT = Machine Value Types
/// NumElements in length, where each element is of type VT. If there is no /// NumElements in length, where each element is of type VT. If there is no
/// ValueType that represents this vector, a ValueType of Other is returned. /// ValueType that represents this vector, a ValueType of Other is returned.
/// ///
static inline ValueType getVectorType(ValueType VT, unsigned NumElements) { ValueType getVectorType(ValueType VT, unsigned NumElements);
switch (VT) {
default:
break;
case MVT::i8:
if (NumElements == 8) return MVT::v8i8;
if (NumElements == 16) return MVT::v16i8;
break;
case MVT::i16:
if (NumElements == 4) return MVT::v4i16;
if (NumElements == 8) return MVT::v8i16;
break;
case MVT::i32:
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;
break;
case MVT::f64:
if (NumElements == 2) return MVT::v2f64;
break;
}
return MVT::Other;
}
/// MVT::getVectorBaseType - Given a packed vector type, return the type of /// MVT::getVectorBaseType - Given a packed vector type, return the type of
/// each element. /// each element.
static inline ValueType getVectorBaseType(ValueType VT) { static inline ValueType getVectorBaseType(ValueType VT) {

View File

@ -46,6 +46,40 @@ const char *MVT::getValueTypeString(MVT::ValueType VT) {
} }
} }
/// MVT::getVectorType - Returns the ValueType that represents a vector
/// NumElements in length, where each element is of type VT. If there is no
/// ValueType that represents this vector, a ValueType of Other is returned.
///
MVT::ValueType MVT::getVectorType(ValueType VT, unsigned NumElements) {
switch (VT) {
default:
break;
case MVT::i8:
if (NumElements == 8) return MVT::v8i8;
if (NumElements == 16) return MVT::v16i8;
break;
case MVT::i16:
if (NumElements == 4) return MVT::v4i16;
if (NumElements == 8) return MVT::v8i16;
break;
case MVT::i32:
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;
break;
case MVT::f64:
if (NumElements == 2) return MVT::v2f64;
break;
}
return MVT::Other;
}
/// MVT::getTypeForValueType - This method returns an LLVM type corresponding /// MVT::getTypeForValueType - This method returns an LLVM type corresponding
/// to the specified ValueType. For integer types, this returns an unsigned /// to the specified ValueType. For integer types, this returns an unsigned
/// type. Note that this will abort for types that cannot be represented. /// type. Note that this will abort for types that cannot be represented.