From: Simon Pilgrim Date: Thu, 28 Feb 2019 11:39:52 +0000 (+0000) Subject: [X86][AVX] Remove superfluous insert_subvector(zero, bitcast(x)) -> bitcast(insert_su... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dac99072241379dd01f8489930ccb1141acad1b4;p=llvm [X86][AVX] Remove superfluous insert_subvector(zero, bitcast(x)) -> bitcast(insert_subvector(zero, x)) fold This is caught by other existing bitcast folds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355084 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 76f65782907..4c85267343a 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -41888,20 +41888,6 @@ static SDValue combineInsertSubvector(SDNode *N, SelectionDAG &DAG, getZeroVector(OpVT, Subtarget, DAG, dl), Ins.getOperand(1), N->getOperand(2)); } - - // If we're inserting a bitcast into zeros, rewrite the insert and move the - // bitcast to the other side. This helps with detecting zero extending - // during isel. - // TODO: Is this useful for other indices than 0? - if (!IsI1Vector && SubVec.getOpcode() == ISD::BITCAST && IdxVal == 0) { - MVT CastVT = SubVec.getOperand(0).getSimpleValueType(); - unsigned NumElems = OpVT.getSizeInBits() / CastVT.getScalarSizeInBits(); - MVT NewVT = MVT::getVectorVT(CastVT.getVectorElementType(), NumElems); - SDValue Insert = DAG.getNode(ISD::INSERT_SUBVECTOR, dl, NewVT, - DAG.getBitcast(NewVT, Vec), - SubVec.getOperand(0), N->getOperand(2)); - return DAG.getBitcast(OpVT, Insert); - } } // Stop here if this is an i1 vector.