[llvm] 0d736f4 - [SVE] Add specialized getters to derived vector types
Christopher Tetreault via llvm-commits
llvm-commits at lists.llvm.org
Tue May 19 11:27:36 PDT 2020
Author: Christopher Tetreault
Date: 2020-05-19T11:27:18-07:00
New Revision: 0d736f467ddb6b6f0189703f015c248c41be7cf3
URL: https://github.com/llvm/llvm-project/commit/0d736f467ddb6b6f0189703f015c248c41be7cf3
DIFF: https://github.com/llvm/llvm-project/commit/0d736f467ddb6b6f0189703f015c248c41be7cf3.diff
LOG: [SVE] Add specialized getters to derived vector types
Summary:
Add versions of the specialized getters in base VectorType to the
derived vector types that return derived pointers. This reduces the
amount of casting you need to do when working with derived vectors
Reviewers: efriedma, david-arm, fpetrogalli, craig.topper
Reviewed By: david-arm
Subscribers: tschuett, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80026
Added:
Modified:
llvm/include/llvm/IR/DerivedTypes.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/IR/DerivedTypes.h b/llvm/include/llvm/IR/DerivedTypes.h
index 336a7b061ea3..6a9c747d4713 100644
--- a/llvm/include/llvm/IR/DerivedTypes.h
+++ b/llvm/include/llvm/IR/DerivedTypes.h
@@ -552,6 +552,33 @@ class FixedVectorType : public VectorType {
return get(ElementType, FVTy->getNumElements());
}
+ static FixedVectorType *getInteger(FixedVectorType *VTy) {
+ return cast<FixedVectorType>(VectorType::getInteger(VTy));
+ }
+
+ static FixedVectorType *getExtendedElementVectorType(FixedVectorType *VTy) {
+ return cast<FixedVectorType>(VectorType::getExtendedElementVectorType(VTy));
+ }
+
+ static FixedVectorType *getTruncatedElementVectorType(FixedVectorType *VTy) {
+ return cast<FixedVectorType>(
+ VectorType::getTruncatedElementVectorType(VTy));
+ }
+
+ static FixedVectorType *getSubdividedVectorType(FixedVectorType *VTy,
+ int NumSubdivs) {
+ return cast<FixedVectorType>(
+ VectorType::getSubdividedVectorType(VTy, NumSubdivs));
+ }
+
+ static FixedVectorType *getHalfElementsVectorType(FixedVectorType *VTy) {
+ return cast<FixedVectorType>(VectorType::getHalfElementsVectorType(VTy));
+ }
+
+ static FixedVectorType *getDoubleElementsVectorType(FixedVectorType *VTy) {
+ return cast<FixedVectorType>(VectorType::getDoubleElementsVectorType(VTy));
+ }
+
static bool classof(const Type *T) {
return T->getTypeID() == FixedVectorTyID;
}
@@ -571,6 +598,39 @@ class ScalableVectorType : public VectorType {
return get(ElementType, SVTy->getMinNumElements());
}
+ static ScalableVectorType *getInteger(ScalableVectorType *VTy) {
+ return cast<ScalableVectorType>(VectorType::getInteger(VTy));
+ }
+
+ static ScalableVectorType *
+ getExtendedElementVectorType(ScalableVectorType *VTy) {
+ return cast<ScalableVectorType>(
+ VectorType::getExtendedElementVectorType(VTy));
+ }
+
+ static ScalableVectorType *
+ getTruncatedElementVectorType(ScalableVectorType *VTy) {
+ return cast<ScalableVectorType>(
+ VectorType::getTruncatedElementVectorType(VTy));
+ }
+
+ static ScalableVectorType *getSubdividedVectorType(ScalableVectorType *VTy,
+ int NumSubdivs) {
+ return cast<ScalableVectorType>(
+ VectorType::getSubdividedVectorType(VTy, NumSubdivs));
+ }
+
+ static ScalableVectorType *
+ getHalfElementsVectorType(ScalableVectorType *VTy) {
+ return cast<ScalableVectorType>(VectorType::getHalfElementsVectorType(VTy));
+ }
+
+ static ScalableVectorType *
+ getDoubleElementsVectorType(ScalableVectorType *VTy) {
+ return cast<ScalableVectorType>(
+ VectorType::getDoubleElementsVectorType(VTy));
+ }
+
/// Get the minimum number of elements in this vector. The actual number of
/// elements in the vector is an integer multiple of this value.
uint64_t getMinNumElements() const { return ElementQuantity; }
More information about the llvm-commits
mailing list