Lines Matching defs:DstVT

4433   auto MakeBroadcastOp = [&](SDValue Op, MVT OpVT, MVT DstVT) {
4441 if (OpVT == DstVT && Op.getOpcode() != ISD::BITCAST)
4450 return DAG.getConstant(SplatValue, DL, DstVT);
4457 MVT DstVT = VT;
4459 DstVT = MVT::getVectorVT(SVT, 512 / SVT.getSizeInBits());
4470 if (SDValue BroadcastOp = MakeBroadcastOp(Op, OpVT, DstVT)) {
4480 SDValue Res = DAG.getNode(Opcode, DL, DstVT, SrcOps);
10319 static bool matchShuffleAsVTRUNC(MVT &SrcVT, MVT &DstVT, MVT VT,
10341 DstVT = MVT::getIntegerVT(EltSizeInBits);
10344 DstVT = MVT::getVectorVT(DstVT, NumSrcElts);
10347 DstVT = MVT::getVectorVT(DstVT, 128 / EltSizeInBits);
10356 // element padding to the final DstVT.
10357 static SDValue getAVX512TruncNode(const SDLoc &DL, MVT DstVT, SDValue Src,
10361 MVT DstSVT = DstVT.getScalarType();
10362 unsigned NumDstElts = DstVT.getVectorNumElements();
10364 unsigned DstEltSizeInBits = DstVT.getScalarSizeInBits();
10371 return DAG.getNode(ISD::TRUNCATE, DL, DstVT, Src);
10376 return extractSubVector(Trunc, 0, DAG, DL, DstVT.getSizeInBits());
10383 DstVT.getSizeInBits());
10390 return getAVX512TruncNode(DL, DstVT, NewSrc, Subtarget, DAG, ZeroUppers);
10396 if (DstVT != TruncVT)
10398 DstVT.getSizeInBits());
10728 MVT DstVT = MVT::getVectorVT(DstSVT, NumSrcElts * 2);
10729 Res = DAG.getNode(PackOpcode, DL, DstVT, DAG.getBitcast(SrcVT, V1),
19817 EVT DstVT, EVT SrcVT, const SDLoc &DL, SDValue Chain, SDValue Pointer,
19821 bool useSSE = isScalarFPTypeInSSEReg(DstVT);
19825 Tys = DAG.getVTList(DstVT, MVT::Other);
19835 unsigned SSFISize = DstVT.getStoreSize();
19847 DAG.getMemIntrinsicNode(X86ISD::FST, DL, Tys, FSTOps, DstVT, StoreMMO);
19849 DstVT, DL, Chain, StackSlot,
20225 MVT DstVT = Op->getSimpleValueType(0);
20229 if (DstVT == MVT::f128)
20232 if (isSoftF16(DstVT, Subtarget))
20237 if (DstVT.isVector())
20246 if (Subtarget.hasAVX512() && isScalarFPTypeInSSEReg(DstVT) &&
20257 return DAG.getNode(ISD::STRICT_SINT_TO_FP, dl, {DstVT, MVT::Other},
20259 return DAG.getNode(ISD::SINT_TO_FP, dl, DstVT, Src);
20269 if (SrcVT == MVT::i64 && DstVT == MVT::f64 && Subtarget.hasSSE2() &&
20274 if (SrcVT == MVT::i32 && Subtarget.hasSSE2() && DstVT != MVT::f80 &&
20278 (DstVT == MVT::f32 || DstVT == MVT::f64))
20294 BuildFILD(DstVT, MVT::i64, dl, Store2, StackSlot, MPI, SlotAlign, DAG);
20349 if (Subtarget.isOSWindows() && DstVT == MVT::f32)
20355 if (DstVT == MVT::f80)
20357 return DAG.getNode(ISD::STRICT_FP_ROUND, dl, {DstVT, MVT::Other},
20363 if (Subtarget.isOSWindows() && DstVT == MVT::f32)
20367 return DAG.getNode(ISD::FP_ROUND, dl, DstVT, Add,
20680 static SDValue truncateVectorWithPACK(unsigned Opcode, EVT DstVT, SDValue In,
20685 assert(DstVT.isVector() && "VT not a vector?");
20694 if (SrcVT == DstVT)
20701 unsigned DstSizeInBits = DstVT.getSizeInBits();
20703 assert(DstVT.getVectorNumElements() == NumElems && "Illegal truncation");
20730 return truncateVectorWithPACK(Opcode, DstVT, Res, DL, DAG, Subtarget);
20739 EVT DstHalfVT = DstVT.getHalfNumVectorElementsVT(Ctx);
20750 if (SrcVT.is256BitVector() && DstVT.is128BitVector()) {
20754 return DAG.getBitcast(DstVT, Res);
20772 if (DstVT.is256BitVector())
20773 return DAG.getBitcast(DstVT, Res);
20777 return truncateVectorWithPACK(Opcode, DstVT, Res, DL, DAG, Subtarget);
20788 return truncateVectorWithPACK(Opcode, DstVT, Res, DL, DAG, Subtarget);
20795 return truncateVectorWithPACK(Opcode, DstVT, Res, DL, DAG, Subtarget);
20802 static SDValue truncateVectorWithPACKUS(EVT DstVT, SDValue In, const SDLoc &DL,
20805 In = DAG.getZeroExtendInReg(In, DL, DstVT);
20806 return truncateVectorWithPACK(X86ISD::PACKUS, DstVT, In, DL, DAG, Subtarget);
20810 static SDValue truncateVectorWithPACKSS(EVT DstVT, SDValue In, const SDLoc &DL,
20815 DAG.getValueType(DstVT));
20816 return truncateVectorWithPACK(X86ISD::PACKSS, DstVT, In, DL, DAG, Subtarget);
20819 /// Helper to determine if \p In truncated to \p DstVT has the necessary
20822 static SDValue matchTruncateWithPACK(unsigned &PackOpcode, EVT DstVT,
20832 EVT DstSVT = DstVT.getVectorElementType();
20850 (DstVT == MVT::v2i8 && SrcVT == MVT::v2i64 && Subtarget.hasSSSE3()))
20855 if (SrcVT == MVT::v4i64 && DstVT == MVT::v4i32 &&
20915 MVT DstVT, SDValue In, const SDLoc &DL, const X86Subtarget &Subtarget,
20918 MVT DstSVT = DstVT.getVectorElementType();
20926 if (DstVT.getSizeInBits() >= 128) {
20929 MVT DstHalfVT = DstVT.getHalfNumVectorElementsVT();
20933 DstVT.getSizeInBits());
20938 if (SDValue Src = matchTruncateWithPACK(PackOpcode, DstVT, In, DL, DAG,
20940 return truncateVectorWithPACK(PackOpcode, DstVT, Src, DL, DAG, Subtarget);
20947 static SDValue LowerTruncateVecPack(MVT DstVT, SDValue In, const SDLoc &DL,
20951 MVT DstSVT = DstVT.getVectorElementType();
20953 unsigned NumElems = DstVT.getVectorNumElements();
20969 if (DstVT.getSizeInBits() >= 128) {
20972 MVT DstHalfVT = DstVT.getHalfNumVectorElementsVT();
20975 DstVT.getSizeInBits());
20983 return truncateVectorWithPACKUS(DstVT, In, DL, Subtarget, DAG);
20986 return truncateVectorWithPACKSS(DstVT, In, DL, Subtarget, DAG);
20992 return truncateVectorWithPACKSS(DstVT, Trunc, DL, Subtarget, DAG);
21600 EVT DstVT = Op.getSimpleValueType();
21604 return DstVT.getScalarType() == MVT::i32 ? Op : SDValue();
21618 EVT DstVT = N->getValueType(0);
21634 // Otherwise it only needs to hold the DstVT.
21635 EVT OtherVT = UseSSE ? SrcVT : DstVT;
21636 SDValue StackPtr = DAG.CreateStackTemporary(DstVT, OtherVT);
21642 assert(DstVT == MVT::i64 && "Invalid LRINT/LLRINT to lower!");
21655 StoreOps, DstVT, MPI, /*Align*/ std::nullopt,
21658 return DAG.getLoad(DstVT, DL, Chain, StackPtr, MPI);
21672 // type, DstVT is the type of the result, and TmpVT is the result of the
21674 // DstVT).
21676 EVT DstVT = Node->getValueType(0);
21677 EVT TmpVT = DstVT;
21686 unsigned DstWidth = DstVT.getScalarSizeInBits();
21737 if (DstVT != TmpVT) {
21749 return DAG.getNode(ISD::TRUNCATE, dl, DstVT, FpToInt);
21759 SDValue FpToInt = DAG.getNode(FpToIntOpcode, dl, DstVT, BothClamped);
21768 SDValue ZeroInt = DAG.getConstant(0, dl, DstVT);
21773 SDValue MinIntNode = DAG.getConstant(MinInt, dl, DstVT);
21774 SDValue MaxIntNode = DAG.getConstant(MaxInt, dl, DstVT);
21779 if (DstVT != TmpVT) {
21782 FpToInt = DAG.getNode(ISD::TRUNCATE, dl, DstVT, FpToInt);
21802 if (!IsSigned || DstVT != TmpVT) {
21807 SDValue ZeroInt = DAG.getConstant(0, dl, DstVT);
31975 MVT DstVT = Op.getSimpleValueType();
31979 if (SrcVT == MVT::i64 && DstVT == MVT::v64i1) {
31991 if ((SrcVT == MVT::v16i1 || SrcVT == MVT::v32i1) && DstVT.isScalarInteger()) {
31997 return DAG.getZExtOrTrunc(V, DL, DstVT);
32004 if (!(DstVT == MVT::f64 && SrcVT == MVT::i64) &&
32005 !(DstVT == MVT::x86mmx && SrcVT.isVector()))
32023 MVT V2X64VT = DstVT == MVT::f64 ? MVT::v2f64 : MVT::v2i64;
32026 if (DstVT == MVT::x86mmx)
32027 return DAG.getNode(X86ISD::MOVDQ2Q, dl, DstVT, Src);
32029 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, DstVT, Src,
33014 MVT DstVT = Op.getSimpleValueType();
33022 if (SrcAS == X86AS::PTR32_UPTR && DstVT == MVT::i64) {
33023 Op = DAG.getNode(ISD::ZERO_EXTEND, dl, DstVT, Src);
33024 } else if (DstVT == MVT::i64) {
33025 Op = DAG.getNode(ISD::SIGN_EXTEND, dl, DstVT, Src);
33026 } else if (DstVT == MVT::i32) {
33027 Op = DAG.getNode(ISD::TRUNCATE, dl, DstVT, Src);
34410 EVT DstVT = N->getValueType(0);
34415 if (SrcVT == MVT::v64i1 && DstVT == MVT::i64 && Subtarget.hasBWI()) {
34426 if (DstVT.isVector() && SrcVT == MVT::x86mmx) {
34429 assert(getTypeAction(*DAG.getContext(), DstVT) == TypeWidenVector &&
34431 EVT WideVT = getTypeToTransformTo(*DAG.getContext(), DstVT);
38847 MVT &SrcVT, MVT &DstVT) {
38859 SrcVT = DstVT = MaskVT.changeVectorElementType(MVT::f16);
38861 SrcVT = DstVT = !Subtarget.hasSSE2() ? MVT::v4f32 : MaskVT;
38904 DstVT = MVT::getIntegerVT(Scale * MaskEltSize);
38905 DstVT = MVT::getVectorVT(DstVT, NumDstElts);
38918 SrcVT = DstVT = MaskVT.changeVectorElementType(MVT::f16);
38920 SrcVT = DstVT = !Subtarget.hasSSE2() ? MVT::v4f32 : MaskVT;
38930 SrcVT = DstVT = MVT::v2f64;
38935 SrcVT = DstVT = MVT::v4f32;
38940 SrcVT = DstVT = MVT::v4f32;
38949 SrcVT = DstVT = MVT::v4f64;
38955 SrcVT = DstVT = MVT::v8f32;
38961 SrcVT = DstVT = MVT::v8f32;
38972 SrcVT = DstVT = MVT::v8f64;
38979 SrcVT = DstVT = MVT::v16f32;
38986 SrcVT = DstVT = MVT::v16f32;
39150 unsigned &Shuffle, MVT &SrcVT, MVT &DstVT,
39162 SrcVT = DstVT = Subtarget.hasSSE2() ? MVT::v2f64 : MVT::v4f32;
39169 SrcVT = DstVT = Subtarget.hasSSE2() ? MVT::v2f64 : MVT::v4f32;
39176 SrcVT = DstVT = MVT::v2f64;
39182 SrcVT = DstVT = MVT::v4f32;
39189 SrcVT = DstVT = MVT::v8f16;
39200 DstVT = MaskVT;
39214 DstVT = MVT::v8i16;
39221 DstVT = MVT::v16i8;
39228 DstVT = MVT::v8i16;
39243 SrcVT = DstVT = MaskVT;
39245 SrcVT = DstVT = (32 == EltSizeInBits ? MVT::v8f32 : MVT::v4f64);
39288 SrcVT = DstVT = MaskVT.changeTypeToInteger();
39332 SrcVT = DstVT = MaskVT.changeTypeToInteger();
44834 EVT DstVT = N->getValueType(0);
44849 DstVT.isScalarInteger()) &&
44850 !(DstVT.isVector() && DstVT.getVectorElementType() == MVT::i1 &&
44858 LHS.getOperand(0).getValueType() == DstVT)
44859 return DAG.getNode(Op.getOpcode(), SDLoc(N), DstVT, LHS.getOperand(0),
44860 DAG.getBitcast(DstVT, RHS));
44863 RHS.getOperand(0).getValueType() == DstVT)
44864 return DAG.getNode(Op.getOpcode(), SDLoc(N), DstVT,
44865 DAG.getBitcast(DstVT, LHS), RHS.getOperand(0));
44871 return DAG.getNode(Op.getOpcode(), SDLoc(N), DstVT,
44872 DAG.getBitcast(DstVT, LHS), RHS);
50565 MVT DstVT = N0.getSimpleValueType();
50566 if (DstVT != N1.getSimpleValueType())
50581 return DAG.getBitcast(VT, DAG.getNode(X86ISD::PACKSS, DL, DstVT, LHS, RHS));
52976 MVT DstVT = Trunc.getSimpleValueType();
52979 unsigned NumTruncBits = DstVT.getScalarSizeInBits() * NumSrcElts;
52980 MVT TruncVT = MVT::getVectorVT(DstVT.getScalarType(), NumSrcElts);
54916 EVT DstVT = N->getValueType(0);
54950 CMovOp0 = DAG.getNode(IntermediateOpc, DL, DstVT, CMovOp0);
54951 CMovOp1 = DAG.getNode(IntermediateOpc, DL, DstVT, CMovOp1);
54954 CMovOp0 = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, DstVT, CMovOp0, N1);
54955 CMovOp1 = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, DstVT, CMovOp1, N1);
54957 EVT CMovVT = DstVT;
54959 if (DstVT == MVT::i16) {
54968 if (CMovVT != DstVT)
54969 CMov = DAG.getNode(ISD::TRUNCATE, DL, DstVT, CMov);
56204 EVT DstVT =
56210 SDValue P = DAG.getNode(ISD::ZERO_EXTEND, dl, DstVT, Op0);
56223 EVT DstVT = InVT.changeVectorElementType(MVT::i32);
56224 SDValue P = DAG.getNode(ISD::ZERO_EXTEND, dl, DstVT, Op0);
56275 EVT DstVT =
56281 SDValue P = DAG.getNode(ISD::SIGN_EXTEND, dl, DstVT, Op0);
56294 EVT DstVT = InVT.changeVectorElementType(MVT::i32);
56295 SDValue P = DAG.getNode(ISD::SIGN_EXTEND, dl, DstVT, Op0);
56376 EVT DstVT = N->getValueType(0);
56379 if (SrcVT == MVT::v2f32 && DstVT == MVT::v2i64) {