@@ -28187,14 +28187,16 @@ SDValue DAGCombiner::SimplifyVCastOp(SDNode *N, const SDLoc &DL) {
2818728187 TLI.preferScalarizeSplat(N)) {
2818828188 EVT SrcVT = N0.getValueType();
2818928189 EVT SrcEltVT = SrcVT.getVectorElementType();
28190- SDValue IndexC = DAG.getVectorIdxConstant(Index0, DL);
28191- SDValue Elt =
28192- DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, SrcEltVT, Src0, IndexC);
28193- SDValue ScalarBO = DAG.getNode(Opcode, DL, EltVT, Elt, N->getFlags());
28194- if (VT.isScalableVector())
28195- return DAG.getSplatVector(VT, DL, ScalarBO);
28196- SmallVector<SDValue, 8> Ops(VT.getVectorNumElements(), ScalarBO);
28197- return DAG.getBuildVector(VT, DL, Ops);
28190+ if (!LegalTypes || TLI.isTypeLegal(SrcEltVT)) {
28191+ SDValue IndexC = DAG.getVectorIdxConstant(Index0, DL);
28192+ SDValue Elt =
28193+ DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, SrcEltVT, Src0, IndexC);
28194+ SDValue ScalarBO = DAG.getNode(Opcode, DL, EltVT, Elt, N->getFlags());
28195+ if (VT.isScalableVector())
28196+ return DAG.getSplatVector(VT, DL, ScalarBO);
28197+ SmallVector<SDValue, 8> Ops(VT.getVectorNumElements(), ScalarBO);
28198+ return DAG.getBuildVector(VT, DL, Ops);
28199+ }
2819828200 }
2819928201
2820028202 return SDValue();
0 commit comments