aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/ValueTypes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/ValueTypes.cpp')
-rw-r--r--llvm/lib/CodeGen/ValueTypes.cpp38
1 files changed, 36 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/ValueTypes.cpp b/llvm/lib/CodeGen/ValueTypes.cpp
index 978357d8f539..9daebfd9e63d 100644
--- a/llvm/lib/CodeGen/ValueTypes.cpp
+++ b/llvm/lib/CodeGen/ValueTypes.cpp
@@ -15,18 +15,20 @@
using namespace llvm;
EVT EVT::changeExtendedTypeToInteger() const {
+ assert(isExtended() && "Type is not extended!");
LLVMContext &Context = LLVMTy->getContext();
return getIntegerVT(Context, getSizeInBits());
}
EVT EVT::changeExtendedVectorElementTypeToInteger() const {
+ assert(isExtended() && "Type is not extended!");
LLVMContext &Context = LLVMTy->getContext();
EVT IntTy = getIntegerVT(Context, getScalarSizeInBits());
- return getVectorVT(Context, IntTy, getVectorNumElements(),
- isScalableVector());
+ return getVectorVT(Context, IntTy, getVectorElementCount());
}
EVT EVT::changeExtendedVectorElementType(EVT EltVT) const {
+ assert(isExtended() && "Type is not extended!");
LLVMContext &Context = LLVMTy->getContext();
return getVectorVT(Context, EltVT, getVectorElementCount());
}
@@ -196,6 +198,10 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
case MVT::ppcf128: return Type::getPPC_FP128Ty(Context);
case MVT::x86mmx: return Type::getX86_MMXTy(Context);
case MVT::x86amx: return Type::getX86_AMXTy(Context);
+ case MVT::externref:
+ return PointerType::get(StructType::create(Context), 10);
+ case MVT::funcref:
+ return PointerType::get(StructType::create(Context), 20);
case MVT::v1i1:
return FixedVectorType::get(Type::getInt1Ty(Context), 1);
case MVT::v2i1:
@@ -236,6 +242,10 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
return FixedVectorType::get(Type::getInt8Ty(Context), 128);
case MVT::v256i8:
return FixedVectorType::get(Type::getInt8Ty(Context), 256);
+ case MVT::v512i8:
+ return FixedVectorType::get(Type::getInt8Ty(Context), 512);
+ case MVT::v1024i8:
+ return FixedVectorType::get(Type::getInt8Ty(Context), 1024);
case MVT::v1i16:
return FixedVectorType::get(Type::getInt16Ty(Context), 1);
case MVT::v2i16:
@@ -254,6 +264,10 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
return FixedVectorType::get(Type::getInt16Ty(Context), 64);
case MVT::v128i16:
return FixedVectorType::get(Type::getInt16Ty(Context), 128);
+ case MVT::v256i16:
+ return FixedVectorType::get(Type::getInt16Ty(Context), 256);
+ case MVT::v512i16:
+ return FixedVectorType::get(Type::getInt16Ty(Context), 512);
case MVT::v1i32:
return FixedVectorType::get(Type::getInt32Ty(Context), 1);
case MVT::v2i32:
@@ -264,6 +278,10 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
return FixedVectorType::get(Type::getInt32Ty(Context), 4);
case MVT::v5i32:
return FixedVectorType::get(Type::getInt32Ty(Context), 5);
+ case MVT::v6i32:
+ return FixedVectorType::get(Type::getInt32Ty(Context), 6);
+ case MVT::v7i32:
+ return FixedVectorType::get(Type::getInt32Ty(Context), 7);
case MVT::v8i32:
return FixedVectorType::get(Type::getInt32Ty(Context), 8);
case MVT::v16i32:
@@ -286,6 +304,8 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
return FixedVectorType::get(Type::getInt64Ty(Context), 1);
case MVT::v2i64:
return FixedVectorType::get(Type::getInt64Ty(Context), 2);
+ case MVT::v3i64:
+ return FixedVectorType::get(Type::getInt64Ty(Context), 3);
case MVT::v4i64:
return FixedVectorType::get(Type::getInt64Ty(Context), 4);
case MVT::v8i64:
@@ -302,6 +322,8 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
return FixedVectorType::get(Type::getInt64Ty(Context), 256);
case MVT::v1i128:
return FixedVectorType::get(Type::getInt128Ty(Context), 1);
+ case MVT::v1f16:
+ return FixedVectorType::get(Type::getHalfTy(Context), 1);
case MVT::v2f16:
return FixedVectorType::get(Type::getHalfTy(Context), 2);
case MVT::v3f16:
@@ -318,6 +340,10 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
return FixedVectorType::get(Type::getHalfTy(Context), 64);
case MVT::v128f16:
return FixedVectorType::get(Type::getHalfTy(Context), 128);
+ case MVT::v256f16:
+ return FixedVectorType::get(Type::getHalfTy(Context), 256);
+ case MVT::v512f16:
+ return FixedVectorType::get(Type::getHalfTy(Context), 512);
case MVT::v2bf16:
return FixedVectorType::get(Type::getBFloatTy(Context), 2);
case MVT::v3bf16:
@@ -344,6 +370,10 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
return FixedVectorType::get(Type::getFloatTy(Context), 4);
case MVT::v5f32:
return FixedVectorType::get(Type::getFloatTy(Context), 5);
+ case MVT::v6f32:
+ return FixedVectorType::get(Type::getFloatTy(Context), 6);
+ case MVT::v7f32:
+ return FixedVectorType::get(Type::getFloatTy(Context), 7);
case MVT::v8f32:
return FixedVectorType::get(Type::getFloatTy(Context), 8);
case MVT::v16f32:
@@ -366,6 +396,8 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
return FixedVectorType::get(Type::getDoubleTy(Context), 1);
case MVT::v2f64:
return FixedVectorType::get(Type::getDoubleTy(Context), 2);
+ case MVT::v3f64:
+ return FixedVectorType::get(Type::getDoubleTy(Context), 3);
case MVT::v4f64:
return FixedVectorType::get(Type::getDoubleTy(Context), 4);
case MVT::v8f64:
@@ -456,6 +488,8 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
return ScalableVectorType::get(Type::getHalfTy(Context), 16);
case MVT::nxv32f16:
return ScalableVectorType::get(Type::getHalfTy(Context), 32);
+ case MVT::nxv1bf16:
+ return ScalableVectorType::get(Type::getBFloatTy(Context), 1);
case MVT::nxv2bf16:
return ScalableVectorType::get(Type::getBFloatTy(Context), 2);
case MVT::nxv4bf16: