long double patch 3 of N. Add to MVT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40793 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dale Johannesen 2007-08-03 20:51:37 +00:00
parent 8c1e6a119a
commit e713d9340a
3 changed files with 92 additions and 82 deletions

View File

@ -42,29 +42,30 @@ namespace MVT { // MVT = Machine Value Types
f64 = 8, // This is a 64 bit floating point value
f80 = 9, // This is a 80 bit floating point value
f128 = 10, // This is a 128 bit floating point value
Flag = 11, // This is a condition code or machine flag.
ppcf128 = 11, // This is a PPC 128-bit floating point value
Flag = 12, // This is a condition code or machine flag.
isVoid = 12, // This has no value
isVoid = 13, // This has no value
v8i8 = 13, // 8 x i8
v4i16 = 14, // 4 x i16
v2i32 = 15, // 2 x i32
v1i64 = 16, // 1 x i64
v16i8 = 17, // 16 x i8
v8i16 = 18, // 8 x i16
v3i32 = 19, // 3 x i32
v4i32 = 20, // 4 x i32
v2i64 = 21, // 2 x i64
v8i8 = 14, // 8 x i8
v4i16 = 15, // 4 x i16
v2i32 = 16, // 2 x i32
v1i64 = 17, // 1 x i64
v16i8 = 18, // 16 x i8
v8i16 = 19, // 8 x i16
v3i32 = 20, // 3 x i32
v4i32 = 21, // 4 x i32
v2i64 = 22, // 2 x i64
v2f32 = 22, // 2 x f32
v3f32 = 23, // 3 x f32
v4f32 = 24, // 4 x f32
v2f64 = 25, // 2 x f64
v2f32 = 23, // 2 x f32
v3f32 = 24, // 3 x f32
v4f32 = 25, // 4 x f32
v2f64 = 26, // 2 x f64
FIRST_VECTOR_VALUETYPE = v8i8,
LAST_VECTOR_VALUETYPE = v2f64,
LAST_VALUETYPE = 26, // This always remains at the end of the list.
LAST_VALUETYPE = 27, // This always remains at the end of the list.
// iAny - An integer value of any bit width. This is used for intrinsics
// that have overloadings based on integer bit widths. This is only for
@ -114,7 +115,7 @@ namespace MVT { // MVT = Machine Value Types
/// MVT::isFloatingPoint - Return true if this is an FP, or a vector FP type.
static inline bool isFloatingPoint(ValueType VT) {
ValueType SVT = VT & SimpleTypeMask;
return (SVT >= f32 && SVT <= f128) || (SVT >= v2f32 && SVT <= v2f64);
return (SVT >= f32 && SVT <= ppcf128) || (SVT >= v2f32 && SVT <= v2f64);
}
/// MVT::isVector - Return true if this is a vector value type.
@ -197,6 +198,7 @@ namespace MVT { // MVT = Machine Value Types
case MVT::v3i32:
case MVT::v3f32: return 96;
case MVT::f128:
case MVT::ppcf128:
case MVT::i128:
case MVT::v16i8:
case MVT::v8i16:

View File

@ -30,23 +30,24 @@ def f32 : ValueType<32 , 7>; // 32-bit floating point value
def f64 : ValueType<64 , 8>; // 64-bit floating point value
def f80 : ValueType<80 , 9>; // 80-bit floating point value
def f128 : ValueType<128, 10>; // 128-bit floating point value
def FlagVT : ValueType<0 , 11>; // Condition code or machine flag
def isVoid : ValueType<0 , 12>; // Produces no value
def v8i8 : ValueType<64 , 13>; // 8 x i8 vector value
def v4i16 : ValueType<64 , 14>; // 4 x i16 vector value
def v2i32 : ValueType<64 , 15>; // 2 x i32 vector value
def v1i64 : ValueType<64 , 16>; // 1 x i64 vector value
def ppcf128: ValueType<128, 11>; // PPC 128-bit floating point value
def FlagVT : ValueType<0 , 12>; // Condition code or machine flag
def isVoid : ValueType<0 , 13>; // Produces no value
def v8i8 : ValueType<64 , 14>; // 8 x i8 vector value
def v4i16 : ValueType<64 , 15>; // 4 x i16 vector value
def v2i32 : ValueType<64 , 16>; // 2 x i32 vector value
def v1i64 : ValueType<64 , 17>; // 1 x i64 vector value
def v16i8 : ValueType<128, 17>; // 16 x i8 vector value
def v8i16 : ValueType<128, 18>; // 8 x i16 vector value
def v3i32 : ValueType<96 , 19>; // 3 x i32 vector value
def v4i32 : ValueType<128, 20>; // 4 x i32 vector value
def v2i64 : ValueType<128, 21>; // 2 x i64 vector value
def v16i8 : ValueType<128, 18>; // 16 x i8 vector value
def v8i16 : ValueType<128, 19>; // 8 x i16 vector value
def v3i32 : ValueType<96 , 20>; // 3 x i32 vector value
def v4i32 : ValueType<128, 21>; // 4 x i32 vector value
def v2i64 : ValueType<128, 22>; // 2 x i64 vector value
def v2f32 : ValueType<64, 22>; // 2 x f32 vector value
def v3f32 : ValueType<96 , 23>; // 3 x f32 vector value
def v4f32 : ValueType<128, 24>; // 4 x f32 vector value
def v2f64 : ValueType<128, 25>; // 2 x f64 vector value
def v2f32 : ValueType<64, 23>; // 2 x f32 vector value
def v3f32 : ValueType<96 , 24>; // 3 x f32 vector value
def v4f32 : ValueType<128, 25>; // 4 x f32 vector value
def v2f64 : ValueType<128, 26>; // 2 x f64 vector value
// Pseudo valuetype to represent "integer of any bit width"
def iAny : ValueType<0 , 254>; // integer value of any bit width

View File

@ -26,32 +26,33 @@ std::string MVT::getValueTypeString(MVT::ValueType VT) {
return "v" + utostr(getVectorNumElements(VT)) +
getValueTypeString(getVectorElementType(VT));
assert(0 && "Invalid ValueType!");
case MVT::i1: return "i1";
case MVT::i8: return "i8";
case MVT::i16: return "i16";
case MVT::i32: return "i32";
case MVT::i64: return "i64";
case MVT::i128: return "i128";
case MVT::f32: return "f32";
case MVT::f64: return "f64";
case MVT::f80: return "f80";
case MVT::f128: return "f128";
case MVT::isVoid:return "isVoid";
case MVT::Other: return "ch";
case MVT::Flag: return "flag";
case MVT::v8i8: return "v8i8";
case MVT::v4i16: return "v4i16";
case MVT::v2i32: return "v2i32";
case MVT::v1i64: return "v1i64";
case MVT::v16i8: return "v16i8";
case MVT::v8i16: return "v8i16";
case MVT::v4i32: return "v4i32";
case MVT::v2i64: return "v2i64";
case MVT::v2f32: return "v2f32";
case MVT::v4f32: return "v4f32";
case MVT::v2f64: return "v2f64";
case MVT::v3i32: return "v3i32";
case MVT::v3f32: return "v3f32";
case MVT::i1: return "i1";
case MVT::i8: return "i8";
case MVT::i16: return "i16";
case MVT::i32: return "i32";
case MVT::i64: return "i64";
case MVT::i128: return "i128";
case MVT::f32: return "f32";
case MVT::f64: return "f64";
case MVT::f80: return "f80";
case MVT::f128: return "f128";
case MVT::ppcf128: return "ppcf128";
case MVT::isVoid: return "isVoid";
case MVT::Other: return "ch";
case MVT::Flag: return "flag";
case MVT::v8i8: return "v8i8";
case MVT::v4i16: return "v4i16";
case MVT::v2i32: return "v2i32";
case MVT::v1i64: return "v1i64";
case MVT::v16i8: return "v16i8";
case MVT::v8i16: return "v8i16";
case MVT::v4i32: return "v4i32";
case MVT::v2i64: return "v2i64";
case MVT::v2f32: return "v2f32";
case MVT::v4f32: return "v4f32";
case MVT::v2f64: return "v2f64";
case MVT::v3i32: return "v3i32";
case MVT::v3f32: return "v3f32";
}
}
@ -66,27 +67,30 @@ const Type *MVT::getTypeForValueType(MVT::ValueType VT) {
getVectorNumElements(VT));
assert(0 && "ValueType does not correspond to LLVM type!");
case MVT::isVoid:return Type::VoidTy;
case MVT::i1: return Type::Int1Ty;
case MVT::i8: return Type::Int8Ty;
case MVT::i16: return Type::Int16Ty;
case MVT::i32: return Type::Int32Ty;
case MVT::i64: return Type::Int64Ty;
case MVT::i128: return IntegerType::get(128);
case MVT::f32: return Type::FloatTy;
case MVT::f64: return Type::DoubleTy;
case MVT::v8i8: return VectorType::get(Type::Int8Ty, 8);
case MVT::v4i16: return VectorType::get(Type::Int16Ty, 4);
case MVT::v2i32: return VectorType::get(Type::Int32Ty, 2);
case MVT::v1i64: return VectorType::get(Type::Int64Ty, 1);
case MVT::v16i8: return VectorType::get(Type::Int8Ty, 16);
case MVT::v8i16: return VectorType::get(Type::Int16Ty, 8);
case MVT::v4i32: return VectorType::get(Type::Int32Ty, 4);
case MVT::v2i64: return VectorType::get(Type::Int64Ty, 2);
case MVT::v2f32: return VectorType::get(Type::FloatTy, 2);
case MVT::v4f32: return VectorType::get(Type::FloatTy, 4);
case MVT::v2f64: return VectorType::get(Type::DoubleTy, 2);
case MVT::v3i32: return VectorType::get(Type::Int32Ty, 3);
case MVT::v3f32: return VectorType::get(Type::FloatTy, 3);
case MVT::i1: return Type::Int1Ty;
case MVT::i8: return Type::Int8Ty;
case MVT::i16: return Type::Int16Ty;
case MVT::i32: return Type::Int32Ty;
case MVT::i64: return Type::Int64Ty;
case MVT::i128: return IntegerType::get(128);
case MVT::f32: return Type::FloatTy;
case MVT::f64: return Type::DoubleTy;
case MVT::f80: return Type::X86_FP80Ty;
case MVT::f128: return Type::FP128Ty;
case MVT::ppcf128: return Type::PPC_FP128Ty;
case MVT::v8i8: return VectorType::get(Type::Int8Ty, 8);
case MVT::v4i16: return VectorType::get(Type::Int16Ty, 4);
case MVT::v2i32: return VectorType::get(Type::Int32Ty, 2);
case MVT::v1i64: return VectorType::get(Type::Int64Ty, 1);
case MVT::v16i8: return VectorType::get(Type::Int8Ty, 16);
case MVT::v8i16: return VectorType::get(Type::Int16Ty, 8);
case MVT::v4i32: return VectorType::get(Type::Int32Ty, 4);
case MVT::v2i64: return VectorType::get(Type::Int64Ty, 2);
case MVT::v2f32: return VectorType::get(Type::FloatTy, 2);
case MVT::v4f32: return VectorType::get(Type::FloatTy, 4);
case MVT::v2f64: return VectorType::get(Type::DoubleTy, 2);
case MVT::v3i32: return VectorType::get(Type::Int32Ty, 3);
case MVT::v3f32: return VectorType::get(Type::FloatTy, 3);
}
}
@ -114,9 +118,12 @@ MVT::ValueType MVT::getValueType(const Type *Ty, bool HandleUnknown) {
case 128: return MVT::i128;
}
break;
case Type::FloatTyID: return MVT::f32;
case Type::DoubleTyID: return MVT::f64;
case Type::PointerTyID: return MVT::iPTR;
case Type::FloatTyID: return MVT::f32;
case Type::DoubleTyID: return MVT::f64;
case Type::X86_FP80TyID: return MVT::f80;
case Type::FP128TyID: return MVT::f128;
case Type::PPC_FP128TyID: return MVT::ppcf128;
case Type::PointerTyID: return MVT::iPTR;
case Type::VectorTyID: {
const VectorType *VTy = cast<VectorType>(Ty);
return getVectorType(getValueType(VTy->getElementType(), false),