[llvm] r347302 - [X86][SSE] XFormVExtractWithShuffleIntoLoad - getVectorShuffle won't accept SM_SentinelZero
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 20 04:17:50 PST 2018
Author: rksimon
Date: Tue Nov 20 04:17:50 2018
New Revision: 347302
URL: http://llvm.org/viewvc/llvm-project?rev=347302&view=rev
Log:
[X86][SSE] XFormVExtractWithShuffleIntoLoad - getVectorShuffle won't accept SM_SentinelZero
Noticed while working on improving demanded elts target shuffle shuffle combining
Modified:
llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=347302&r1=347301&r2=347302&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Tue Nov 20 04:17:50 2018
@@ -32459,9 +32459,13 @@ static SDValue XFormVExtractWithShuffleI
if (Idx == SM_SentinelUndef)
return DAG.getUNDEF(EltVT);
+ // Bail if any mask element is SM_SentinelZero - getVectorShuffle below
+ // won't handle it.
+ if (llvm::any_of(ShuffleMask, [](int M) { return M == SM_SentinelZero; }))
+ return SDValue();
+
assert(0 <= Idx && Idx < (int)(2 * NumElems) && "Shuffle index out of range");
- SDValue LdNode = (Idx < (int)NumElems) ? ShuffleOps[0]
- : ShuffleOps[1];
+ SDValue LdNode = (Idx < (int)NumElems) ? ShuffleOps[0] : ShuffleOps[1];
// If inputs to shuffle are the same for both ops, then allow 2 uses
unsigned AllowedUses =
More information about the llvm-commits
mailing list