[llvm] 016ceb8 - [X86][SSE] combineSetCCMOVMSK - allow comparison with upper (known zero) bits in MOVMSK(SHUFFLE(X,u)) -> MOVMSK(X) fold
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 14 03:02:36 PDT 2021
Author: Simon Pilgrim
Date: 2021-04-14T11:02:01+01:00
New Revision: 016ceb838231a717e889f7ceb38c56575e82aead
URL: https://github.com/llvm/llvm-project/commit/016ceb838231a717e889f7ceb38c56575e82aead
DIFF: https://github.com/llvm/llvm-project/commit/016ceb838231a717e889f7ceb38c56575e82aead.diff
LOG: [X86][SSE] combineSetCCMOVMSK - allow comparison with upper (known zero) bits in MOVMSK(SHUFFLE(X,u)) -> MOVMSK(X) fold
Extension to rG74f98391a7a4, we can also include any of the upper (known zero) bits in the comparison in the shuffle removal fold, just as long as we demand all the elements of the movmsk source vector.
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 6c8051775915..8b846c8cd96e 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -42371,7 +42371,7 @@ static SDValue combineSetCCMOVMSK(SDValue EFLAGS, X86::CondCode &CC,
// MOVMSK(SHUFFLE(X,u)) -> MOVMSK(X) iff every element is referenced.
SmallVector<int, 32> ShuffleMask;
SmallVector<SDValue, 2> ShuffleInputs;
- if (NumElts == CmpBits &&
+ if (NumElts <= CmpBits &&
getTargetShuffleInputs(peekThroughBitcasts(Vec), ShuffleInputs,
ShuffleMask, DAG) &&
ShuffleInputs.size() == 1 && !isAnyZeroOrUndef(ShuffleMask) &&
More information about the llvm-commits
mailing list