[llvm] 765ac39 - [SVE] Eliminate calls to default-false VectorType::get() from Scalar
Christopher Tetreault via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 9 14:09:19 PDT 2020
Author: Christopher Tetreault
Date: 2020-06-09T14:09:02-07:00
New Revision: 765ac39db21503739e447ec9be0f06ef243170dd
URL: https://github.com/llvm/llvm-project/commit/765ac39db21503739e447ec9be0f06ef243170dd
DIFF: https://github.com/llvm/llvm-project/commit/765ac39db21503739e447ec9be0f06ef243170dd.diff
LOG: [SVE] Eliminate calls to default-false VectorType::get() from Scalar
Reviewers: efriedma, kmclaughlin, sdesmalen, fhahn, bkramer, anna, gchatelet, c-rhodes, david-arm, fpetrogalli
Reviewed By: david-arm
Subscribers: tschuett, hiraditya, rkruppe, psnobl, dantrushin, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80336
Added:
Modified:
llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
llvm/lib/Transforms/Scalar/SROA.cpp
llvm/lib/Transforms/Scalar/Scalarizer.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp b/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
index 65f88b68fd07..1ea1aaf7a8c9 100644
--- a/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
+++ b/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
@@ -148,7 +148,7 @@ Value *computeVectorAddr(Value *BasePtr, Value *VecIdx, Value *Stride,
// Cast elementwise vector start pointer to a pointer to a vector
// (EltType x NumElements)*.
- Type *VecType = VectorType::get(EltType, NumElements);
+ auto *VecType = FixedVectorType::get(EltType, NumElements);
Type *VecPtrType = PointerType::get(VecType, AS);
return Builder.CreatePointerCast(VecStart, VecPtrType, "vec.cast");
}
@@ -223,8 +223,8 @@ class LowerMatrixIntrinsics {
unsigned D = isColumnMajor() ? NumColumns : NumRows;
for (unsigned J = 0; J < D; ++J)
- addVector(UndefValue::get(
- VectorType::get(EltTy, isColumnMajor() ? NumRows : NumColumns)));
+ addVector(UndefValue::get(FixedVectorType::get(
+ EltTy, isColumnMajor() ? NumRows : NumColumns)));
}
Value *getVector(unsigned i) const { return Vectors[i]; }
@@ -806,8 +806,8 @@ class LowerMatrixIntrinsics {
Value *EltPtr =
Builder.CreatePointerCast(MatrixPtr, PointerType::get(EltTy, AS));
Value *TileStart = Builder.CreateGEP(EltTy, EltPtr, Offset);
- Type *TileTy =
- VectorType::get(EltTy, ResultShape.NumRows * ResultShape.NumColumns);
+ auto *TileTy = FixedVectorType::get(EltTy, ResultShape.NumRows *
+ ResultShape.NumColumns);
Type *TilePtrTy = PointerType::get(TileTy, AS);
Value *TilePtr =
Builder.CreatePointerCast(TileStart, TilePtrTy, "col.cast");
@@ -850,8 +850,8 @@ class LowerMatrixIntrinsics {
Value *EltPtr =
Builder.CreatePointerCast(MatrixPtr, PointerType::get(EltTy, AS));
Value *TileStart = Builder.CreateGEP(EltTy, EltPtr, Offset);
- Type *TileTy = VectorType::get(EltTy, StoreVal.getNumRows() *
- StoreVal.getNumColumns());
+ auto *TileTy = FixedVectorType::get(EltTy, StoreVal.getNumRows() *
+ StoreVal.getNumColumns());
Type *TilePtrTy = PointerType::get(TileTy, AS);
Value *TilePtr =
Builder.CreatePointerCast(TileStart, TilePtrTy, "col.cast");
@@ -1170,7 +1170,7 @@ class LowerMatrixIntrinsics {
MatrixTy getZeroMatrix(Type *EltType, unsigned R, unsigned C) {
MatrixTy Res;
- Type *ColumType = VectorType::get(EltType, R);
+ auto *ColumType = FixedVectorType::get(EltType, R);
for (unsigned I = 0; I < C; ++I)
Res.addVector(ConstantAggregateZero::get(ColumType));
return Res;
@@ -1303,7 +1303,7 @@ class LowerMatrixIntrinsics {
for (unsigned I = 0; I < NewNumVecs; ++I) {
// Build a single result vector. First initialize it.
Value *ResultVector = UndefValue::get(
- VectorType::get(VectorTy->getElementType(), NewNumElts));
+ FixedVectorType::get(VectorTy->getElementType(), NewNumElts));
// Go through the old elements and insert it into the resulting vector.
for (auto J : enumerate(InputMatrix.vectors())) {
Value *Elt = Builder.CreateExtractElement(J.value(), I);
diff --git a/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp b/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
index ec39cd248e40..dbccfda246b8 100644
--- a/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
+++ b/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
@@ -1352,7 +1352,7 @@ static void CreateGCRelocates(ArrayRef<Value *> LiveVariables,
auto AS = Ty->getScalarType()->getPointerAddressSpace();
Type *NewTy = Type::getInt8PtrTy(M->getContext(), AS);
if (auto *VT = dyn_cast<VectorType>(Ty))
- NewTy = VectorType::get(NewTy, VT->getNumElements());
+ NewTy = FixedVectorType::get(NewTy, VT->getNumElements());
return Intrinsic::getDeclaration(M, Intrinsic::experimental_gc_relocate,
{NewTy});
};
diff --git a/llvm/lib/Transforms/Scalar/SROA.cpp b/llvm/lib/Transforms/Scalar/SROA.cpp
index ee3bb6705c25..bc69a1f77535 100644
--- a/llvm/lib/Transforms/Scalar/SROA.cpp
+++ b/llvm/lib/Transforms/Scalar/SROA.cpp
@@ -1800,7 +1800,7 @@ static bool isVectorPromotionViableForSlice(Partition &P, const Slice &S,
uint64_t NumElements = EndIndex - BeginIndex;
Type *SliceTy = (NumElements == 1)
? Ty->getElementType()
- : VectorType::get(Ty->getElementType(), NumElements);
+ : FixedVectorType::get(Ty->getElementType(), NumElements);
Type *SplitIntTy =
Type::getIntNTy(Ty->getContext(), NumElements * ElementSize * 8);
@@ -2587,7 +2587,7 @@ class llvm::sroa::AllocaSliceRewriter
assert(NumElements <= VecTy->getNumElements() && "Too many elements!");
Type *SliceTy = (NumElements == 1)
? ElementTy
- : VectorType::get(ElementTy, NumElements);
+ : FixedVectorType::get(ElementTy, NumElements);
if (V->getType() != SliceTy)
V = convertValue(DL, IRB, V, SliceTy);
@@ -2774,7 +2774,7 @@ class llvm::sroa::AllocaSliceRewriter
return false;
const auto Len = C->getZExtValue();
auto *Int8Ty = IntegerType::getInt8Ty(NewAI.getContext());
- auto *SrcTy = VectorType::get(Int8Ty, Len);
+ auto *SrcTy = FixedVectorType::get(Int8Ty, Len);
return canConvertValue(DL, SrcTy, AllocaTy) &&
DL.isLegalInteger(DL.getTypeSizeInBits(ScalarTy).getFixedSize());
}();
@@ -2997,7 +2997,7 @@ class llvm::sroa::AllocaSliceRewriter
if (NumElements == 1)
OtherTy = VecTy->getElementType();
else
- OtherTy = VectorType::get(VecTy->getElementType(), NumElements);
+ OtherTy = FixedVectorType::get(VecTy->getElementType(), NumElements);
} else if (IntTy && !IsWholeAlloca) {
OtherTy = SubIntTy;
} else {
diff --git a/llvm/lib/Transforms/Scalar/Scalarizer.cpp b/llvm/lib/Transforms/Scalar/Scalarizer.cpp
index 3675e97f7d00..cfd58bfa3bb7 100644
--- a/llvm/lib/Transforms/Scalar/Scalarizer.cpp
+++ b/llvm/lib/Transforms/Scalar/Scalarizer.cpp
@@ -709,7 +709,7 @@ bool ScalarizerVisitor::visitBitCastInst(BitCastInst &BCI) {
// <M x t1> -> <N*M x t2>. Convert each t1 to <N x t2> and copy the
// individual elements to the destination.
unsigned FanOut = DstNumElems / SrcNumElems;
- Type *MidTy = VectorType::get(DstVT->getElementType(), FanOut);
+ auto *MidTy = FixedVectorType::get(DstVT->getElementType(), FanOut);
unsigned ResI = 0;
for (unsigned Op0I = 0; Op0I < SrcNumElems; ++Op0I) {
Value *V = Op0[Op0I];
@@ -727,7 +727,7 @@ bool ScalarizerVisitor::visitBitCastInst(BitCastInst &BCI) {
} else {
// <N*M x t1> -> <M x t2>. Convert each group of <N x t1> into a t2.
unsigned FanIn = SrcNumElems / DstNumElems;
- Type *MidTy = VectorType::get(SrcVT->getElementType(), FanIn);
+ auto *MidTy = FixedVectorType::get(SrcVT->getElementType(), FanIn);
unsigned Op0I = 0;
for (unsigned ResI = 0; ResI < DstNumElems; ++ResI) {
Value *V = UndefValue::get(MidTy);
More information about the llvm-commits
mailing list