[llvm] [VectorUtils] Add llvm::scaleShuffleMaskElts wrapper for narrowShuffleMaskElts/widenShuffleMaskElts (PR #96646)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 25 09:38:27 PDT 2024
================
@@ -418,6 +418,31 @@ bool llvm::widenShuffleMaskElts(int Scale, ArrayRef<int> Mask,
return true;
}
+bool llvm::scaleShuffleMaskElts(unsigned NumDstElts, ArrayRef<int> Mask,
+ SmallVectorImpl<int> &ScaledMask) {
+ unsigned NumSrcElts = Mask.size();
+ assert(NumSrcElts > 0 && NumDstElts > 0 && "Unexpected scaling factor");
+
+ // Fast-path: if no scaling, then it is just a copy.
+ if (NumSrcElts == NumDstElts) {
+ ScaledMask.assign(Mask.begin(), Mask.end());
+ return true;
+ }
+
+ // We can't find a whole scale factor - bail out.
+ if ((NumSrcElts % NumDstElts) != 0 && (NumDstElts % NumSrcElts) != 0)
----------------
RKSimon wrote:
I'd left this as a bail out in case future uses won't guarantee this, but I've updated it to an assertion for now.
https://github.com/llvm/llvm-project/pull/96646
More information about the llvm-commits
mailing list