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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29195 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-07-19 00:40:45 +00:00
parent 1693e489e6
commit 08e682ecf4
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
/// ValueType that represents this vector, a ValueType of Other is returned.
///
static inline 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;
}
ValueType getVectorType(ValueType VT, unsigned NumElements);
/// MVT::getVectorBaseType - Given a packed vector type, return the type of
/// each element.
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
/// to the specified ValueType. For integer types, this returns an unsigned
/// type. Note that this will abort for types that cannot be represented.