reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Target/X86/X86ISelLowering.cpp
44596   SDValue InVecBC = peekThroughBitcasts(InVec);
44597   EVT InVecVT = InVec.getValueType();
44628   if (ISD::isBuildVectorAllZeros(InVec.getNode()))
44631   if (ISD::isBuildVectorAllOnes(InVec.getNode())) {
44637   if (InVec.getOpcode() == ISD::BUILD_VECTOR)
44640         InVec.getNode()->ops().slice(IdxVal, VT.getVectorNumElements()));
44645   if (InVec != InVecBC && InVecBCVT.isVector()) {
44671       InVec.getOpcode() == ISD::INSERT_SUBVECTOR && IdxVal == 0 &&
44672       InVec.hasOneUse() && isNullConstant(InVec.getOperand(2)) &&
44672       InVec.hasOneUse() && isNullConstant(InVec.getOperand(2)) &&
44673       ISD::isBuildVectorAllZeros(InVec.getOperand(0).getNode()) &&
44674       InVec.getOperand(1).getValueSizeInBits() <= VT.getSizeInBits()) {
44678                        InVec.getOperand(1), InVec.getOperand(2));
44678                        InVec.getOperand(1), InVec.getOperand(2));
44684   if (InVec.getOpcode() == X86ISD::VBROADCAST && InVec.hasOneUse() &&
44684   if (InVec.getOpcode() == X86ISD::VBROADCAST && InVec.hasOneUse() &&
44685       InVec.getOperand(0).getValueSizeInBits() <= VT.getSizeInBits())
44686     return DAG.getNode(X86ISD::VBROADCAST, SDLoc(N), VT, InVec.getOperand(0));
44688   if (InVec.getOpcode() == X86ISD::VBROADCAST_LOAD && InVec.hasOneUse()) {
44688   if (InVec.getOpcode() == X86ISD::VBROADCAST_LOAD && InVec.hasOneUse()) {
44689     auto *MemIntr = cast<MemIntrinsicSDNode>(InVec);
44704   if (IdxVal == 0 && InVec.hasOneUse()) {
44705     unsigned InOpcode = InVec.getOpcode();
44709           InVec.getOperand(0).getValueType() == MVT::v4i32) {
44710         return DAG.getNode(X86ISD::CVTSI2P, SDLoc(N), VT, InVec.getOperand(0));
44714           InVec.getOperand(0).getValueType() == MVT::v4i32) {
44715         return DAG.getNode(X86ISD::CVTUI2P, SDLoc(N), VT, InVec.getOperand(0));
44719           InVec.getOperand(0).getValueType() == MVT::v4f32) {
44720         return DAG.getNode(X86ISD::VFPEXT, SDLoc(N), VT, InVec.getOperand(0));
44730         InVec.getOperand(0).getSimpleValueType().is128BitVector()) {
44732       return DAG.getNode(ExtOp, SDLoc(N), VT, InVec.getOperand(0));
44735         InVec.getOperand(0).getValueType().is256BitVector() &&
44736         InVec.getOperand(1).getValueType().is256BitVector() &&
44737         InVec.getOperand(2).getValueType().is256BitVector()) {
44739       SDValue Ext0 = extractSubVector(InVec.getOperand(0), 0, DAG, DL, 128);
44740       SDValue Ext1 = extractSubVector(InVec.getOperand(1), 0, DAG, DL, 128);
44741       SDValue Ext2 = extractSubVector(InVec.getOperand(2), 0, DAG, DL, 128);