diff options
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 39537e358b9..306a659c983 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -7924,47 +7924,6 @@ static SDValue lowerVectorShuffle(SDValue Op, const X86Subtarget *Subtarget, return DAG.getVectorShuffle(VT, dl, V1, V2, NewMask); } - // Check for a shuffle of a splat, and return just the splat. While DAG - // combining will do a similar transformation, this shows up with the - // internally created shuffles and so we handle it specially here as we won't - // have another chance to DAG-combine the generic shuffle instructions. - if (V2IsUndef) { - SDValue V = V1; - - // Look through any bitcasts. These can't change the size, just the number - // of elements which we check later. - while (V.getOpcode() == ISD::BITCAST) - V = V->getOperand(0); - - // A splat should always show up as a build vector node. - if (V.getOpcode() == ISD::BUILD_VECTOR) { - SDValue Base; - bool AllSame = true; - for (unsigned i = 0; i != V->getNumOperands(); ++i) - if (V->getOperand(i).getOpcode() != ISD::UNDEF) { - Base = V->getOperand(i); - break; - } - // Splat of <u, u, ..., u>, return <u, u, ..., u> - if (!Base) - return V1; - for (unsigned i = 0; i != V->getNumOperands(); ++i) - if (V->getOperand(i) != Base) { - AllSame = false; - break; - } - // Splat of <x, x, ..., x>, return <x, x, ..., x>, provided that the - // number of elements match or the value splatted is a zero constant. - if (AllSame) { - if (V.getValueType().getVectorNumElements() == (unsigned)NumElements) - return V1; - if (auto *C = dyn_cast<ConstantSDNode>(Base)) - if (C->isNullValue()) - return V1; - } - } - } - // For integer vector shuffles, try to collapse them into a shuffle of fewer // lanes but wider integers. We cap this to not form integers larger than i64 // but it might be interesting to form i128 integers to handle flipping the |

