Lines Matching defs:ValueVT
156 MVT PartVT, EVT ValueVT, const Value *V,
162 /// larger than ValueVT then AssertOp can be used to specify whether the extra
163 /// bits are known to be zero (ISD::AssertZext) or sign extended from ValueVT
167 unsigned NumParts, MVT PartVT, EVT ValueVT, const Value *V,
174 PartVT, ValueVT, CC))
177 if (ValueVT.isVector())
178 return getCopyFromPartsVector(DAG, DL, Parts, NumParts, PartVT, ValueVT, V,
186 if (ValueVT.isInteger()) {
188 unsigned ValueBits = ValueVT.getSizeInBits();
194 ValueVT : EVT::getIntegerVT(*DAG.getContext(), RoundBits);
236 assert(ValueVT == EVT(MVT::ppcf128) && PartVT == MVT::f64 &&
241 if (TLI.hasBigEndianPartOrdering(ValueVT, DAG.getDataLayout()))
243 Val = DAG.getNode(ISD::BUILD_PAIR, DL, ValueVT, Lo, Hi);
246 assert(ValueVT.isFloatingPoint() && PartVT.isInteger() &&
248 EVT IntVT = EVT::getIntegerVT(*DAG.getContext(), ValueVT.getSizeInBits());
254 // There is now one part, held in Val. Correct it to match ValueVT.
256 // ValueVT is the type of the inline asm operation.
259 if (PartEVT == ValueVT)
262 if (PartEVT.isInteger() && ValueVT.isFloatingPoint() &&
263 ValueVT.bitsLT(PartEVT)) {
266 PartEVT = EVT::getIntegerVT(*DAG.getContext(), ValueVT.getSizeInBits());
271 if (PartEVT.getSizeInBits() == ValueVT.getSizeInBits())
272 return DAG.getNode(ISD::BITCAST, DL, ValueVT, Val);
275 if (PartEVT.isInteger() && ValueVT.isInteger()) {
276 if (ValueVT.bitsLT(PartEVT)) {
282 DAG.getValueType(ValueVT));
283 return DAG.getNode(ISD::TRUNCATE, DL, ValueVT, Val);
285 return DAG.getNode(ISD::ANY_EXTEND, DL, ValueVT, Val);
288 if (PartEVT.isFloatingPoint() && ValueVT.isFloatingPoint()) {
290 if (ValueVT.bitsLT(Val.getValueType())) {
298 DAG.getVTList(ValueVT, MVT::Other), InChain, Val,
302 return DAG.getNode(ISD::FP_ROUND, DL, ValueVT, Val, NoChange);
305 return DAG.getNode(ISD::FP_EXTEND, DL, ValueVT, Val);
310 if (PartEVT == MVT::x86mmx && ValueVT.isInteger() &&
311 ValueVT.bitsLT(PartEVT)) {
313 return DAG.getNode(ISD::TRUNCATE, DL, ValueVT, Val);
336 /// type larger than ValueVT then AssertOp can be used to specify whether the
338 /// ValueVT (ISD::AssertSext).
341 MVT PartVT, EVT ValueVT, const Value *V,
344 assert(ValueVT.isVector() && "Not a vector value");
360 *DAG.getContext(), *CallConv, ValueVT, IntermediateVT,
364 TLI.getVectorTypeBreakdown(*DAG.getContext(), ValueVT, IntermediateVT,
409 // There is now one part, held in Val. Correct it to match ValueVT.
412 if (PartEVT == ValueVT)
417 if (ValueVT.getSizeInBits() == PartEVT.getSizeInBits())
418 return DAG.getNode(ISD::BITCAST, DL, ValueVT, Val);
423 if (PartEVT.getVectorElementCount() != ValueVT.getVectorElementCount()) {
425 ValueVT.getVectorElementCount().getKnownMinValue()) &&
427 ValueVT.getVectorElementCount().isScalable()) &&
431 ValueVT.getVectorElementCount());
434 if (PartEVT == ValueVT)
436 if (PartEVT.isInteger() && ValueVT.isFloatingPoint())
437 return DAG.getNode(ISD::BITCAST, DL, ValueVT, Val);
440 if (ValueVT.getSizeInBits() == PartEVT.getSizeInBits())
441 return DAG.getNode(ISD::BITCAST, DL, ValueVT, Val);
445 return DAG.getAnyExtOrTrunc(Val, DL, ValueVT);
450 if (PartEVT.getSizeInBits() == ValueVT.getSizeInBits() &&
451 TLI.isTypeLegal(ValueVT))
452 return DAG.getNode(ISD::BITCAST, DL, ValueVT, Val);
454 if (ValueVT.getVectorNumElements() != 1) {
457 if (ValueVT.getSizeInBits() == PartEVT.getSizeInBits()) {
458 return DAG.getNode(ISD::BITCAST, DL, ValueVT, Val);
459 } else if (ValueVT.bitsLT(PartEVT)) {
460 const uint64_t ValueSize = ValueVT.getFixedSizeInBits();
464 return DAG.getBitcast(ValueVT, Val);
469 return DAG.getUNDEF(ValueVT);
473 EVT ValueSVT = ValueVT.getVectorElementType();
474 if (ValueVT.getVectorNumElements() == 1 && ValueSVT != PartEVT) {
487 Val = ValueVT.isFloatingPoint()
493 return DAG.getBuildVector(ValueVT, DL, Val);
514 EVT ValueVT = Val.getValueType();
517 if (ValueVT.isVector())
528 assert(!ValueVT.isVector() && "Vector case handled elsewhere");
530 if (PartEVT == ValueVT) {
537 if (NumParts * PartBits > ValueVT.getSizeInBits()) {
539 if (PartVT.isFloatingPoint() && ValueVT.isFloatingPoint()) {
543 if (ValueVT.isFloatingPoint()) {
546 ValueVT = EVT::getIntegerVT(*DAG.getContext(), ValueVT.getSizeInBits());
547 Val = DAG.getNode(ISD::BITCAST, DL, ValueVT, Val);
550 ValueVT.isInteger() &&
552 ValueVT = EVT::getIntegerVT(*DAG.getContext(), NumParts * PartBits);
553 Val = DAG.getNode(ExtendKind, DL, ValueVT, Val);
557 } else if (PartBits == ValueVT.getSizeInBits()) {
559 assert(NumParts == 1 && PartEVT != ValueVT);
561 } else if (NumParts * PartBits < ValueVT.getSizeInBits()) {
564 ValueVT.isInteger() &&
566 ValueVT = EVT::getIntegerVT(*DAG.getContext(), NumParts * PartBits);
567 Val = DAG.getNode(ISD::TRUNCATE, DL, ValueVT, Val);
572 // The value may have changed - recompute ValueVT.
573 ValueVT = Val.getValueType();
574 assert(NumParts * PartBits == ValueVT.getSizeInBits() &&
578 if (PartEVT != ValueVT) {
591 assert(PartVT.isInteger() && ValueVT.isInteger() &&
596 SDValue OddVal = DAG.getNode(ISD::SRL, DL, ValueVT, Val,
597 DAG.getShiftAmountConstant(RoundBits, ValueVT, DL));
607 ValueVT = EVT::getIntegerVT(*DAG.getContext(), NumParts * PartBits);
608 Val = DAG.getNode(ISD::TRUNCATE, DL, ValueVT, Val);
615 ValueVT.getSizeInBits()),
646 EVT ValueVT = Val.getValueType();
648 EVT ValueEVT = ValueVT.getVectorElementType();
650 ElementCount ValueNumElts = ValueVT.getVectorElementCount();
664 ValueVT.changeVectorElementType(MVT::f16), Val);
692 EVT ValueVT = Val.getValueType();
693 assert(ValueVT.isVector() && "Not a vector");
699 if (PartEVT == ValueVT) {
701 } else if (PartVT.getSizeInBits() == ValueVT.getSizeInBits()) {
708 ValueVT.getVectorElementType()) &&
710 ValueVT.getVectorElementCount()) {
716 ValueVT.getVectorElementType() &&
717 TLI.getTypeAction(*DAG.getContext(), ValueVT) ==
721 EVT::getVectorVT(*DAG.getContext(), ValueVT.getVectorElementType(),
729 if (ValueVT.getVectorElementCount().isScalar() &&
730 (!ValueVT.isFloatingPoint() || !PartVT.isInteger())) {
732 // ValueVT is also FP and both have a different size, otherwise we
737 Val = DAG.getBitcast(ValueVT.getScalarType(), Val);
743 uint64_t ValueSize = ValueVT.getFixedSizeInBits();
764 *DAG.getContext(), *CallConv, ValueVT, IntermediateVT, NumIntermediates,
768 TLI.getVectorTypeBreakdown(*DAG.getContext(), ValueVT, IntermediateVT,
776 assert(IntermediateVT.isScalableVector() == ValueVT.isScalableVector() &&
789 if (ValueVT == BuiltVectorTy) {
791 } else if (ValueVT.getSizeInBits() == BuiltVectorTy.getSizeInBits()) {
796 ValueVT.getVectorElementType())) {
798 ValueVT = EVT::getVectorVT(*DAG.getContext(),
800 ValueVT.getVectorElementCount());
801 Val = DAG.getNode(ISD::ANY_EXTEND, DL, ValueVT, Val);
858 for (EVT ValueVT : ValueVTs) {
861 ? TLI.getNumRegistersForCallingConv(Context, *CC, ValueVT)
862 : TLI.getNumRegisters(Context, ValueVT);
865 ? TLI.getRegisterTypeForCallingConv(Context, *CC, ValueVT)
866 : TLI.getRegisterType(Context, ValueVT);
890 EVT ValueVT = ValueVTs[Value];
954 RegisterVT, ValueVT, V, Chain, CallConv);
9829 EVT ValueVT = OpInfo.ConstraintVT;
9831 ValueVT = RegVT;
9864 OpInfo.AssignedRegs = RegsForValue(Regs, RegVT, ValueVT);
11605 MVT ValueVT = TLI->getPointerTy(DL, DL.getAllocaAddrSpace());
11609 MVT RegisterVT = TLI->getRegisterType(*DAG.getContext(), ValueVT);
11610 ISD::InputArg RetArg(Flags, RegisterVT, ValueVT, true,