Lines Matching defs:DstVT

4269   auto MakeBroadcastOp = [&](SDValue Op, MVT OpVT, MVT DstVT) {
4277 if (OpVT == DstVT && Op.getOpcode() != ISD::BITCAST)
4286 return DAG.getConstant(SplatValue, DL, DstVT);
4293 MVT DstVT = VT;
4295 DstVT = MVT::getVectorVT(SVT, 512 / SVT.getSizeInBits());
4306 if (SDValue BroadcastOp = MakeBroadcastOp(Op, OpVT, DstVT)) {
4316 SDValue Res = DAG.getNode(Opcode, DL, DstVT, SrcOps);
10059 static bool matchShuffleAsVTRUNC(MVT &SrcVT, MVT &DstVT, MVT VT,
10081 DstVT = MVT::getIntegerVT(EltSizeInBits);
10084 DstVT = MVT::getVectorVT(DstVT, NumSrcElts);
10087 DstVT = MVT::getVectorVT(DstVT, 128 / EltSizeInBits);
10096 // element padding to the final DstVT.
10097 static SDValue getAVX512TruncNode(const SDLoc &DL, MVT DstVT, SDValue Src,
10101 MVT DstSVT = DstVT.getScalarType();
10102 unsigned NumDstElts = DstVT.getVectorNumElements();
10104 unsigned DstEltSizeInBits = DstVT.getScalarSizeInBits();
10111 return DAG.getNode(ISD::TRUNCATE, DL, DstVT, Src);
10116 return extractSubVector(Trunc, 0, DAG, DL, DstVT.getSizeInBits());
10123 DstVT.getSizeInBits());
10130 return getAVX512TruncNode(DL, DstVT, NewSrc, Subtarget, DAG, ZeroUppers);
10136 if (DstVT != TruncVT)
10138 DstVT.getSizeInBits());
10467 MVT DstVT = MVT::getVectorVT(DstSVT, NumSrcElts * 2);
10468 Res = DAG.getNode(PackOpcode, DL, DstVT, DAG.getBitcast(SrcVT, V1),
19437 EVT DstVT, EVT SrcVT, const SDLoc &DL, SDValue Chain, SDValue Pointer,
19441 bool useSSE = isScalarFPTypeInSSEReg(DstVT);
19445 Tys = DAG.getVTList(DstVT, MVT::Other);
19455 unsigned SSFISize = DstVT.getStoreSize();
19467 DAG.getMemIntrinsicNode(X86ISD::FST, DL, Tys, FSTOps, DstVT, StoreMMO);
19469 DstVT, DL, Chain, StackSlot,
19845 MVT DstVT = Op->getSimpleValueType(0);
19849 if (DstVT == MVT::f128)
19852 if (isSoftF16(DstVT, Subtarget))
19857 if (DstVT.isVector())
19866 if (Subtarget.hasAVX512() && isScalarFPTypeInSSEReg(DstVT) &&
19877 return DAG.getNode(ISD::STRICT_SINT_TO_FP, dl, {DstVT, MVT::Other},
19879 return DAG.getNode(ISD::SINT_TO_FP, dl, DstVT, Src);
19889 if (SrcVT == MVT::i64 && DstVT == MVT::f64 && Subtarget.hasSSE2() &&
19894 if (SrcVT == MVT::i32 && Subtarget.hasSSE2() && DstVT != MVT::f80 &&
19898 (DstVT == MVT::f32 || DstVT == MVT::f64))
19914 BuildFILD(DstVT, MVT::i64, dl, Store2, StackSlot, MPI, SlotAlign, DAG);
19969 if (Subtarget.isOSWindows() && DstVT == MVT::f32)
19975 if (DstVT == MVT::f80)
19977 return DAG.getNode(ISD::STRICT_FP_ROUND, dl, {DstVT, MVT::Other},
19982 if (Subtarget.isOSWindows() && DstVT == MVT::f32)
19986 return DAG.getNode(ISD::FP_ROUND, dl, DstVT, Add,
20300 static SDValue truncateVectorWithPACK(unsigned Opcode, EVT DstVT, SDValue In,
20305 assert(DstVT.isVector() && "VT not a vector?");
20314 if (SrcVT == DstVT)
20321 unsigned DstSizeInBits = DstVT.getSizeInBits();
20323 assert(DstVT.getVectorNumElements() == NumElems && "Illegal truncation");
20350 return truncateVectorWithPACK(Opcode, DstVT, Res, DL, DAG, Subtarget);
20359 EVT DstHalfVT = DstVT.getHalfNumVectorElementsVT(Ctx);
20370 if (SrcVT.is256BitVector() && DstVT.is128BitVector()) {
20374 return DAG.getBitcast(DstVT, Res);
20392 if (DstVT.is256BitVector())
20393 return DAG.getBitcast(DstVT, Res);
20397 return truncateVectorWithPACK(Opcode, DstVT, Res, DL, DAG, Subtarget);
20408 return truncateVectorWithPACK(Opcode, DstVT, Res, DL, DAG, Subtarget);
20415 return truncateVectorWithPACK(Opcode, DstVT, Res, DL, DAG, Subtarget);
20422 static SDValue truncateVectorWithPACKUS(EVT DstVT, SDValue In, const SDLoc &DL,
20425 In = DAG.getZeroExtendInReg(In, DL, DstVT);
20426 return truncateVectorWithPACK(X86ISD::PACKUS, DstVT, In, DL, DAG, Subtarget);
20430 static SDValue truncateVectorWithPACKSS(EVT DstVT, SDValue In, const SDLoc &DL,
20435 DAG.getValueType(DstVT));
20436 return truncateVectorWithPACK(X86ISD::PACKSS, DstVT, In, DL, DAG, Subtarget);
20439 /// Helper to determine if \p In truncated to \p DstVT has the necessary
20442 static SDValue matchTruncateWithPACK(unsigned &PackOpcode, EVT DstVT,
20451 EVT DstSVT = DstVT.getVectorElementType();
20469 (DstVT == MVT::v2i8 && SrcVT == MVT::v2i64 && Subtarget.hasSSSE3()))
20474 if (SrcVT == MVT::v4i64 && DstVT == MVT::v4i32 &&
20532 static SDValue LowerTruncateVecPackWithSignBits(MVT DstVT, SDValue In,
20537 MVT DstSVT = DstVT.getVectorElementType();
20545 if (DstVT.getSizeInBits() >= 128) {
20548 MVT DstHalfVT = DstVT.getHalfNumVectorElementsVT();
20552 DstVT.getSizeInBits());
20558 matchTruncateWithPACK(PackOpcode, DstVT, In, DL, DAG, Subtarget))
20559 return truncateVectorWithPACK(PackOpcode, DstVT, Src, DL, DAG, Subtarget);
20566 static SDValue LowerTruncateVecPack(MVT DstVT, SDValue In, const SDLoc &DL,
20570 MVT DstSVT = DstVT.getVectorElementType();
20572 unsigned NumElems = DstVT.getVectorNumElements();
20588 if (DstVT.getSizeInBits() >= 128) {
20591 MVT DstHalfVT = DstVT.getHalfNumVectorElementsVT();
20594 DstVT.getSizeInBits());
20602 return truncateVectorWithPACKUS(DstVT, In, DL, Subtarget, DAG);
20605 return truncateVectorWithPACKSS(DstVT, In, DL, Subtarget, DAG);
20611 return truncateVectorWithPACKSS(DstVT, Trunc, DL, Subtarget, DAG);
21219 EVT DstVT = Op.getSimpleValueType();
21223 return DstVT.getScalarType() == MVT::i32 ? Op : SDValue();
21237 EVT DstVT = N->getValueType(0);
21253 // Otherwise it only needs to hold the DstVT.
21254 EVT OtherVT = UseSSE ? SrcVT : DstVT;
21255 SDValue StackPtr = DAG.CreateStackTemporary(DstVT, OtherVT);
21261 assert(DstVT == MVT::i64 && "Invalid LRINT/LLRINT to lower!");
21274 StoreOps, DstVT, MPI, /*Align*/ std::nullopt,
21277 return DAG.getLoad(DstVT, DL, Chain, StackPtr, MPI);
21291 // type, DstVT is the type of the result, and TmpVT is the result of the
21293 // DstVT).
21295 EVT DstVT = Node->getValueType(0);
21296 EVT TmpVT = DstVT;
21305 unsigned DstWidth = DstVT.getScalarSizeInBits();
21355 if (DstVT != TmpVT) {
21367 return DAG.getNode(ISD::TRUNCATE, dl, DstVT, FpToInt);
21377 SDValue FpToInt = DAG.getNode(FpToIntOpcode, dl, DstVT, BothClamped);
21386 SDValue ZeroInt = DAG.getConstant(0, dl, DstVT);
21391 SDValue MinIntNode = DAG.getConstant(MinInt, dl, DstVT);
21392 SDValue MaxIntNode = DAG.getConstant(MaxInt, dl, DstVT);
21397 if (DstVT != TmpVT) {
21400 FpToInt = DAG.getNode(ISD::TRUNCATE, dl, DstVT, FpToInt);
21420 if (!IsSigned || DstVT != TmpVT) {
21425 SDValue ZeroInt = DAG.getConstant(0, dl, DstVT);
31144 MVT DstVT = Op.getSimpleValueType();
31148 if (SrcVT == MVT::i64 && DstVT == MVT::v64i1) {
31160 if ((SrcVT == MVT::v16i1 || SrcVT == MVT::v32i1) && DstVT.isScalarInteger()) {
31166 return DAG.getZExtOrTrunc(V, DL, DstVT);
31173 if (!(DstVT == MVT::f64 && SrcVT == MVT::i64) &&
31174 !(DstVT == MVT::x86mmx && SrcVT.isVector()))
31192 MVT V2X64VT = DstVT == MVT::f64 ? MVT::v2f64 : MVT::v2i64;
31195 if (DstVT == MVT::x86mmx)
31196 return DAG.getNode(X86ISD::MOVDQ2Q, dl, DstVT, Src);
31198 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, DstVT, Src,
32184 MVT DstVT = Op.getSimpleValueType();
32192 if (SrcAS == X86AS::PTR32_UPTR && DstVT == MVT::i64) {
32193 Op = DAG.getNode(ISD::ZERO_EXTEND, dl, DstVT, Src);
32194 } else if (DstVT == MVT::i64) {
32195 Op = DAG.getNode(ISD::SIGN_EXTEND, dl, DstVT, Src);
32196 } else if (DstVT == MVT::i32) {
32197 Op = DAG.getNode(ISD::TRUNCATE, dl, DstVT, Src);
33531 EVT DstVT = N->getValueType(0);
33536 if (SrcVT == MVT::v64i1 && DstVT == MVT::i64 && Subtarget.hasBWI()) {
33547 if (DstVT.isVector() && SrcVT == MVT::x86mmx) {
33550 assert(getTypeAction(*DAG.getContext(), DstVT) == TypeWidenVector &&
33552 EVT WideVT = getTypeToTransformTo(*DAG.getContext(), DstVT);
37827 MVT &SrcVT, MVT &DstVT) {
37839 SrcVT = DstVT = MaskVT.changeVectorElementType(MVT::f16);
37841 SrcVT = DstVT = !Subtarget.hasSSE2() ? MVT::v4f32 : MaskVT;
37884 DstVT = MVT::getIntegerVT(Scale * MaskEltSize);
37885 DstVT = MVT::getVectorVT(DstVT, NumDstElts);
37898 SrcVT = DstVT = MaskVT.changeVectorElementType(MVT::f16);
37900 SrcVT = DstVT = !Subtarget.hasSSE2() ? MVT::v4f32 : MaskVT;
37910 SrcVT = DstVT = MVT::v2f64;
37915 SrcVT = DstVT = MVT::v4f32;
37920 SrcVT = DstVT = MVT::v4f32;
37929 SrcVT = DstVT = MVT::v4f64;
37935 SrcVT = DstVT = MVT::v8f32;
37941 SrcVT = DstVT = MVT::v8f32;
37952 SrcVT = DstVT = MVT::v8f64;
37959 SrcVT = DstVT = MVT::v16f32;
37966 SrcVT = DstVT = MVT::v16f32;
38130 unsigned &Shuffle, MVT &SrcVT, MVT &DstVT,
38142 SrcVT = DstVT = Subtarget.hasSSE2() ? MVT::v2f64 : MVT::v4f32;
38149 SrcVT = DstVT = Subtarget.hasSSE2() ? MVT::v2f64 : MVT::v4f32;
38156 SrcVT = DstVT = MVT::v2f64;
38162 SrcVT = DstVT = MVT::v4f32;
38169 SrcVT = DstVT = MVT::v8f16;
38180 DstVT = MaskVT;
38194 DstVT = MVT::v8i16;
38201 DstVT = MVT::v16i8;
38208 DstVT = MVT::v8i16;
38223 SrcVT = DstVT = MaskVT;
38225 SrcVT = DstVT = (32 == EltSizeInBits ? MVT::v8f32 : MVT::v4f64);
38268 SrcVT = DstVT = MaskVT.changeTypeToInteger();
38312 SrcVT = DstVT = MaskVT.changeTypeToInteger();
43648 EVT DstVT = N->getValueType(0);
43663 DstVT.isScalarInteger()) &&
43664 !(DstVT.isVector() && DstVT.getVectorElementType() == MVT::i1 &&
43672 LHS.getOperand(0).getValueType() == DstVT)
43673 return DAG.getNode(Op.getOpcode(), SDLoc(N), DstVT, LHS.getOperand(0),
43674 DAG.getBitcast(DstVT, RHS));
43677 RHS.getOperand(0).getValueType() == DstVT)
43678 return DAG.getNode(Op.getOpcode(), SDLoc(N), DstVT,
43679 DAG.getBitcast(DstVT, LHS), RHS.getOperand(0));
43685 return DAG.getNode(Op.getOpcode(), SDLoc(N), DstVT,
43686 DAG.getBitcast(DstVT, LHS), RHS);
49365 MVT DstVT = N0.getSimpleValueType();
49366 if (DstVT != N1.getSimpleValueType())
49382 return DAG.getBitcast(VT, DAG.getNode(X86ISD::PACKSS, DL, DstVT, LHS, RHS));
51761 MVT DstVT = Trunc.getSimpleValueType();
51764 unsigned NumTruncBits = DstVT.getScalarSizeInBits() * NumSrcElts;
51765 MVT TruncVT = MVT::getVectorVT(DstVT.getScalarType(), NumSrcElts);
53639 EVT DstVT = N->getValueType(0);
53673 CMovOp0 = DAG.getNode(IntermediateOpc, DL, DstVT, CMovOp0);
53674 CMovOp1 = DAG.getNode(IntermediateOpc, DL, DstVT, CMovOp1);
53677 CMovOp0 = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, DstVT, CMovOp0, N1);
53678 CMovOp1 = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, DstVT, CMovOp1, N1);
53680 EVT CMovVT = DstVT;
53682 if (DstVT == MVT::i16) {
53691 if (CMovVT != DstVT)
53692 CMov = DAG.getNode(ISD::TRUNCATE, DL, DstVT, CMov);
54922 EVT DstVT =
54928 SDValue P = DAG.getNode(ISD::ZERO_EXTEND, dl, DstVT, Op0);
54941 EVT DstVT = InVT.changeVectorElementType(MVT::i32);
54942 SDValue P = DAG.getNode(ISD::ZERO_EXTEND, dl, DstVT, Op0);
54993 EVT DstVT =
54999 SDValue P = DAG.getNode(ISD::SIGN_EXTEND, dl, DstVT, Op0);
55012 EVT DstVT = InVT.changeVectorElementType(MVT::i32);
55013 SDValue P = DAG.getNode(ISD::SIGN_EXTEND, dl, DstVT, Op0);