[llvm] 6a9e987 - [VectorCombine] foldPermuteOfBinops - ensure potential identity mask isn't length changing.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 14 04:17:40 PST 2025
Author: Simon Pilgrim
Date: 2025-01-14T12:17:21Z
New Revision: 6a9e9878a200a6e494beed8944d6d08347945727
URL: https://github.com/llvm/llvm-project/commit/6a9e9878a200a6e494beed8944d6d08347945727
DIFF: https://github.com/llvm/llvm-project/commit/6a9e9878a200a6e494beed8944d6d08347945727.diff
LOG: [VectorCombine] foldPermuteOfBinops - ensure potential identity mask isn't length changing.
Added:
Modified:
llvm/lib/Transforms/Vectorize/VectorCombine.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
index d17be8e1ac79ee..88d7cf2013a6b0 100644
--- a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
+++ b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
@@ -1639,8 +1639,12 @@ bool VectorCombine::foldPermuteOfBinops(Instruction &I) {
}
unsigned NumOpElts = Op0Ty->getNumElements();
- bool IsIdentity0 = ShuffleVectorInst::isIdentityMask(NewMask0, NumOpElts);
- bool IsIdentity1 = ShuffleVectorInst::isIdentityMask(NewMask1, NumOpElts);
+ bool IsIdentity0 =
+ all_of(NewMask0, [NumOpElts](int M) { return M < (int)NumOpElts; }) &&
+ ShuffleVectorInst::isIdentityMask(NewMask0, NumOpElts);
+ bool IsIdentity1 =
+ all_of(NewMask1, [NumOpElts](int M) { return M < (int)NumOpElts; }) &&
+ ShuffleVectorInst::isIdentityMask(NewMask1, NumOpElts);
// Try to merge shuffles across the binop if the new shuffles are not costly.
InstructionCost OldCost =
More information about the llvm-commits
mailing list