Lines Matching refs:VT

122 bool ConstantFPSDNode::isValueValidForType(EVT VT,  in isValueValidForType()  argument
124 assert(VT.isFloatingPoint() && "Can only convert between FP types"); in isValueValidForType()
129 (void) Val2.convert(SelectionDAG::EVTToAPFloatSemantics(VT), in isValueValidForType()
1030 EVT VT = N->getValueType(0); in VerifySDNode() local
1032 assert(!VT.isVector() && (VT.isInteger() || VT.isFloatingPoint()) && in VerifySDNode()
1037 assert(N->getOperand(0).getValueType().isInteger() == VT.isInteger() && in VerifySDNode()
1039 assert(VT.getSizeInBits() == 2 * N->getOperand(0).getValueSizeInBits() && in VerifySDNode()
1106 EVT VT = cast<VTSDNode>(N)->getVT(); in RemoveNodeFromCSEMaps() local
1107 if (VT.isExtended()) { in RemoveNodeFromCSEMaps()
1108 Erased = ExtendedValueTypeNodes.erase(VT); in RemoveNodeFromCSEMaps()
1110 Erased = ValueTypeNodes[VT.getSimpleVT().SimpleTy] != nullptr; in RemoveNodeFromCSEMaps()
1111 ValueTypeNodes[VT.getSimpleVT().SimpleTy] = nullptr; in RemoveNodeFromCSEMaps()
1222 Align SelectionDAG::getEVTAlign(EVT VT) const { in getEVTAlign()
1223 Type *Ty = VT == MVT::iPTR ? in getEVTAlign()
1225 VT.getTypeForEVT(*getContext()); in getEVTAlign()
1341 SDValue SelectionDAG::getFPExtendOrRound(SDValue Op, const SDLoc &DL, EVT VT) { in getFPExtendOrRound() argument
1342 return VT.bitsGT(Op.getValueType()) in getFPExtendOrRound()
1343 ? getNode(ISD::FP_EXTEND, DL, VT, Op) in getFPExtendOrRound()
1344 : getNode(ISD::FP_ROUND, DL, VT, Op, getIntPtrConstant(0, DL)); in getFPExtendOrRound()
1349 const SDLoc &DL, EVT VT) { in getStrictFPExtendOrRound() argument
1350 assert(!VT.bitsEq(Op.getValueType()) && in getStrictFPExtendOrRound()
1353 VT.bitsGT(Op.getValueType()) in getStrictFPExtendOrRound()
1354 ? getNode(ISD::STRICT_FP_EXTEND, DL, {VT, MVT::Other}, {Chain, Op}) in getStrictFPExtendOrRound()
1355 : getNode(ISD::STRICT_FP_ROUND, DL, {VT, MVT::Other}, in getStrictFPExtendOrRound()
1361 SDValue SelectionDAG::getAnyExtOrTrunc(SDValue Op, const SDLoc &DL, EVT VT) { in getAnyExtOrTrunc() argument
1362 return VT.bitsGT(Op.getValueType()) ? in getAnyExtOrTrunc()
1363 getNode(ISD::ANY_EXTEND, DL, VT, Op) : in getAnyExtOrTrunc()
1364 getNode(ISD::TRUNCATE, DL, VT, Op); in getAnyExtOrTrunc()
1367 SDValue SelectionDAG::getSExtOrTrunc(SDValue Op, const SDLoc &DL, EVT VT) { in getSExtOrTrunc() argument
1368 return VT.bitsGT(Op.getValueType()) ? in getSExtOrTrunc()
1369 getNode(ISD::SIGN_EXTEND, DL, VT, Op) : in getSExtOrTrunc()
1370 getNode(ISD::TRUNCATE, DL, VT, Op); in getSExtOrTrunc()
1373 SDValue SelectionDAG::getZExtOrTrunc(SDValue Op, const SDLoc &DL, EVT VT) { in getZExtOrTrunc() argument
1374 return VT.bitsGT(Op.getValueType()) ? in getZExtOrTrunc()
1375 getNode(ISD::ZERO_EXTEND, DL, VT, Op) : in getZExtOrTrunc()
1376 getNode(ISD::TRUNCATE, DL, VT, Op); in getZExtOrTrunc()
1379 SDValue SelectionDAG::getBoolExtOrTrunc(SDValue Op, const SDLoc &SL, EVT VT, in getBoolExtOrTrunc() argument
1381 if (VT.bitsLE(Op.getValueType())) in getBoolExtOrTrunc()
1382 return getNode(ISD::TRUNCATE, SL, VT, Op); in getBoolExtOrTrunc()
1385 return getNode(TLI->getExtendForContent(BType), SL, VT, Op); in getBoolExtOrTrunc()
1388 SDValue SelectionDAG::getZeroExtendInReg(SDValue Op, const SDLoc &DL, EVT VT) { in getZeroExtendInReg() argument
1390 assert(VT.isInteger() && OpVT.isInteger() && in getZeroExtendInReg()
1392 assert(VT.isVector() == OpVT.isVector() && in getZeroExtendInReg()
1395 assert((!VT.isVector() || in getZeroExtendInReg()
1396 VT.getVectorElementCount() == OpVT.getVectorElementCount()) && in getZeroExtendInReg()
1398 assert(VT.bitsLE(OpVT) && "Not extending!"); in getZeroExtendInReg()
1399 if (OpVT == VT) in getZeroExtendInReg()
1402 VT.getScalarSizeInBits()); in getZeroExtendInReg()
1406 SDValue SelectionDAG::getPtrExtOrTrunc(SDValue Op, const SDLoc &DL, EVT VT) { in getPtrExtOrTrunc() argument
1409 return getZExtOrTrunc(Op, DL, VT); in getPtrExtOrTrunc()
1412 SDValue SelectionDAG::getPtrExtendInReg(SDValue Op, const SDLoc &DL, EVT VT) { in getPtrExtendInReg() argument
1415 return getZeroExtendInReg(Op, DL, VT); in getPtrExtendInReg()
1419 SDValue SelectionDAG::getNOT(const SDLoc &DL, SDValue Val, EVT VT) { in getNOT() argument
1420 return getNode(ISD::XOR, DL, VT, Val, getAllOnesConstant(DL, VT)); in getNOT()
1423 SDValue SelectionDAG::getLogicalNOT(const SDLoc &DL, SDValue Val, EVT VT) { in getLogicalNOT() argument
1424 SDValue TrueValue = getBoolConstant(true, DL, VT, VT); in getLogicalNOT()
1425 return getNode(ISD::XOR, DL, VT, Val, TrueValue); in getLogicalNOT()
1429 SDValue Mask, SDValue EVL, EVT VT) { in getVPLogicalNOT() argument
1430 SDValue TrueValue = getBoolConstant(true, DL, VT, VT); in getVPLogicalNOT()
1431 return getNode(ISD::VP_XOR, DL, VT, Val, TrueValue, Mask, EVL); in getVPLogicalNOT()
1434 SDValue SelectionDAG::getBoolConstant(bool V, const SDLoc &DL, EVT VT, in getBoolConstant() argument
1437 return getConstant(0, DL, VT); in getBoolConstant()
1442 return getConstant(1, DL, VT); in getBoolConstant()
1444 return getAllOnesConstant(DL, VT); in getBoolConstant()
1449 SDValue SelectionDAG::getConstant(uint64_t Val, const SDLoc &DL, EVT VT, in getConstant() argument
1451 EVT EltVT = VT.getScalarType(); in getConstant()
1455 return getConstant(APInt(EltVT.getSizeInBits(), Val), DL, VT, isT, isO); in getConstant()
1458 SDValue SelectionDAG::getConstant(const APInt &Val, const SDLoc &DL, EVT VT, in getConstant() argument
1460 return getConstant(*ConstantInt::get(*Context, Val), DL, VT, isT, isO); in getConstant()
1464 EVT VT, bool isT, bool isO) { in getConstant() argument
1465 assert(VT.isInteger() && "Cannot create FP integer constant!"); in getConstant()
1467 EVT EltVT = VT.getScalarType(); in getConstant()
1474 if (VT.isVector() && TLI->getTypeAction(*getContext(), EltVT) == in getConstant()
1486 else if (NewNodesMustHaveLegalTypes && VT.isVector() && in getConstant()
1494 if (VT.isScalableVector()) { in getConstant()
1505 return getNode(ISD::SPLAT_VECTOR_PARTS, DL, VT, ScalarParts); in getConstant()
1508 unsigned ViaVecNumElts = VT.getSizeInBits() / ViaEltSizeInBits; in getConstant()
1514 assert(ViaVecVT.getSizeInBits() == VT.getSizeInBits()); in getConstant()
1517 for (unsigned i = 0; i < ViaVecNumElts / VT.getVectorNumElements(); ++i) in getConstant()
1535 for (unsigned i = 0, e = VT.getVectorNumElements(); i != e; ++i) in getConstant()
1539 getNode(ISD::BITCAST, DL, VT, getBuildVector(ViaVecVT, DL, Ops)); in getConstant()
1553 if (!VT.isVector()) in getConstant()
1564 if (VT.isScalableVector()) in getConstant()
1565 Result = getSplatVector(VT, DL, Result); in getConstant()
1566 else if (VT.isVector()) in getConstant()
1567 Result = getSplatBuildVector(VT, DL, Result); in getConstant()
1577 SDValue SelectionDAG::getShiftAmountConstant(uint64_t Val, EVT VT, in getShiftAmountConstant() argument
1579 assert(VT.isInteger() && "Shift amount is not an integer type!"); in getShiftAmountConstant()
1580 EVT ShiftVT = TLI->getShiftAmountTy(VT, getDataLayout(), LegalTypes); in getShiftAmountConstant()
1589 SDValue SelectionDAG::getConstantFP(const APFloat &V, const SDLoc &DL, EVT VT, in getConstantFP() argument
1591 return getConstantFP(*ConstantFP::get(*getContext(), V), DL, VT, isTarget); in getConstantFP()
1595 EVT VT, bool isTarget) { in getConstantFP() argument
1596 assert(VT.isFloatingPoint() && "Cannot create integer FP constant!"); in getConstantFP()
1598 EVT EltVT = VT.getScalarType(); in getConstantFP()
1610 if (!VT.isVector()) in getConstantFP()
1620 if (VT.isScalableVector()) in getConstantFP()
1621 Result = getSplatVector(VT, DL, Result); in getConstantFP()
1622 else if (VT.isVector()) in getConstantFP()
1623 Result = getSplatBuildVector(VT, DL, Result); in getConstantFP()
1628 SDValue SelectionDAG::getConstantFP(double Val, const SDLoc &DL, EVT VT, in getConstantFP() argument
1630 EVT EltVT = VT.getScalarType(); in getConstantFP()
1632 return getConstantFP(APFloat((float)Val), DL, VT, isTarget); in getConstantFP()
1634 return getConstantFP(APFloat(Val), DL, VT, isTarget); in getConstantFP()
1641 return getConstantFP(APF, DL, VT, isTarget); in getConstantFP()
1647 EVT VT, int64_t Offset, bool isTargetGA, in getGlobalAddress() argument
1664 AddNodeIDNode(ID, Opc, getVTList(VT), None); in getGlobalAddress()
1673 Opc, DL.getIROrder(), DL.getDebugLoc(), GV, VT, Offset, TargetFlags); in getGlobalAddress()
1679 SDValue SelectionDAG::getFrameIndex(int FI, EVT VT, bool isTarget) { in getFrameIndex() argument
1682 AddNodeIDNode(ID, Opc, getVTList(VT), None); in getFrameIndex()
1688 auto *N = newSDNode<FrameIndexSDNode>(FI, VT, isTarget); in getFrameIndex()
1694 SDValue SelectionDAG::getJumpTable(int JTI, EVT VT, bool isTarget, in getJumpTable() argument
1700 AddNodeIDNode(ID, Opc, getVTList(VT), None); in getJumpTable()
1707 auto *N = newSDNode<JumpTableSDNode>(JTI, VT, isTarget, TargetFlags); in getJumpTable()
1713 SDValue SelectionDAG::getConstantPool(const Constant *C, EVT VT, in getConstantPool() argument
1724 AddNodeIDNode(ID, Opc, getVTList(VT), None); in getConstantPool()
1733 auto *N = newSDNode<ConstantPoolSDNode>(isTarget, C, VT, Offset, *Alignment, in getConstantPool()
1742 SDValue SelectionDAG::getConstantPool(MachineConstantPoolValue *C, EVT VT, in getConstantPool() argument
1751 AddNodeIDNode(ID, Opc, getVTList(VT), None); in getConstantPool()
1760 auto *N = newSDNode<ConstantPoolSDNode>(isTarget, C, VT, Offset, *Alignment, in getConstantPool()
1767 SDValue SelectionDAG::getTargetIndex(int Index, EVT VT, int64_t Offset, in getTargetIndex() argument
1770 AddNodeIDNode(ID, ISD::TargetIndex, getVTList(VT), None); in getTargetIndex()
1778 auto *N = newSDNode<TargetIndexSDNode>(Index, VT, Offset, TargetFlags); in getTargetIndex()
1798 SDValue SelectionDAG::getValueType(EVT VT) { in getValueType() argument
1799 if (VT.isSimple() && (unsigned)VT.getSimpleVT().SimpleTy >= in getValueType()
1801 ValueTypeNodes.resize(VT.getSimpleVT().SimpleTy+1); in getValueType()
1803 SDNode *&N = VT.isExtended() ? in getValueType()
1804 ExtendedValueTypeNodes[VT] : ValueTypeNodes[VT.getSimpleVT().SimpleTy]; in getValueType()
1807 N = newSDNode<VTSDNode>(VT); in getValueType()
1812 SDValue SelectionDAG::getExternalSymbol(const char *Sym, EVT VT) { in getExternalSymbol() argument
1815 N = newSDNode<ExternalSymbolSDNode>(false, Sym, 0, VT); in getExternalSymbol()
1820 SDValue SelectionDAG::getMCSymbol(MCSymbol *Sym, EVT VT) { in getMCSymbol() argument
1824 N = newSDNode<MCSymbolSDNode>(Sym, VT); in getMCSymbol()
1829 SDValue SelectionDAG::getTargetExternalSymbol(const char *Sym, EVT VT, in getTargetExternalSymbol() argument
1834 N = newSDNode<ExternalSymbolSDNode>(true, Sym, TargetFlags, VT); in getTargetExternalSymbol()
1878 SDValue SelectionDAG::getVectorShuffle(EVT VT, const SDLoc &dl, SDValue N1, in getVectorShuffle() argument
1880 assert(VT.getVectorNumElements() == Mask.size() && in getVectorShuffle()
1882 assert(VT == N1.getValueType() && VT == N2.getValueType() && in getVectorShuffle()
1887 return getUNDEF(VT); in getVectorShuffle()
1901 N2 = getUNDEF(VT); in getVectorShuffle()
1955 return getUNDEF(VT); in getVectorShuffle()
1957 N2 = getUNDEF(VT); in getVectorShuffle()
1959 N1 = getUNDEF(VT); in getVectorShuffle()
1966 return getUNDEF(VT); in getVectorShuffle()
1992 return getUNDEF(VT); in getVectorShuffle()
1995 V.getValueType().getVectorNumElements() == VT.getVectorNumElements(); in getVectorShuffle()
2017 if (BuildVT != VT) in getVectorShuffle()
2018 NewBV = getNode(ISD::BITCAST, dl, VT, NewBV); in getVectorShuffle()
2026 AddNodeIDNode(ID, ISD::VECTOR_SHUFFLE, getVTList(VT), Ops); in getVectorShuffle()
2040 auto *N = newSDNode<ShuffleVectorSDNode>(VT, dl.getIROrder(), in getVectorShuffle()
2052 EVT VT = SV.getValueType(0); in getCommutedVectorShuffle() local
2058 return getVectorShuffle(VT, SDLoc(&SV), Op1, Op0, MaskVec); in getCommutedVectorShuffle()
2061 SDValue SelectionDAG::getRegister(unsigned RegNo, EVT VT) { in getRegister() argument
2063 AddNodeIDNode(ID, ISD::Register, getVTList(VT), None); in getRegister()
2069 auto *N = newSDNode<RegisterSDNode>(RegNo, VT); in getRegister()
2114 SDValue SelectionDAG::getBlockAddress(const BlockAddress *BA, EVT VT, in getBlockAddress() argument
2120 AddNodeIDNode(ID, Opc, getVTList(VT), None); in getBlockAddress()
2128 auto *N = newSDNode<BlockAddressSDNode>(Opc, VT, BA, Offset, TargetFlags); in getBlockAddress()
2164 SDValue SelectionDAG::getBitcast(EVT VT, SDValue V) { in getBitcast() argument
2165 if (VT == V.getValueType()) in getBitcast()
2168 return getNode(ISD::BITCAST, SDLoc(V), VT, V); in getBitcast()
2171 SDValue SelectionDAG::getAddrSpaceCast(const SDLoc &dl, EVT VT, SDValue Ptr, in getAddrSpaceCast() argument
2175 AddNodeIDNode(ID, ISD::ADDRSPACECAST, getVTList(VT), Ops); in getAddrSpaceCast()
2184 VT, SrcAS, DestAS); in getAddrSpaceCast()
2210 EVT VT = Node->getValueType(0); in expandVAArg() local
2231 VT.getTypeForEVT(*getContext())), in expandVAArg()
2237 return getLoad(VT, dl, Tmp1, VAList, MachinePointerInfo()); in expandVAArg()
2254 Align SelectionDAG::getReducedAlign(EVT VT, bool UseABI) { in getReducedAlign() argument
2256 Type *Ty = VT.getTypeForEVT(*getContext()); in getReducedAlign()
2259 if (TLI->isTypeLegal(VT) || !VT.isVector()) in getReducedAlign()
2271 TLI->getVectorTypeBreakdown(*getContext(), VT, IntermediateVT, in getReducedAlign()
2295 SDValue SelectionDAG::CreateStackTemporary(EVT VT, unsigned minAlign) { in CreateStackTemporary() argument
2296 Type *Ty = VT.getTypeForEVT(*getContext()); in CreateStackTemporary()
2299 return CreateStackTemporary(VT.getStoreSize(), StackAlign); in CreateStackTemporary()
2318 SDValue SelectionDAG::FoldSetCC(EVT VT, SDValue N1, SDValue N2, in FoldSetCC() argument
2326 case ISD::SETFALSE2: return getBoolConstant(false, dl, VT, OpVT); in FoldSetCC()
2328 case ISD::SETTRUE2: return getBoolConstant(true, dl, VT, OpVT); in FoldSetCC()
2351 return getUNDEF(VT); in FoldSetCC()
2356 return getUNDEF(VT); in FoldSetCC()
2361 return getBoolConstant(ISD::isTrueWhenEqual(Cond), dl, VT, OpVT); in FoldSetCC()
2370 dl, VT, OpVT); in FoldSetCC()
2382 return getUNDEF(VT); in FoldSetCC()
2384 case ISD::SETOEQ: return getBoolConstant(R==APFloat::cmpEqual, dl, VT, in FoldSetCC()
2387 return getUNDEF(VT); in FoldSetCC()
2390 R==APFloat::cmpLessThan, dl, VT, in FoldSetCC()
2393 return getUNDEF(VT); in FoldSetCC()
2395 case ISD::SETOLT: return getBoolConstant(R==APFloat::cmpLessThan, dl, VT, in FoldSetCC()
2398 return getUNDEF(VT); in FoldSetCC()
2401 VT, OpVT); in FoldSetCC()
2403 return getUNDEF(VT); in FoldSetCC()
2406 R==APFloat::cmpEqual, dl, VT, in FoldSetCC()
2409 return getUNDEF(VT); in FoldSetCC()
2412 R==APFloat::cmpEqual, dl, VT, OpVT); in FoldSetCC()
2413 case ISD::SETO: return getBoolConstant(R!=APFloat::cmpUnordered, dl, VT, in FoldSetCC()
2415 case ISD::SETUO: return getBoolConstant(R==APFloat::cmpUnordered, dl, VT, in FoldSetCC()
2418 R==APFloat::cmpEqual, dl, VT, in FoldSetCC()
2420 case ISD::SETUNE: return getBoolConstant(R!=APFloat::cmpEqual, dl, VT, in FoldSetCC()
2423 R==APFloat::cmpLessThan, dl, VT, in FoldSetCC()
2426 R==APFloat::cmpUnordered, dl, VT, in FoldSetCC()
2429 VT, OpVT); in FoldSetCC()
2430 case ISD::SETUGE: return getBoolConstant(R!=APFloat::cmpLessThan, dl, VT, in FoldSetCC()
2438 return getSetCC(dl, VT, N2, N1, SwappedCond); in FoldSetCC()
2450 return getBoolConstant(false, dl, VT, OpVT); in FoldSetCC()
2452 return getBoolConstant(true, dl, VT, OpVT); in FoldSetCC()
2454 return getUNDEF(VT); in FoldSetCC()
2467 EVT VT = V.getValueType(); in GetDemandedBits() local
2469 if (VT.isScalableVector()) in GetDemandedBits()
2548 EVT VT = V.getValueType(); in isSplatValue() local
2549 assert(VT.isVector() && "Vector type expected"); in isSplatValue()
2551 if (!VT.isScalableVector() && !DemandedElts) in isSplatValue()
2594 if (VT.isScalableVector()) in isSplatValue()
2597 unsigned NumElts = VT.getVectorNumElements(); in isSplatValue()
2693 unsigned BitWidth = VT.getScalarSizeInBits(); in isSplatValue()
2697 if (!SrcVT.isVector() || !SrcVT.isInteger() || !VT.isInteger()) in isSplatValue()
2729 EVT VT = V.getValueType(); in isSplatValue() local
2730 assert(VT.isVector() && "Vector type expected"); in isSplatValue()
2736 if (!VT.isScalableVector()) in isSplatValue()
2737 DemandedElts = APInt::getAllOnes(VT.getVectorNumElements()); in isSplatValue()
2745 EVT VT = V.getValueType(); in getSplatSourceVector() local
2752 if (!VT.isScalableVector()) in getSplatSourceVector()
2753 DemandedElts = APInt::getAllOnes(VT.getVectorNumElements()); in getSplatSourceVector()
2756 if (VT.isScalableVector()) { in getSplatSourceVector()
2764 return getUNDEF(VT); in getSplatSourceVector()
2776 if (VT.isScalableVector()) in getSplatSourceVector()
2891 EVT VT = Op.getValueType(); in computeKnownBits() local
2900 APInt DemandedElts = VT.isVector() in computeKnownBits()
2901 ? APInt::getAllOnes(VT.getVectorNumElements()) in computeKnownBits()
3452 EVT VT = LD->getMemoryVT(); in computeKnownBits() local
3453 unsigned MemBits = VT.getScalarSizeInBits(); in computeKnownBits()
3507 EVT VT = cast<VTSDNode>(Op.getOperand(1))->getVT(); in computeKnownBits() local
3508 APInt InMask = APInt::getLowBitsSet(BitWidth, VT.getSizeInBits()); in computeKnownBits()
3768 EVT VT = cast<VTSDNode>(Op.getOperand(1))->getVT(); in computeKnownBits() local
3769 Known.Zero |= APInt::getBitsSetFrom(BitWidth, VT.getScalarSizeInBits()); in computeKnownBits()
3915 EVT VT = Op.getValueType(); in ComputeNumSignBits() local
3918 if (VT.isScalableVector()) in ComputeNumSignBits()
3921 APInt DemandedElts = VT.isVector() in ComputeNumSignBits()
3922 ? APInt::getAllOnes(VT.getVectorNumElements()) in ComputeNumSignBits()
3929 EVT VT = Op.getValueType(); in ComputeNumSignBits() local
3930 assert((VT.isInteger() || VT.isFloatingPoint()) && "Invalid VT!"); in ComputeNumSignBits()
3931 unsigned VTBits = VT.getScalarSizeInBits(); in ComputeNumSignBits()
3944 if (!DemandedElts || VT.isScalableVector()) in ComputeNumSignBits()
4029 assert(VT.isVector() && "Expected bitcast to vector"); in ComputeNumSignBits()
4168 if (TLI->getBooleanContents(VT.isVector(), false) == in ComputeNumSignBits()
4523 EVT VT = Op.getValueType(); in isGuaranteedNotToBeUndefOrPoison() local
4524 if (VT.isScalableVector()) in isGuaranteedNotToBeUndefOrPoison()
4527 APInt DemandedElts = VT.isVector() in isGuaranteedNotToBeUndefOrPoison()
4528 ? APInt::getAllOnes(VT.getVectorNumElements()) in isGuaranteedNotToBeUndefOrPoison()
4809 static SDValue FoldSTEP_VECTOR(const SDLoc &DL, EVT VT, SDValue Step, in FoldSTEP_VECTOR() argument
4812 return DAG.getConstant(0, DL, VT); in FoldSTEP_VECTOR()
4817 static SDValue FoldBUILD_VECTOR(const SDLoc &DL, EVT VT, in FoldBUILD_VECTOR() argument
4822 assert(!VT.isScalableVector() && in FoldBUILD_VECTOR()
4824 assert(VT.getVectorNumElements() == (unsigned)NumOps && in FoldBUILD_VECTOR()
4829 return DAG.getUNDEF(VT); in FoldBUILD_VECTOR()
4836 Ops[i].getOperand(0).getValueType() != VT || in FoldBUILD_VECTOR()
4853 static SDValue foldCONCAT_VECTORS(const SDLoc &DL, EVT VT, in foldCONCAT_VECTORS() argument
4863 VT.getVectorElementCount() && in foldCONCAT_VECTORS()
4871 return DAG.getUNDEF(VT); in foldCONCAT_VECTORS()
4882 Op.getOperand(0).getValueType() != VT || in foldCONCAT_VECTORS()
4899 if (VT.isScalableVector()) in foldCONCAT_VECTORS()
4905 EVT SVT = VT.getScalarType(); in foldCONCAT_VECTORS()
4922 if (SVT.bitsGT(VT.getScalarType())) { in foldCONCAT_VECTORS()
4933 SDValue V = DAG.getBuildVector(VT, DL, Elts); in foldCONCAT_VECTORS()
4939 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT) { in getNode() argument
4941 AddNodeIDNode(ID, Opcode, getVTList(VT), None); in getNode()
4947 getVTList(VT)); in getNode()
4956 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
4961 return getNode(Opcode, DL, VT, Operand, Flags); in getNode()
4964 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
4978 return getConstant(Val.sextOrTrunc(VT.getSizeInBits()), DL, VT, in getNode()
4985 return getConstant(Val.zextOrTrunc(VT.getSizeInBits()), DL, VT, in getNode()
4989 if (TLI->isSExtCheaperThanZExt(Operand.getValueType(), VT)) in getNode()
4990 return getConstant(Val.sextOrTrunc(VT.getSizeInBits()), DL, VT, in getNode()
4992 return getConstant(Val.zextOrTrunc(VT.getSizeInBits()), DL, VT, in getNode()
4996 APFloat apf(EVTToAPFloatSemantics(VT), in getNode()
4997 APInt::getZero(VT.getSizeInBits())); in getNode()
5001 return getConstantFP(apf, DL, VT); in getNode()
5004 if (VT == MVT::f16 && C->getValueType(0) == MVT::i16) in getNode()
5005 return getConstantFP(APFloat(APFloat::IEEEhalf(), Val), DL, VT); in getNode()
5006 if (VT == MVT::f32 && C->getValueType(0) == MVT::i32) in getNode()
5007 return getConstantFP(APFloat(APFloat::IEEEsingle(), Val), DL, VT); in getNode()
5008 if (VT == MVT::f64 && C->getValueType(0) == MVT::i64) in getNode()
5009 return getConstantFP(APFloat(APFloat::IEEEdouble(), Val), DL, VT); in getNode()
5010 if (VT == MVT::f128 && C->getValueType(0) == MVT::i128) in getNode()
5011 return getConstantFP(APFloat(APFloat::IEEEquad(), Val), DL, VT); in getNode()
5014 return getConstant(Val.abs(), DL, VT, C->isTargetOpcode(), in getNode()
5017 return getConstant(Val.reverseBits(), DL, VT, C->isTargetOpcode(), in getNode()
5020 return getConstant(Val.byteSwap(), DL, VT, C->isTargetOpcode(), in getNode()
5023 return getConstant(Val.countPopulation(), DL, VT, C->isTargetOpcode(), in getNode()
5027 return getConstant(Val.countLeadingZeros(), DL, VT, C->isTargetOpcode(), in getNode()
5031 return getConstant(Val.countTrailingZeros(), DL, VT, C->isTargetOpcode(), in getNode()
5042 (void)FPV.convert(EVTToAPFloatSemantics(VT), in getNode()
5044 return getConstantFP(FPV, DL, VT); in getNode()
5047 if (SDValue V = FoldSTEP_VECTOR(DL, VT, Operand, *this)) in getNode()
5060 return getConstantFP(V, DL, VT); in getNode()
5063 return getConstantFP(V, DL, VT); in getNode()
5067 return getConstantFP(V, DL, VT); in getNode()
5073 return getConstantFP(V, DL, VT); in getNode()
5079 return getConstantFP(V, DL, VT); in getNode()
5086 (void)V.convert(EVTToAPFloatSemantics(VT), in getNode()
5088 return getConstantFP(V, DL, VT); in getNode()
5093 APSInt IntVal(VT.getSizeInBits(), Opcode == ISD::FP_TO_UINT); in getNode()
5099 return getConstant(IntVal, DL, VT); in getNode()
5102 if (VT == MVT::i16 && C->getValueType(0) == MVT::f16) in getNode()
5103 return getConstant((uint16_t)V.bitcastToAPInt().getZExtValue(), DL, VT); in getNode()
5104 if (VT == MVT::i16 && C->getValueType(0) == MVT::bf16) in getNode()
5105 return getConstant((uint16_t)V.bitcastToAPInt().getZExtValue(), DL, VT); in getNode()
5106 if (VT == MVT::i32 && C->getValueType(0) == MVT::f32) in getNode()
5107 return getConstant((uint32_t)V.bitcastToAPInt().getZExtValue(), DL, VT); in getNode()
5108 if (VT == MVT::i64 && C->getValueType(0) == MVT::f64) in getNode()
5109 return getConstant(V.bitcastToAPInt().getZExtValue(), DL, VT); in getNode()
5119 return getConstant(V.bitcastToAPInt().getZExtValue(), DL, VT); in getNode()
5153 if (SDValue Fold = FoldConstantArithmetic(Opcode, DL, VT, Ops)) in getNode()
5161 assert(VT.isScalableVector() && in getNode()
5164 VT.getVectorElementType() == Operand.getValueType() && in getNode()
5168 assert(VT == Operand.getValueType() && "Unexpected VT!"); in getNode()
5179 if (SDValue V = FoldBUILD_VECTOR(DL, VT, Ops, *this)) in getNode()
5185 assert(VT.isFloatingPoint() && in getNode()
5187 if (Operand.getValueType() == VT) return Operand; // noop conversion. in getNode()
5188 assert((!VT.isVector() || in getNode()
5189 VT.getVectorElementCount() == in getNode()
5192 assert(Operand.getValueType().bitsLT(VT) && in getNode()
5195 return getUNDEF(VT); in getNode()
5200 return getUNDEF(VT); in getNode()
5206 return getConstantFP(0.0, DL, VT); in getNode()
5209 assert(VT.isInteger() && Operand.getValueType().isInteger() && in getNode()
5211 assert(VT.isVector() == Operand.getValueType().isVector() && in getNode()
5214 if (Operand.getValueType() == VT) return Operand; // noop extension in getNode()
5215 assert((!VT.isVector() || in getNode()
5216 VT.getVectorElementCount() == in getNode()
5219 assert(Operand.getValueType().bitsLT(VT) && in getNode()
5222 return getNode(OpOpcode, DL, VT, Operand.getOperand(0)); in getNode()
5225 return getConstant(0, DL, VT); in getNode()
5228 assert(VT.isInteger() && Operand.getValueType().isInteger() && in getNode()
5230 assert(VT.isVector() == Operand.getValueType().isVector() && in getNode()
5233 if (Operand.getValueType() == VT) return Operand; // noop extension in getNode()
5234 assert((!VT.isVector() || in getNode()
5235 VT.getVectorElementCount() == in getNode()
5238 assert(Operand.getValueType().bitsLT(VT) && in getNode()
5241 return getNode(ISD::ZERO_EXTEND, DL, VT, Operand.getOperand(0)); in getNode()
5244 return getConstant(0, DL, VT); in getNode()
5247 assert(VT.isInteger() && Operand.getValueType().isInteger() && in getNode()
5249 assert(VT.isVector() == Operand.getValueType().isVector() && in getNode()
5252 if (Operand.getValueType() == VT) return Operand; // noop extension in getNode()
5253 assert((!VT.isVector() || in getNode()
5254 VT.getVectorElementCount() == in getNode()
5257 assert(Operand.getValueType().bitsLT(VT) && in getNode()
5263 return getNode(OpOpcode, DL, VT, Operand.getOperand(0)); in getNode()
5265 return getUNDEF(VT); in getNode()
5270 if (OpOp.getValueType() == VT) { in getNode()
5277 assert(VT.isInteger() && Operand.getValueType().isInteger() && in getNode()
5279 assert(VT.isVector() == Operand.getValueType().isVector() && in getNode()
5282 if (Operand.getValueType() == VT) return Operand; // noop truncate in getNode()
5283 assert((!VT.isVector() || in getNode()
5284 VT.getVectorElementCount() == in getNode()
5287 assert(Operand.getValueType().bitsGT(VT) && in getNode()
5290 return getNode(ISD::TRUNCATE, DL, VT, Operand.getOperand(0)); in getNode()
5295 .bitsLT(VT.getScalarType())) in getNode()
5296 return getNode(OpOpcode, DL, VT, Operand.getOperand(0)); in getNode()
5297 if (Operand.getOperand(0).getValueType().bitsGT(VT)) in getNode()
5298 return getNode(ISD::TRUNCATE, DL, VT, Operand.getOperand(0)); in getNode()
5302 return getUNDEF(VT); in getNode()
5304 return getVScale(DL, VT, Operand.getConstantOperandAPInt(0)); in getNode()
5309 assert(VT.isVector() && "This DAG node is restricted to vector types."); in getNode()
5310 assert(Operand.getValueType().bitsLE(VT) && in getNode()
5312 assert(VT.getVectorMinNumElements() < in getNode()
5317 assert(VT.isInteger() && VT == Operand.getValueType() && in getNode()
5320 return getConstant(0, DL, VT); in getNode()
5323 assert(VT.isInteger() && VT == Operand.getValueType() && in getNode()
5325 assert((VT.getScalarSizeInBits() % 16 == 0) && in getNode()
5328 return getUNDEF(VT); in getNode()
5334 assert(VT.isInteger() && VT == Operand.getValueType() && in getNode()
5337 return getUNDEF(VT); in getNode()
5340 assert(VT.getSizeInBits() == Operand.getValueSizeInBits() && in getNode()
5342 if (VT == Operand.getValueType()) return Operand; // noop conversion. in getNode()
5344 return getNode(ISD::BITCAST, DL, VT, Operand.getOperand(0)); in getNode()
5346 return getUNDEF(VT); in getNode()
5349 assert(VT.isVector() && !Operand.getValueType().isVector() && in getNode()
5350 (VT.getVectorElementType() == Operand.getValueType() || in getNode()
5351 (VT.getVectorElementType().isInteger() && in getNode()
5353 VT.getVectorElementType().bitsLE(Operand.getValueType()))) && in getNode()
5356 return getUNDEF(VT); in getNode()
5361 Operand.getOperand(0).getValueType() == VT) in getNode()
5367 return getUNDEF(VT); in getNode()
5374 return getNode(ISD::FABS, DL, VT, Operand.getOperand(0)); in getNode()
5377 assert(VT == Operand.getValueType() && "Unexpected VT!"); in getNode()
5390 return getNode(ISD::VECREDUCE_XOR, DL, VT, Operand); in getNode()
5395 return getNode(ISD::VECREDUCE_OR, DL, VT, Operand); in getNode()
5400 return getNode(ISD::VECREDUCE_AND, DL, VT, Operand); in getNode()
5405 SDVTList VTs = getVTList(VT); in getNode()
5407 if (VT != MVT::Glue) { // Don't CSE flag producing nodes in getNode()
5511 SDValue SelectionDAG::FoldSymbolOffset(unsigned Opcode, EVT VT, in FoldSymbolOffset() argument
5527 return getGlobalAddress(GA->getGlobal(), SDLoc(C2), VT, in FoldSymbolOffset()
5557 EVT VT, ArrayRef<SDValue> Ops) { in FoldConstantArithmetic() argument
5572 return getUNDEF(VT); in FoldConstantArithmetic()
5576 if (SDValue CFP = foldConstantFPMath(Opcode, DL, VT, Ops[0], Ops[1])) in FoldConstantArithmetic()
5589 SDValue Folded = getConstant(*FoldAttempt, DL, VT); in FoldConstantArithmetic()
5590 assert((!Folded || !VT.isVector()) && in FoldConstantArithmetic()
5598 return FoldSymbolOffset(Opcode, VT, GA, Ops[1].getNode()); in FoldConstantArithmetic()
5601 return FoldSymbolOffset(Opcode, VT, GA, Ops[0].getNode()); in FoldConstantArithmetic()
5605 if (!VT.isVector()) in FoldConstantArithmetic()
5608 ElementCount NumElts = VT.getVectorElementCount(); in FoldConstantArithmetic()
5612 if (NumOps == 2 && VT.isFixedLengthVector() && VT.isInteger() && in FoldConstantArithmetic()
5613 Ops[0].getValueType() == VT && Ops[1].getValueType() == VT && in FoldConstantArithmetic()
5623 unsigned EltBits = VT.getScalarSizeInBits(); in FoldConstantArithmetic()
5652 return getBitcast(VT, getBuildVector(BVVT, DL, Ops)); in FoldConstantArithmetic()
5667 return getStepVector(DL, VT, NewStep); in FoldConstantArithmetic()
5692 EVT SVT = (Opcode == ISD::SETCC ? MVT::i1 : VT.getScalarType()); in FoldConstantArithmetic()
5694 (Opcode == ISD::SETCC && SVT != VT.getScalarType()) in FoldConstantArithmetic()
5695 ? TargetLowering::getExtendForContent(TLI->getBooleanContents(VT)) in FoldConstantArithmetic()
5700 EVT LegalSVT = VT.getScalarType(); in FoldConstantArithmetic()
5703 if (LegalSVT.bitsLT(VT.getScalarType())) in FoldConstantArithmetic()
5763 SDValue V = NumElts.isScalable() ? getSplatVector(VT, DL, ScalarResults[0]) in FoldConstantArithmetic()
5764 : getBuildVector(VT, DL, ScalarResults); in FoldConstantArithmetic()
5770 EVT VT, SDValue N1, SDValue N2) { in foldConstantFPMath() argument
5783 return getConstantFP(C1, DL, VT); in foldConstantFPMath()
5786 return getConstantFP(C1, DL, VT); in foldConstantFPMath()
5789 return getConstantFP(C1, DL, VT); in foldConstantFPMath()
5792 return getConstantFP(C1, DL, VT); in foldConstantFPMath()
5795 return getConstantFP(C1, DL, VT); in foldConstantFPMath()
5798 return getConstantFP(C1, DL, VT); in foldConstantFPMath()
5800 return getConstantFP(minnum(C1, C2), DL, VT); in foldConstantFPMath()
5802 return getConstantFP(maxnum(C1, C2), DL, VT); in foldConstantFPMath()
5804 return getConstantFP(minimum(C1, C2), DL, VT); in foldConstantFPMath()
5806 return getConstantFP(maximum(C1, C2), DL, VT); in foldConstantFPMath()
5815 (void) C1.convert(EVTToAPFloatSemantics(VT), APFloat::rmNearestTiesToEven, in foldConstantFPMath()
5817 return getConstantFP(C1, DL, VT); in foldConstantFPMath()
5825 return getUNDEF(VT); in foldConstantFPMath()
5835 return getUNDEF(VT); in foldConstantFPMath()
5837 return getConstantFP(APFloat::getNaN(EVTToAPFloatSemantics(VT)), DL, VT); in foldConstantFPMath()
5870 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
5875 return getNode(Opcode, DL, VT, N1, N2, Flags); in getNode()
5899 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
5918 assert(VT == MVT::Other && N1.getValueType() == MVT::Other && in getNode()
5928 if (SDValue V = FoldBUILD_VECTOR(DL, VT, Ops, *this)) in getNode()
5934 if (SDValue V = foldCONCAT_VECTORS(DL, VT, Ops, *this)) in getNode()
5939 assert(VT.isInteger() && "This operator does not apply to FP types!"); in getNode()
5941 N1.getValueType() == VT && "Binary operator types must match!"); in getNode()
5953 assert(VT.isInteger() && "This operator does not apply to FP types!"); in getNode()
5955 N1.getValueType() == VT && "Binary operator types must match!"); in getNode()
5960 if ((Opcode == ISD::ADD || Opcode == ISD::SUB) && VT.isVector() && in getNode()
5961 VT.getVectorElementType() == MVT::i1) in getNode()
5962 return getNode(ISD::XOR, DL, VT, N1, N2); in getNode()
5965 assert(VT.isInteger() && "This operator does not apply to FP types!"); in getNode()
5967 N1.getValueType() == VT && "Binary operator types must match!"); in getNode()
5968 if (VT.isVector() && VT.getVectorElementType() == MVT::i1) in getNode()
5969 return getNode(ISD::AND, DL, VT, N1, N2); in getNode()
5973 return getVScale(DL, VT, MulImm * N2CImm); in getNode()
5986 assert(VT.isInteger() && "This operator does not apply to FP types!"); in getNode()
5988 N1.getValueType() == VT && "Binary operator types must match!"); in getNode()
5989 if (VT.isVector() && VT.getVectorElementType() == MVT::i1) { in getNode()
5992 return getNode(ISD::OR, DL, VT, N1, N2); in getNode()
5995 return getNode(ISD::AND, DL, VT, N1, getNOT(DL, N2, VT)); in getNode()
6000 assert(VT.isInteger() && "This operator does not apply to FP types!"); in getNode()
6002 N1.getValueType() == VT && "Binary operator types must match!"); in getNode()
6003 if (VT.isVector() && VT.getVectorElementType() == MVT::i1) in getNode()
6004 return getNode(ISD::OR, DL, VT, N1, N2); in getNode()
6008 assert(VT.isInteger() && "This operator does not apply to FP types!"); in getNode()
6010 N1.getValueType() == VT && "Binary operator types must match!"); in getNode()
6011 if (VT.isVector() && VT.getVectorElementType() == MVT::i1) in getNode()
6012 return getNode(ISD::AND, DL, VT, N1, N2); in getNode()
6019 assert(VT.isFloatingPoint() && "This operator only applies to FP types!"); in getNode()
6021 N1.getValueType() == VT && "Binary operator types must match!"); in getNode()
6026 assert(N1.getValueType() == VT && in getNode()
6035 return getVScale(DL, VT, MulImm << ShiftImm); in getNode()
6045 assert(VT == N1.getValueType() && in getNode()
6047 assert(VT.isInteger() && N2.getValueType().isInteger() && in getNode()
6049 assert((!VT.isVector() || VT == N2.getValueType()) && in getNode()
6056 Log2_32_Ceil(VT.getScalarSizeInBits()) && in getNode()
6062 if (VT == MVT::i1) in getNode()
6068 assert(VT.isFloatingPoint() && in getNode()
6070 VT.bitsLE(N1.getValueType()) && in getNode()
6073 if (N1.getValueType() == VT) return N1; // noop conversion. in getNode()
6078 assert(VT == N1.getValueType() && "Not an inreg extend!"); in getNode()
6079 assert(VT.isInteger() && EVT.isInteger() && in getNode()
6084 assert(EVT.bitsLE(VT.getScalarType()) && "Not extending!"); in getNode()
6085 if (VT.getScalarType() == EVT) return N1; // noop assertion. in getNode()
6090 assert(VT == N1.getValueType() && "Not an inreg extend!"); in getNode()
6091 assert(VT.isInteger() && EVT.isInteger() && in getNode()
6093 assert(EVT.isVector() == VT.isVector() && in getNode()
6097 EVT.getVectorElementCount() == VT.getVectorElementCount()) && in getNode()
6099 assert(EVT.bitsLE(VT) && "Not extending!"); in getNode()
6100 if (EVT == VT) return N1; // Not actually extending in getNode()
6111 return SignExtendInReg(Val, VT); in getNode()
6117 for (int i = 0, e = VT.getVectorNumElements(); i != e; ++i) { in getNode()
6127 return getBuildVector(VT, DL, Ops); in getNode()
6133 assert(VT.isInteger() && cast<VTSDNode>(N2)->getVT().isInteger() && in getNode()
6135 assert(N1.getValueType().isVector() == VT.isVector() && in getNode()
6138 assert((!VT.isVector() || VT.getVectorElementCount() == in getNode()
6143 assert(cast<VTSDNode>(N2)->getVT().bitsLE(VT.getScalarType()) && in getNode()
6148 assert(VT.getSizeInBits() >= N1.getValueType().getScalarSizeInBits() && in getNode()
6154 return getUNDEF(VT); in getNode()
6161 return getUNDEF(VT); in getNode()
6171 return getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT, in getNode()
6187 if (VT != Elt.getValueType()) in getNode()
6191 Elt = getAnyExtOrTrunc(Elt, DL, VT); in getNode()
6207 if (VT == N1.getOperand(1).getValueType()) in getNode()
6209 if (VT.isFloatingPoint()) { in getNode()
6210 assert(VT.getSizeInBits() > N1.getOperand(1).getValueType().getSizeInBits()); in getNode()
6211 return getFPExtendOrRound(N1.getOperand(1), DL, VT); in getNode()
6213 return getSExtOrTrunc(N1.getOperand(1), DL, VT); in getNode()
6215 return getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT, N1.getOperand(0), N2); in getNode()
6230 return getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT, N1.getOperand(0), in getNode()
6236 assert(!N1.getValueType().isVector() && !VT.isVector() && in getNode()
6237 (N1.getValueType().isInteger() == VT.isInteger()) && in getNode()
6238 N1.getValueType() != VT && in getNode()
6249 unsigned ElementSize = VT.getSizeInBits(); in getNode()
6252 return getConstant(Val.extractBits(ElementSize, Shift), DL, VT); in getNode()
6257 assert(VT.isVector() && N1VT.isVector() && in getNode()
6259 assert(VT.getVectorElementType() == N1VT.getVectorElementType() && in getNode()
6261 assert((VT.isFixedLengthVector() || N1VT.isScalableVector()) && in getNode()
6263 assert((VT.isScalableVector() != N1VT.isScalableVector() || in getNode()
6264 VT.getVectorMinNumElements() <= N1VT.getVectorMinNumElements()) && in getNode()
6267 assert((VT.isScalableVector() != N1VT.isScalableVector() || in getNode()
6268 (VT.getVectorMinNumElements() + N2C->getZExtValue()) <= in getNode()
6276 if (VT == N1VT) in getNode()
6281 return getUNDEF(VT); in getNode()
6286 VT == N1.getOperand(0).getValueType()) { in getNode()
6287 unsigned Factor = VT.getVectorMinNumElements(); in getNode()
6294 VT == N1.getOperand(1).getValueType()) in getNode()
6301 if (SDValue SV = FoldConstantArithmetic(Opcode, DL, VT, {N1, N2})) in getNode()
6311 return getUNDEF(VT); // fold op(undef, arg2) -> undef in getNode()
6319 return getConstant(0, DL, VT); // fold op(undef, arg2) -> 0 in getNode()
6331 return getConstant(0, DL, VT); in getNode()
6339 return getUNDEF(VT); // fold op(arg1, undef) -> undef in getNode()
6344 return getConstant(0, DL, VT); // fold op(arg1, undef) -> 0 in getNode()
6348 return getAllOnesConstant(DL, VT); in getNode()
6354 SDVTList VTs = getVTList(VT); in getNode()
6356 if (VT != MVT::Glue) { in getNode()
6380 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
6385 return getNode(Opcode, DL, VT, N1, N2, N3, Flags); in getNode()
6388 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
6398 assert(VT.isFloatingPoint() && "This operator only applies to FP types!"); in getNode()
6399 assert(N1.getValueType() == VT && N2.getValueType() == VT && in getNode()
6400 N3.getValueType() == VT && "FMA types must match!"); in getNode()
6409 return getConstantFP(V1, DL, VT); in getNode()
6416 if (SDValue V = FoldBUILD_VECTOR(DL, VT, Ops, *this)) in getNode()
6422 if (SDValue V = foldCONCAT_VECTORS(DL, VT, Ops, *this)) in getNode()
6427 assert(VT.isInteger() && "SETCC result type must be an integer!"); in getNode()
6430 assert(VT.isVector() == N1.getValueType().isVector() && in getNode()
6432 assert((!VT.isVector() || VT.getVectorElementCount() == in getNode()
6436 if (SDValue V = FoldSetCC(VT, N1, N2, cast<CondCodeSDNode>(N3)->get(), DL)) in getNode()
6440 if (SDValue V = FoldConstantArithmetic(Opcode, DL, VT, Ops)) { in getNode()
6465 return getUNDEF(VT); in getNode()
6469 return getUNDEF(VT); in getNode()
6480 return getUNDEF(VT); in getNode()
6483 assert(VT == N1.getValueType() && in getNode()
6485 assert(VT.isVector() && N2VT.isVector() && in getNode()
6487 assert((VT.isScalableVector() || N2VT.isFixedLengthVector()) && in getNode()
6489 assert((VT.isScalableVector() != N2VT.isScalableVector() || in getNode()
6490 VT.getVectorMinNumElements() >= N2VT.getVectorMinNumElements()) && in getNode()
6494 assert((VT.isScalableVector() != N2VT.isScalableVector() || in getNode()
6497 VT.getVectorMinNumElements()) && in getNode()
6504 if (VT == N2VT) in getNode()
6510 N2.getOperand(1) == N3 && N2.getOperand(0).getValueType() == VT) in getNode()
6516 if (N1.getValueType() == VT) in getNode()
6523 SDVTList VTs = getVTList(VT); in getNode()
6525 if (VT != MVT::Glue) { in getNode()
6549 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
6552 return getNode(Opcode, DL, VT, Ops); in getNode()
6555 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
6559 return getNode(Opcode, DL, VT, Ops); in getNode()
6585 static SDValue getMemsetValue(SDValue Value, EVT VT, SelectionDAG &DAG, in getMemsetValue() argument
6589 unsigned NumBits = VT.getScalarSizeInBits(); in getMemsetValue()
6593 if (VT.isInteger()) { in getMemsetValue()
6594 bool IsOpaque = VT.getSizeInBits() > 64 || in getMemsetValue()
6596 return DAG.getConstant(Val, dl, VT, false, IsOpaque); in getMemsetValue()
6598 return DAG.getConstantFP(APFloat(DAG.EVTToAPFloatSemantics(VT), Val), dl, in getMemsetValue()
6599 VT); in getMemsetValue()
6603 EVT IntVT = VT.getScalarType(); in getMemsetValue()
6616 if (VT != Value.getValueType() && !VT.isInteger()) in getMemsetValue()
6617 Value = DAG.getBitcast(VT.getScalarType(), Value); in getMemsetValue()
6618 if (VT != Value.getValueType()) in getMemsetValue()
6619 Value = DAG.getSplatBuildVector(VT, dl, Value); in getMemsetValue()
6627 static SDValue getMemsetStringVal(EVT VT, const SDLoc &dl, SelectionDAG &DAG, in getMemsetStringVal() argument
6632 if (VT.isInteger()) in getMemsetStringVal()
6633 return DAG.getConstant(0, dl, VT); in getMemsetStringVal()
6634 if (VT == MVT::f32 || VT == MVT::f64 || VT == MVT::f128) in getMemsetStringVal()
6635 return DAG.getConstantFP(0.0, dl, VT); in getMemsetStringVal()
6636 if (VT.isVector()) { in getMemsetStringVal()
6637 unsigned NumElts = VT.getVectorNumElements(); in getMemsetStringVal()
6638 MVT EltVT = (VT.getVectorElementType() == MVT::f32) ? MVT::i32 : MVT::i64; in getMemsetStringVal()
6639 return DAG.getNode(ISD::BITCAST, dl, VT, in getMemsetStringVal()
6647 assert(!VT.isVector() && "Can't handle vector type here!"); in getMemsetStringVal()
6648 unsigned NumVTBits = VT.getSizeInBits(); in getMemsetStringVal()
6663 Type *Ty = VT.getTypeForEVT(*DAG.getContext()); in getMemsetStringVal()
6665 return DAG.getConstant(Val, dl, VT); in getMemsetStringVal()
6672 EVT VT = Base.getValueType(); in getMemBasePlusOffset() local
6680 Index = getConstant(Offset.getFixedSize(), DL, VT); in getMemBasePlusOffset()
6828 EVT VT = MemOps[i]; in getMemcpyLoadsAndStores() local
6829 unsigned VTSize = VT.getSizeInBits() / 8; in getMemcpyLoadsAndStores()
6841 (isZeroConstant || (VT.isInteger() && !VT.isVector()))) { in getMemcpyLoadsAndStores()
6857 Value = getMemsetStringVal(VT, dl, DAG, TLI, SubSlice); in getMemcpyLoadsAndStores()
6873 EVT NVT = TLI.getTypeToTransformTo(C, VT); in getMemcpyLoadsAndStores()
6874 assert(NVT.bitsGE(VT)); in getMemcpyLoadsAndStores()
6887 SrcPtrInfo.getWithOffset(SrcOff), VT, in getMemcpyLoadsAndStores()
6894 DstPtrInfo.getWithOffset(DstOff), VT, Alignment, MMOFlags, NewAAInfo); in getMemcpyLoadsAndStores()
7009 EVT VT = MemOps[i]; in getMemmoveLoadsAndStores() local
7010 unsigned VTSize = VT.getSizeInBits() / 8; in getMemmoveLoadsAndStores()
7020 VT, dl, Chain, in getMemmoveLoadsAndStores()
7030 EVT VT = MemOps[i]; in getMemmoveLoadsAndStores() local
7031 unsigned VTSize = VT.getSizeInBits() / 8; in getMemmoveLoadsAndStores()
7122 EVT VT = MemOps[i]; in getMemsetStores() local
7123 unsigned VTSize = VT.getSizeInBits() / 8; in getMemsetStores()
7134 if (VT.bitsLT(LargestVT)) { in getMemsetStores()
7135 if (!LargestVT.isVector() && !VT.isVector() && in getMemsetStores()
7136 TLI.isTruncateFree(LargestVT, VT)) in getMemsetStores()
7137 Value = DAG.getNode(ISD::TRUNCATE, dl, VT, MemSetValue); in getMemsetStores()
7139 Value = getMemsetValue(Src, VT, DAG, dl); in getMemsetStores()
7141 assert(Value.getValueType() == VT && "Value with wrong type."); in getMemsetStores()
7149 DstOff += VT.getSizeInBits() / 8; in getMemsetStores()
7569 EVT VT = Val.getValueType(); in getAtomic() local
7572 getVTList(VT, MVT::Other); in getAtomic()
7578 EVT VT, SDValue Chain, SDValue Ptr, in getAtomic() argument
7582 SDVTList VTs = getVTList(VT, MVT::Other); in getAtomic()
7751 EVT VT, const SDLoc &dl, SDValue Chain, in getLoad() argument
7771 return getLoad(AM, ExtType, VT, dl, Chain, Ptr, Offset, MemVT, MMO); in getLoad()
7775 EVT VT, const SDLoc &dl, SDValue Chain, in getLoad() argument
7778 if (VT == MemVT) { in getLoad()
7781 assert(VT == MemVT && "Non-extending load from different memory type!"); in getLoad()
7784 assert(MemVT.getScalarType().bitsLT(VT.getScalarType()) && in getLoad()
7786 assert(VT.isInteger() == MemVT.isInteger() && in getLoad()
7788 assert(VT.isVector() == MemVT.isVector() && in getLoad()
7790 assert((!VT.isVector() || in getLoad()
7791 VT.getVectorElementCount() == MemVT.getVectorElementCount()) && in getLoad()
7799 getVTList(VT, Ptr.getValueType(), MVT::Other) : getVTList(VT, MVT::Other); in getLoad()
7824 SDValue SelectionDAG::getLoad(EVT VT, const SDLoc &dl, SDValue Chain, in getLoad() argument
7830 return getLoad(ISD::UNINDEXED, ISD::NON_EXTLOAD, VT, dl, Chain, Ptr, Undef, in getLoad()
7831 PtrInfo, VT, Alignment, MMOFlags, AAInfo, Ranges); in getLoad()
7834 SDValue SelectionDAG::getLoad(EVT VT, const SDLoc &dl, SDValue Chain, in getLoad() argument
7837 return getLoad(ISD::UNINDEXED, ISD::NON_EXTLOAD, VT, dl, Chain, Ptr, Undef, in getLoad()
7838 VT, MMO); in getLoad()
7842 EVT VT, SDValue Chain, SDValue Ptr, in getExtLoad() argument
7848 return getLoad(ISD::UNINDEXED, ExtType, VT, dl, Chain, Ptr, Undef, PtrInfo, in getExtLoad()
7853 EVT VT, SDValue Chain, SDValue Ptr, EVT MemVT, in getExtLoad() argument
7856 return getLoad(ISD::UNINDEXED, ExtType, VT, dl, Chain, Ptr, Undef, in getExtLoad()
7899 EVT VT = Val.getValueType(); in getStore() local
7905 ID.AddInteger(VT.getRawBits()); in getStore()
7907 dl.getIROrder(), VTs, ISD::UNINDEXED, false, VT, MMO)); in getStore()
7916 ISD::UNINDEXED, false, VT, MMO); in getStore()
7950 EVT VT = Val.getValueType(); in getTruncStore() local
7954 if (VT == SVT) in getTruncStore()
7957 assert(SVT.getScalarType().bitsLT(VT.getScalarType()) && in getTruncStore()
7959 assert(VT.isInteger() == SVT.isInteger() && in getTruncStore()
7961 assert(VT.isVector() == SVT.isVector() && in getTruncStore()
7963 assert((!VT.isVector() || in getTruncStore()
7964 VT.getVectorElementCount() == SVT.getVectorElementCount()) && in getTruncStore()
8023 ISD::MemIndexedMode AM, ISD::LoadExtType ExtType, EVT VT, const SDLoc &dl, in getLoadVP() argument
8041 return getLoadVP(AM, ExtType, VT, dl, Chain, Ptr, Offset, Mask, EVL, MemVT, in getLoadVP()
8046 ISD::LoadExtType ExtType, EVT VT, in getLoadVP() argument
8054 SDVTList VTs = Indexed ? getVTList(VT, Ptr.getValueType(), MVT::Other) in getLoadVP()
8055 : getVTList(VT, MVT::Other); in getLoadVP()
8059 ID.AddInteger(VT.getRawBits()); in getLoadVP()
8080 SDValue SelectionDAG::getLoadVP(EVT VT, const SDLoc &dl, SDValue Chain, in getLoadVP() argument
8088 return getLoadVP(ISD::UNINDEXED, ISD::NON_EXTLOAD, VT, dl, Chain, Ptr, Undef, in getLoadVP()
8089 Mask, EVL, PtrInfo, VT, Alignment, MMOFlags, AAInfo, Ranges, in getLoadVP()
8093 SDValue SelectionDAG::getLoadVP(EVT VT, const SDLoc &dl, SDValue Chain, in getLoadVP() argument
8097 return getLoadVP(ISD::UNINDEXED, ISD::NON_EXTLOAD, VT, dl, Chain, Ptr, Undef, in getLoadVP()
8098 Mask, EVL, VT, MMO, IsExpanding); in getLoadVP()
8102 EVT VT, SDValue Chain, SDValue Ptr, in getExtLoadVP() argument
8109 return getLoadVP(ISD::UNINDEXED, ExtType, VT, dl, Chain, Ptr, Undef, Mask, in getExtLoadVP()
8115 EVT VT, SDValue Chain, SDValue Ptr, in getExtLoadVP() argument
8119 return getLoadVP(ISD::UNINDEXED, ExtType, VT, dl, Chain, Ptr, Undef, Mask, in getExtLoadVP()
8201 EVT VT = Val.getValueType(); in getTruncStoreVP() local
8204 if (VT == SVT) in getTruncStoreVP()
8206 EVL, VT, MMO, ISD::UNINDEXED, in getTruncStoreVP()
8209 assert(SVT.getScalarType().bitsLT(VT.getScalarType()) && in getTruncStoreVP()
8211 assert(VT.isInteger() == SVT.isInteger() && "Can't do FP-INT conversion!"); in getTruncStoreVP()
8212 assert(VT.isVector() == SVT.isVector() && in getTruncStoreVP()
8214 assert((!VT.isVector() || in getTruncStoreVP()
8215 VT.getVectorElementCount() == SVT.getVectorElementCount()) && in getTruncStoreVP()
8276 ISD::MemIndexedMode AM, ISD::LoadExtType ExtType, EVT VT, const SDLoc &DL, in getStridedLoadVP() argument
8294 return getStridedLoadVP(AM, ExtType, VT, DL, Chain, Ptr, Offset, Stride, Mask, in getStridedLoadVP()
8299 ISD::MemIndexedMode AM, ISD::LoadExtType ExtType, EVT VT, const SDLoc &DL, in getStridedLoadVP() argument
8306 SDVTList VTs = Indexed ? getVTList(VT, Ptr.getValueType(), MVT::Other) in getStridedLoadVP()
8307 : getVTList(VT, MVT::Other); in getStridedLoadVP()
8310 ID.AddInteger(VT.getRawBits()); in getStridedLoadVP()
8333 EVT VT, const SDLoc &DL, SDValue Chain, SDValue Ptr, SDValue Stride, in getStridedLoadVP() argument
8338 return getStridedLoadVP(ISD::UNINDEXED, ISD::NON_EXTLOAD, VT, DL, Chain, Ptr, in getStridedLoadVP()
8339 Undef, Stride, Mask, EVL, PtrInfo, VT, Alignment, in getStridedLoadVP()
8343 SDValue SelectionDAG::getStridedLoadVP(EVT VT, const SDLoc &DL, SDValue Chain, in getStridedLoadVP() argument
8349 return getStridedLoadVP(ISD::UNINDEXED, ISD::NON_EXTLOAD, VT, DL, Chain, Ptr, in getStridedLoadVP()
8350 Undef, Stride, Mask, EVL, VT, MMO, IsExpanding); in getStridedLoadVP()
8354 ISD::LoadExtType ExtType, const SDLoc &DL, EVT VT, SDValue Chain, in getExtStridedLoadVP() argument
8360 return getStridedLoadVP(ISD::UNINDEXED, ExtType, VT, DL, Chain, Ptr, Undef, in getExtStridedLoadVP()
8366 ISD::LoadExtType ExtType, const SDLoc &DL, EVT VT, SDValue Chain, in getExtStridedLoadVP() argument
8370 return getStridedLoadVP(ISD::UNINDEXED, ExtType, VT, DL, Chain, Ptr, Undef, in getExtStridedLoadVP()
8453 EVT VT = Val.getValueType(); in getTruncStridedStoreVP() local
8456 if (VT == SVT) in getTruncStridedStoreVP()
8458 Stride, Mask, EVL, VT, MMO, ISD::UNINDEXED, in getTruncStridedStoreVP()
8461 assert(SVT.getScalarType().bitsLT(VT.getScalarType()) && in getTruncStridedStoreVP()
8463 assert(VT.isInteger() == SVT.isInteger() && "Can't do FP-INT conversion!"); in getTruncStridedStoreVP()
8464 assert(VT.isVector() == SVT.isVector() && in getTruncStridedStoreVP()
8466 assert((!VT.isVector() || in getTruncStridedStoreVP()
8467 VT.getVectorElementCount() == SVT.getVectorElementCount()) && in getTruncStridedStoreVP()
8528 SDValue SelectionDAG::getGatherVP(SDVTList VTs, EVT VT, const SDLoc &dl, in getGatherVP() argument
8535 ID.AddInteger(VT.getRawBits()); in getGatherVP()
8537 dl.getIROrder(), VTs, VT, MMO, IndexType)); in getGatherVP()
8547 VT, MMO, IndexType); in getGatherVP()
8571 SDValue SelectionDAG::getScatterVP(SDVTList VTs, EVT VT, const SDLoc &dl, in getScatterVP() argument
8579 ID.AddInteger(VT.getRawBits()); in getScatterVP()
8581 dl.getIROrder(), VTs, VT, MMO, IndexType)); in getScatterVP()
8590 VT, MMO, IndexType); in getScatterVP()
8615 SDValue SelectionDAG::getMaskedLoad(EVT VT, const SDLoc &dl, SDValue Chain, in getMaskedLoad() argument
8624 SDVTList VTs = Indexed ? getVTList(VT, Base.getValueType(), MVT::Other) in getMaskedLoad()
8625 : getVTList(VT, MVT::Other); in getMaskedLoad()
8902 SDValue SelectionDAG::getVAArg(EVT VT, const SDLoc &dl, SDValue Chain, in getVAArg() argument
8905 return getNode(ISD::VAARG, dl, getVTList(VT, MVT::Other), Ops); in getVAArg()
8908 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
8911 case 0: return getNode(Opcode, DL, VT); in getNode()
8912 case 1: return getNode(Opcode, DL, VT, static_cast<const SDValue>(Ops[0])); in getNode()
8913 case 2: return getNode(Opcode, DL, VT, Ops[0], Ops[1]); in getNode()
8914 case 3: return getNode(Opcode, DL, VT, Ops[0], Ops[1], Ops[2]); in getNode()
8921 return getNode(Opcode, DL, VT, NewOps); in getNode()
8924 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
8929 return getNode(Opcode, DL, VT, Ops, Flags); in getNode()
8932 SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, in getNode() argument
8936 case 0: return getNode(Opcode, DL, VT); in getNode()
8937 case 1: return getNode(Opcode, DL, VT, Ops[0], Flags); in getNode()
8938 case 2: return getNode(Opcode, DL, VT, Ops[0], Ops[1], Flags); in getNode()
8939 case 3: return getNode(Opcode, DL, VT, Ops[0], Ops[1], Ops[2], Flags); in getNode()
8953 if (SDValue V = FoldBUILD_VECTOR(DL, VT, Ops, *this)) in getNode()
8957 if (SDValue V = foldCONCAT_VECTORS(DL, VT, Ops, *this)) in getNode()
8966 assert(Ops[2].getValueType() == VT && in getNode()
8970 VT.getVectorElementCount()) && in getNode()
8982 if (VT.isVector() && VT.getVectorElementType() == MVT::i1) in getNode()
8987 if (VT.isVector() && VT.getVectorElementType() == MVT::i1) in getNode()
8992 if (VT == MVT::i1) in getNode()
8997 if (VT == MVT::i1) in getNode()
9004 if (VT == MVT::i1) in getNode()
9011 if (VT == MVT::i1) in getNode()
9018 SDVTList VTs = getVTList(VT); in getNode()
9020 if (VT != MVT::Glue) { in getNode()
9141 return getNode(Opcode, DL, VT, N1, N2, N3.getOperand(0)); in getNode()
9146 unsigned NumBits = VT.getScalarSizeInBits()*2; in getNode()
9148 return getNode(Opcode, DL, VT, N1, N2, N3.getOperand(0)); in getNode()
9214 SDVTList SelectionDAG::getVTList(EVT VT) { in getVTList() argument
9215 return makeVTList(SDNode::getValueTypeList(VT), 1); in getVTList()
9445 EVT VT) { in SelectNodeTo() argument
9446 SDVTList VTs = getVTList(VT); in SelectNodeTo()
9451 EVT VT, SDValue Op1) { in SelectNodeTo() argument
9452 SDVTList VTs = getVTList(VT); in SelectNodeTo()
9458 EVT VT, SDValue Op1, in SelectNodeTo() argument
9460 SDVTList VTs = getVTList(VT); in SelectNodeTo()
9466 EVT VT, SDValue Op1, in SelectNodeTo() argument
9468 SDVTList VTs = getVTList(VT); in SelectNodeTo()
9474 EVT VT, ArrayRef<SDValue> Ops) { in SelectNodeTo() argument
9475 SDVTList VTs = getVTList(VT); in SelectNodeTo()
9653 EVT VT) { in getMachineNode() argument
9654 SDVTList VTs = getVTList(VT); in getMachineNode()
9659 EVT VT, SDValue Op1) { in getMachineNode() argument
9660 SDVTList VTs = getVTList(VT); in getMachineNode()
9666 EVT VT, SDValue Op1, SDValue Op2) { in getMachineNode() argument
9667 SDVTList VTs = getVTList(VT); in getMachineNode()
9673 EVT VT, SDValue Op1, SDValue Op2, in getMachineNode() argument
9675 SDVTList VTs = getVTList(VT); in getMachineNode()
9681 EVT VT, ArrayRef<SDValue> Ops) { in getMachineNode() argument
9682 SDVTList VTs = getVTList(VT); in getMachineNode()
9770 SDValue SelectionDAG::getTargetExtractSubreg(int SRIdx, const SDLoc &DL, EVT VT, in getTargetExtractSubreg() argument
9774 VT, Operand, SRIdxVal); in getTargetExtractSubreg()
9780 SDValue SelectionDAG::getTargetInsertSubreg(int SRIdx, const SDLoc &DL, EVT VT, in getTargetInsertSubreg() argument
9784 VT, Operand, Subreg, SRIdxVal); in getTargetInsertSubreg()
10787 const GlobalValue *GA, EVT VT, in GlobalAddressSDNode() argument
10789 : SDNode(Opc, Order, DL, getSDVTList(VT)), Offset(o), TargetFlags(TF) { in GlobalAddressSDNode()
10794 EVT VT, unsigned SrcAS, in AddrSpaceCastSDNode() argument
10796 : SDNode(ISD::ADDRSPACECAST, Order, dl, getSDVTList(VT)), in AddrSpaceCastSDNode()
10837 const EVT *SDNode::getValueTypeList(EVT VT) { in getValueTypeList() argument
10842 if (VT.isExtended()) { in getValueTypeList()
10844 return &(*EVTs.insert(VT).first); in getValueTypeList()
10846 assert(VT.getSimpleVT() < MVT::VALUETYPE_SIZE && "Value type out of range!"); in getValueTypeList()
10847 return &SimpleVTArray.VTs[VT.getSimpleVT().SimpleTy]; in getValueTypeList()
11097 EVT VT = N->getValueType(0); in UnrollVectorOp() local
11098 unsigned NE = VT.getVectorNumElements(); in UnrollVectorOp()
11099 EVT EltVT = VT.getVectorElementType(); in UnrollVectorOp()
11224 EVT VT = LD->getValueType(0); in areNonVolatileConsecutiveLoads() local
11225 if (VT.getSizeInBits() / 8 != Bytes) in areNonVolatileConsecutiveLoads()
11275 std::pair<EVT, EVT> SelectionDAG::GetSplitDestVTs(const EVT &VT) const { in GetSplitDestVTs()
11278 if (!VT.isVector()) in GetSplitDestVTs()
11279 LoVT = HiVT = TLI->getTypeToTransformTo(*getContext(), VT); in GetSplitDestVTs()
11281 LoVT = HiVT = VT.getHalfNumVectorElementsVT(*getContext()); in GetSplitDestVTs()
11290 SelectionDAG::GetDependentSplitDestVTs(const EVT &VT, const EVT &EnvVT, in GetDependentSplitDestVTs() argument
11292 EVT EltTp = VT.getVectorElementType(); in GetDependentSplitDestVTs()
11298 ElementCount VTNumElts = VT.getVectorElementCount(); in GetDependentSplitDestVTs()
11345 EVT VT = N.getValueType(); in SplitEVL() local
11351 ? getConstant(HalfMinNumElts, DL, VT) in SplitEVL()
11352 : getVScale(DL, VT, APInt(VT.getScalarSizeInBits(), HalfMinNumElts)); in SplitEVL()
11353 SDValue Lo = getNode(ISD::UMIN, DL, VT, N, HalfNumElts); in SplitEVL()
11354 SDValue Hi = getNode(ISD::USUBSAT, DL, VT, N, HalfNumElts); in SplitEVL()
11360 EVT VT = N.getValueType(); in WidenVector() local
11361 EVT WideVT = EVT::getVectorVT(*getContext(), VT.getVectorElementType(), in WidenVector()
11362 NextPowerOf2(VT.getVectorNumElements())); in WidenVector()
11371 EVT VT = Op.getValueType(); in ExtractVectorElements() local
11373 Count = VT.getVectorNumElements(); in ExtractVectorElements()
11375 EltVT = VT.getVectorElementType(); in ExtractVectorElements()
11399 EVT VT = getValueType(0); in isConstantSplat() local
11400 assert(VT.isVector() && "Expected a vector type"); in isConstantSplat()
11401 unsigned VecWidth = VT.getSizeInBits(); in isConstantSplat()
11416 unsigned EltWidth = VT.getScalarSizeInBits(); in isConstantSplat()
11722 bool ShuffleVectorSDNode::isSplatMask(const int *Mask, EVT VT) { in isSplatMask() argument
11725 for (i = 0, e = VT.getVectorNumElements(); i != e && Mask[i] < 0; ++i) in isSplatMask()
11813 EVT VT, SDNodeFlags Flags) { in getNeutralElement() argument
11821 return getConstant(0, DL, VT); in getNeutralElement()
11823 return getConstant(1, DL, VT); in getNeutralElement()
11826 return getAllOnesConstant(DL, VT); in getNeutralElement()
11828 return getConstant(APInt::getSignedMinValue(VT.getSizeInBits()), DL, VT); in getNeutralElement()
11830 return getConstant(APInt::getSignedMaxValue(VT.getSizeInBits()), DL, VT); in getNeutralElement()
11832 return getConstantFP(-0.0, DL, VT); in getNeutralElement()
11834 return getConstantFP(1.0, DL, VT); in getNeutralElement()
11838 const fltSemantics &Semantics = EVTToAPFloatSemantics(VT); in getNeutralElement()
11845 return getConstantFP(NeutralAF, DL, VT); in getNeutralElement()