forked from OSchip/llvm-project
[X86][AVX] Remove superfluous insert_subvector(zero, bitcast(x)) -> bitcast(insert_subvector(zero, x)) fold
This is caught by other existing bitcast folds. llvm-svn: 355084
This commit is contained in:
parent
cf0ff638bc
commit
134bc19079
|
@ -41888,20 +41888,6 @@ static SDValue combineInsertSubvector(SDNode *N, SelectionDAG &DAG,
|
||||||
getZeroVector(OpVT, Subtarget, DAG, dl),
|
getZeroVector(OpVT, Subtarget, DAG, dl),
|
||||||
Ins.getOperand(1), N->getOperand(2));
|
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.
|
// Stop here if this is an i1 vector.
|
||||||
|
|
Loading…
Reference in New Issue