[llvm] r346590 - [X86] Remove apparently unneeded code from combineVSZext.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 10 09:44:28 PST 2018
Author: ctopper
Date: Sat Nov 10 09:44:28 2018
New Revision: 346590
URL: http://llvm.org/viewvc/llvm-project?rev=346590&view=rev
Log:
[X86] Remove apparently unneeded code from combineVSZext.
No lit tests fail with this code removed.
This is a pre-commit for D54346.
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=346590&r1=346589&r2=346590&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Sat Nov 10 09:44:28 2018
@@ -40097,56 +40097,6 @@ static SDValue combineVSZext(SDNode *N,
return getConstVector(Vals, Undefs, VT, DAG, DL);
}
- // (vzext (bitcast (vzext (x)) -> (vzext x)
- // TODO: (vsext (bitcast (vsext (x)) -> (vsext x)
- SDValue V = peekThroughBitcasts(Op);
- if (Opcode == X86ISD::VZEXT && V != Op && V.getOpcode() == X86ISD::VZEXT) {
- MVT InnerVT = V.getSimpleValueType();
- MVT InnerEltVT = InnerVT.getVectorElementType();
-
- // If the element sizes match exactly, we can just do one larger vzext. This
- // is always an exact type match as vzext operates on integer types.
- if (OpEltVT == InnerEltVT) {
- assert(OpVT == InnerVT && "Types must match for vzext!");
- return DAG.getNode(X86ISD::VZEXT, DL, VT, V.getOperand(0));
- }
-
- // The only other way we can combine them is if only a single element of the
- // inner vzext is used in the input to the outer vzext.
- if (InnerEltVT.getSizeInBits() < InputBits)
- return SDValue();
-
- // In this case, the inner vzext is completely dead because we're going to
- // only look at bits inside of the low element. Just do the outer vzext on
- // a bitcast of the input to the inner.
- return DAG.getNode(X86ISD::VZEXT, DL, VT, DAG.getBitcast(OpVT, V));
- }
-
- // Check if we can bypass extracting and re-inserting an element of an input
- // vector. Essentially:
- // (bitcast (sclr2vec (ext_vec_elt x))) -> (bitcast x)
- // TODO: Add X86ISD::VSEXT support
- if (Opcode == X86ISD::VZEXT &&
- V.getOpcode() == ISD::SCALAR_TO_VECTOR &&
- V.getOperand(0).getOpcode() == ISD::EXTRACT_VECTOR_ELT &&
- V.getOperand(0).getSimpleValueType().getSizeInBits() == InputBits) {
- SDValue ExtractedV = V.getOperand(0);
- SDValue OrigV = ExtractedV.getOperand(0);
- if (isNullConstant(ExtractedV.getOperand(1))) {
- MVT OrigVT = OrigV.getSimpleValueType();
- // Extract a subvector if necessary...
- if (OrigVT.getSizeInBits() > OpVT.getSizeInBits()) {
- int Ratio = OrigVT.getSizeInBits() / OpVT.getSizeInBits();
- OrigVT = MVT::getVectorVT(OrigVT.getVectorElementType(),
- OrigVT.getVectorNumElements() / Ratio);
- OrigV = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, OrigVT, OrigV,
- DAG.getIntPtrConstant(0, DL));
- }
- Op = DAG.getBitcast(OpVT, OrigV);
- return DAG.getNode(X86ISD::VZEXT, DL, VT, Op);
- }
- }
-
return SDValue();
}
More information about the llvm-commits
mailing list