diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2020-07-26 19:36:28 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2020-07-26 19:36:28 +0000 |
commit | cfca06d7963fa0909f90483b42a6d7d194d01e08 (patch) | |
tree | 209fb2a2d68f8f277793fc8df46c753d31bc853b /llvm/lib/CodeGen/InterleavedAccessPass.cpp | |
parent | 706b4fc47bbc608932d3b491ae19a3b9cde9497b (diff) |
Notes
Diffstat (limited to 'llvm/lib/CodeGen/InterleavedAccessPass.cpp')
-rw-r--r-- | llvm/lib/CodeGen/InterleavedAccessPass.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/InterleavedAccessPass.cpp b/llvm/lib/CodeGen/InterleavedAccessPass.cpp index 1f9b436378d2..c4d83547a06c 100644 --- a/llvm/lib/CodeGen/InterleavedAccessPass.cpp +++ b/llvm/lib/CodeGen/InterleavedAccessPass.cpp @@ -280,7 +280,7 @@ static bool isReInterleaveMask(ArrayRef<int> Mask, unsigned &Factor, bool InterleavedAccess::lowerInterleavedLoad( LoadInst *LI, SmallVector<Instruction *, 32> &DeadInsts) { - if (!LI->isSimple()) + if (!LI->isSimple() || isa<ScalableVectorType>(LI->getType())) return false; SmallVector<ShuffleVectorInst *, 4> Shuffles; @@ -308,7 +308,8 @@ bool InterleavedAccess::lowerInterleavedLoad( unsigned Factor, Index; - unsigned NumLoadElements = LI->getType()->getVectorNumElements(); + unsigned NumLoadElements = + cast<FixedVectorType>(LI->getType())->getNumElements(); // Check if the first shufflevector is DE-interleave shuffle. if (!isDeInterleaveMask(Shuffles[0]->getShuffleMask(), Factor, Index, MaxFactor, NumLoadElements)) @@ -421,12 +422,13 @@ bool InterleavedAccess::lowerInterleavedStore( return false; ShuffleVectorInst *SVI = dyn_cast<ShuffleVectorInst>(SI->getValueOperand()); - if (!SVI || !SVI->hasOneUse()) + if (!SVI || !SVI->hasOneUse() || isa<ScalableVectorType>(SVI->getType())) return false; // Check if the shufflevector is RE-interleave shuffle. unsigned Factor; - unsigned OpNumElts = SVI->getOperand(0)->getType()->getVectorNumElements(); + unsigned OpNumElts = + cast<FixedVectorType>(SVI->getOperand(0)->getType())->getNumElements(); if (!isReInterleaveMask(SVI->getShuffleMask(), Factor, MaxFactor, OpNumElts)) return false; |