Skip to content

Commit d3e66a8

Browse files
committed
[VectorCombine] foldBitcastShuf - compute scale factors using shuffle type element size instead of element count. NFCI.
First step towards supporting length changing shuffles
1 parent 4f98fb2 commit d3e66a8

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

llvm/lib/Transforms/Vectorize/VectorCombine.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -696,20 +696,20 @@ bool VectorCombine::foldBitcastShuf(Instruction &I) {
696696
return false;
697697

698698
auto *DestTy = cast<FixedVectorType>(I.getType());
699-
unsigned DestNumElts = DestTy->getNumElements();
700-
unsigned SrcNumElts = SrcTy->getNumElements();
699+
unsigned DestEltSize = DestTy->getScalarSizeInBits();
700+
unsigned SrcEltSize = SrcTy->getScalarSizeInBits();
701701
SmallVector<int, 16> NewMask;
702-
if (SrcNumElts <= DestNumElts) {
702+
if (DestEltSize <= SrcEltSize) {
703703
// The bitcast is from wide to narrow/equal elements. The shuffle mask can
704704
// always be expanded to the equivalent form choosing narrower elements.
705-
assert(DestNumElts % SrcNumElts == 0 && "Unexpected shuffle mask");
706-
unsigned ScaleFactor = DestNumElts / SrcNumElts;
705+
assert(SrcEltSize % DestEltSize == 0 && "Unexpected shuffle mask");
706+
unsigned ScaleFactor = SrcEltSize / DestEltSize;
707707
narrowShuffleMaskElts(ScaleFactor, Mask, NewMask);
708708
} else {
709709
// The bitcast is from narrow elements to wide elements. The shuffle mask
710710
// must choose consecutive elements to allow casting first.
711-
assert(SrcNumElts % DestNumElts == 0 && "Unexpected shuffle mask");
712-
unsigned ScaleFactor = SrcNumElts / DestNumElts;
711+
assert(DestEltSize % SrcEltSize == 0 && "Unexpected shuffle mask");
712+
unsigned ScaleFactor = DestEltSize / SrcEltSize;
713713
if (!widenShuffleMaskElts(ScaleFactor, Mask, NewMask))
714714
return false;
715715
}

0 commit comments

Comments
 (0)