mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
long double patch 3 of N. Add to MVT.
llvm-svn: 40793
This commit is contained in:
parent
4b91728849
commit
976a1cf6cf
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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),
|
||||
|
Loading…
x
Reference in New Issue
Block a user