Lines Matching refs:DL

973 EVT RISCVTargetLowering::getSetCCResultType(const DataLayout &DL,  in getSetCCResultType()  argument
977 return getPointerTy(DL); in getSetCCResultType()
992 auto &DL = I.getModule()->getDataLayout(); in getTgtMemIntrinsic() local
1016 Info.memVT = getValueType(DL, I.getType()->getScalarType()); in getTgtMemIntrinsic()
1017 Info.align = Align(DL.getTypeSizeInBits(I.getType()->getScalarType()) / 8); in getTgtMemIntrinsic()
1025 getValueType(DL, I.getArgOperand(0)->getType()->getScalarType()); in getTgtMemIntrinsic()
1027 DL.getTypeSizeInBits(I.getArgOperand(0)->getType()->getScalarType()) / in getTgtMemIntrinsic()
1042 getValueType(DL, I.getType()->getStructElementType(0)->getScalarType()); in getTgtMemIntrinsic()
1044 Align(DL.getTypeSizeInBits( in getTgtMemIntrinsic()
1053 bool RISCVTargetLowering::isLegalAddressingMode(const DataLayout &DL, in isLegalAddressingMode() argument
1390 static void translateSetCCForBranch(const SDLoc &DL, SDValue &LHS, SDValue &RHS, in translateSetCCForBranch() argument
1403 LHS = DAG.getNode(ISD::SHL, DL, LHS.getValueType(), LHS, in translateSetCCForBranch()
1404 DAG.getConstant(ShAmt, DL, LHS.getValueType())); in translateSetCCForBranch()
1416 RHS = DAG.getConstant(0, DL, RHS.getValueType()); in translateSetCCForBranch()
1425 LHS = DAG.getConstant(0, DL, RHS.getValueType()); in translateSetCCForBranch()
1719 SDLoc DL(V); in convertToScalableVector() local
1720 SDValue Zero = DAG.getConstant(0, DL, Subtarget.getXLenVT()); in convertToScalableVector()
1721 return DAG.getNode(ISD::INSERT_SUBVECTOR, DL, VT, DAG.getUNDEF(VT), V, Zero); in convertToScalableVector()
1731 SDLoc DL(V); in convertFromScalableVector() local
1732 SDValue Zero = DAG.getConstant(0, DL, Subtarget.getXLenVT()); in convertFromScalableVector()
1733 return DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, VT, V, Zero); in convertFromScalableVector()
1747 static SDValue getAllOnesMask(MVT VecVT, SDValue VL, SDLoc DL, in getAllOnesMask() argument
1750 return DAG.getNode(RISCVISD::VMSET_VL, DL, MaskVT, VL); in getAllOnesMask()
1757 getDefaultVLOps(MVT VecVT, MVT ContainerVT, SDLoc DL, SelectionDAG &DAG, in getDefaultVLOps() argument
1762 ? DAG.getConstant(VecVT.getVectorNumElements(), DL, XLenVT) in getDefaultVLOps()
1764 SDValue Mask = getAllOnesMask(ContainerVT, VL, DL, DAG); in getDefaultVLOps()
1770 getDefaultScalableVLOps(MVT VecVT, SDLoc DL, SelectionDAG &DAG, in getDefaultScalableVLOps() argument
1773 return getDefaultVLOps(VecVT, VecVT, DL, DAG, Subtarget); in getDefaultScalableVLOps()
1809 SDLoc DL(Op); in lowerFP_TO_INT_SAT() local
1811 Opc, DL, DstVT, Src, in lowerFP_TO_INT_SAT()
1812 DAG.getTargetConstant(RISCVFPRndMode::RTZ, DL, Subtarget.getXLenVT())); in lowerFP_TO_INT_SAT()
1814 SDValue ZeroInt = DAG.getConstant(0, DL, DstVT); in lowerFP_TO_INT_SAT()
1815 return DAG.getSelectCC(DL, Src, Src, ZeroInt, FpToInt, ISD::CondCode::SETUO); in lowerFP_TO_INT_SAT()
1827 SDLoc DL(Op); in lowerFTRUNC_FCEIL_FFLOOR() local
1834 SDValue Truncated = DAG.getNode(ISD::FP_TO_SINT, DL, IntVT, Src); in lowerFTRUNC_FCEIL_FFLOOR()
1835 Truncated = DAG.getNode(ISD::SINT_TO_FP, DL, VT, Truncated); in lowerFTRUNC_FCEIL_FFLOOR()
1844 SDValue Adjust = DAG.getNode(ISD::FADD, DL, VT, Truncated, in lowerFTRUNC_FCEIL_FFLOOR()
1845 DAG.getConstantFP(1.0, DL, VT)); in lowerFTRUNC_FCEIL_FFLOOR()
1846 SDValue NeedAdjust = DAG.getSetCC(DL, SetccVT, Truncated, Src, ISD::SETOLT); in lowerFTRUNC_FCEIL_FFLOOR()
1847 Truncated = DAG.getSelect(DL, VT, NeedAdjust, Adjust, Truncated); in lowerFTRUNC_FCEIL_FFLOOR()
1853 SDValue Adjust = DAG.getNode(ISD::FSUB, DL, VT, Truncated, in lowerFTRUNC_FCEIL_FFLOOR()
1854 DAG.getConstantFP(1.0, DL, VT)); in lowerFTRUNC_FCEIL_FFLOOR()
1855 SDValue NeedAdjust = DAG.getSetCC(DL, SetccVT, Truncated, Src, ISD::SETOGT); in lowerFTRUNC_FCEIL_FFLOOR()
1856 Truncated = DAG.getSelect(DL, VT, NeedAdjust, Adjust, Truncated); in lowerFTRUNC_FCEIL_FFLOOR()
1860 Truncated = DAG.getNode(ISD::FCOPYSIGN, DL, VT, Truncated, Src); in lowerFTRUNC_FCEIL_FFLOOR()
1870 SDValue MaxValNode = DAG.getConstantFP(MaxVal, DL, VT); in lowerFTRUNC_FCEIL_FFLOOR()
1873 SDValue Abs = DAG.getNode(ISD::FABS, DL, VT, Src); in lowerFTRUNC_FCEIL_FFLOOR()
1874 SDValue Setcc = DAG.getSetCC(DL, SetccVT, Abs, MaxValNode, ISD::SETOLT); in lowerFTRUNC_FCEIL_FFLOOR()
1875 return DAG.getSelect(DL, VT, Setcc, Truncated, Src); in lowerFTRUNC_FCEIL_FFLOOR()
1889 SDLoc DL(Op); in lowerFROUND() local
1895 SDValue Abs = DAG.getNode(ISD::FABS, DL, VT, Src); in lowerFROUND()
1904 SDValue Adjust = DAG.getNode(ISD::FADD, DL, VT, Abs, in lowerFROUND()
1905 DAG.getConstantFP(Point5Pred, DL, VT)); in lowerFROUND()
1909 SDValue Truncated = DAG.getNode(ISD::FP_TO_SINT, DL, IntVT, Adjust); in lowerFROUND()
1910 Truncated = DAG.getNode(ISD::SINT_TO_FP, DL, VT, Truncated); in lowerFROUND()
1913 Truncated = DAG.getNode(ISD::FCOPYSIGN, DL, VT, Truncated, Src); in lowerFROUND()
1922 SDValue MaxValNode = DAG.getConstantFP(MaxVal, DL, VT); in lowerFROUND()
1926 SDValue Setcc = DAG.getSetCC(DL, SetccVT, Abs, MaxValNode, ISD::SETOLT); in lowerFROUND()
1927 return DAG.getSelect(DL, VT, Setcc, Truncated, Src); in lowerFROUND()
2033 static SDValue matchSplatAsGather(SDValue SplatVal, MVT VT, const SDLoc &DL, in matchSplatAsGather() argument
2056 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget); in matchSplatAsGather()
2058 SDValue Gather = DAG.getNode(RISCVISD::VRGATHER_VX_VL, DL, ContainerVT, Vec, in matchSplatAsGather()
2074 SDLoc DL(Op); in lowerBUILD_VECTOR() local
2076 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget); in lowerBUILD_VECTOR()
2083 SDValue VMClr = DAG.getNode(RISCVISD::VMCLR_VL, DL, ContainerVT, VL); in lowerBUILD_VECTOR()
2088 SDValue VMSet = DAG.getNode(RISCVISD::VMSET_VL, DL, ContainerVT, VL); in lowerBUILD_VECTOR()
2125 SDValue Elt = DAG.getConstant(Bits, DL, XLenVT); in lowerBUILD_VECTOR()
2126 Vec = DAG.getNode(ISD::INSERT_VECTOR_ELT, DL, IntegerViaVecVT, Vec, in lowerBUILD_VECTOR()
2127 Elt, DAG.getConstant(IntegerEltIdx, DL, XLenVT)); in lowerBUILD_VECTOR()
2141 SDValue Elt = DAG.getConstant(Bits, DL, XLenVT); in lowerBUILD_VECTOR()
2142 Vec = DAG.getNode(ISD::INSERT_VECTOR_ELT, DL, IntegerViaVecVT, Vec, Elt, in lowerBUILD_VECTOR()
2143 DAG.getConstant(IntegerEltIdx, DL, XLenVT)); in lowerBUILD_VECTOR()
2151 Vec = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, VT, Vec, in lowerBUILD_VECTOR()
2152 DAG.getConstant(0, DL, XLenVT)); in lowerBUILD_VECTOR()
2167 SDValue VecZero = DAG.getConstant(0, DL, WideVecVT); in lowerBUILD_VECTOR()
2175 Splat = DAG.getNode(ISD::AND, DL, XLenVT, Splat, in lowerBUILD_VECTOR()
2176 DAG.getConstant(1, DL, XLenVT)); in lowerBUILD_VECTOR()
2177 WideVec = DAG.getSplatBuildVector(WideVecVT, DL, Splat); in lowerBUILD_VECTOR()
2180 WideVec = DAG.getBuildVector(WideVecVT, DL, Ops); in lowerBUILD_VECTOR()
2181 SDValue VecOne = DAG.getConstant(1, DL, WideVecVT); in lowerBUILD_VECTOR()
2182 WideVec = DAG.getNode(ISD::AND, DL, WideVecVT, WideVec, VecOne); in lowerBUILD_VECTOR()
2185 return DAG.getSetCC(DL, VT, WideVec, VecZero, ISD::SETNE); in lowerBUILD_VECTOR()
2189 if (auto Gather = matchSplatAsGather(Splat, VT, DL, DAG, Subtarget)) in lowerBUILD_VECTOR()
2194 DAG.getNode(Opc, DL, ContainerVT, DAG.getUNDEF(ContainerVT), Splat, VL); in lowerBUILD_VECTOR()
2226 SDValue VID = DAG.getNode(RISCVISD::VID_VL, DL, ContainerVT, Mask, VL); in lowerBUILD_VECTOR()
2235 VT, DL, DAG.getConstant(SplatStepVal, DL, XLenVT)); in lowerBUILD_VECTOR()
2236 VID = DAG.getNode(StepOpcode, DL, VT, VID, SplatStep); in lowerBUILD_VECTOR()
2240 VT, DL, DAG.getConstant(Log2_64(StepDenominator), DL, XLenVT)); in lowerBUILD_VECTOR()
2241 VID = DAG.getNode(ISD::SRL, DL, VT, VID, SplatStep); in lowerBUILD_VECTOR()
2245 VT, DL, DAG.getConstant(Addend, DL, XLenVT)); in lowerBUILD_VECTOR()
2246 VID = DAG.getNode(Negate ? ISD::SUB : ISD::ADD, DL, VT, SplatAddend, VID); in lowerBUILD_VECTOR()
2298 DAG.getConstant(ViaVecVT.getVectorNumElements(), DL, XLenVT); in lowerBUILD_VECTOR()
2302 DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ViaContainerVT, in lowerBUILD_VECTOR()
2304 DAG.getConstant(SplatValue, DL, XLenVT), ViaVL); in lowerBUILD_VECTOR()
2360 SDValue Vec = DAG.getSplatBuildVector(VT, DL, DominantValue); in lowerBUILD_VECTOR()
2369 Vec = DAG.getNode(ISD::INSERT_VECTOR_ELT, DL, VT, Vec, V, in lowerBUILD_VECTOR()
2370 DAG.getConstant(OpIdx.index(), DL, XLenVT)); in lowerBUILD_VECTOR()
2377 return DAG.getConstant(V == V1, DL, XLenVT); in lowerBUILD_VECTOR()
2379 Vec = DAG.getNode(ISD::VSELECT, DL, VT, in lowerBUILD_VECTOR()
2380 DAG.getBuildVector(SelMaskTy, DL, Ops), in lowerBUILD_VECTOR()
2381 DAG.getSplatBuildVector(VT, DL, V), Vec); in lowerBUILD_VECTOR()
2391 static SDValue splatPartsI64WithVL(const SDLoc &DL, MVT VT, SDValue Passthru, in splatPartsI64WithVL() argument
2402 return DAG.getNode(RISCVISD::VMV_V_X_VL, DL, VT, Passthru, Lo, VL); in splatPartsI64WithVL()
2412 RISCVISD::VMV_V_X_VL, DL, InterVT, DAG.getUNDEF(InterVT), Lo, in splatPartsI64WithVL()
2414 return DAG.getNode(ISD::BITCAST, DL, VT, InterVec); in splatPartsI64WithVL()
2419 return DAG.getNode(RISCVISD::SPLAT_VECTOR_SPLIT_I64_VL, DL, VT, Passthru, Lo, in splatPartsI64WithVL()
2426 static SDValue splatSplitI64WithVL(const SDLoc &DL, MVT VT, SDValue Passthru, in splatSplitI64WithVL() argument
2430 SDValue Lo = DAG.getNode(ISD::EXTRACT_ELEMENT, DL, MVT::i32, Scalar, in splatSplitI64WithVL()
2431 DAG.getConstant(0, DL, MVT::i32)); in splatSplitI64WithVL()
2432 SDValue Hi = DAG.getNode(ISD::EXTRACT_ELEMENT, DL, MVT::i32, Scalar, in splatSplitI64WithVL()
2433 DAG.getConstant(1, DL, MVT::i32)); in splatSplitI64WithVL()
2434 return splatPartsI64WithVL(DL, VT, Passthru, Lo, Hi, VL, DAG); in splatSplitI64WithVL()
2441 MVT VT, SDLoc DL, SelectionDAG &DAG, in lowerScalarSplat() argument
2449 return DAG.getNode(RISCVISD::VFMV_S_F_VL, DL, VT, Passthru, Scalar, VL); in lowerScalarSplat()
2450 return DAG.getNode(RISCVISD::VFMV_V_F_VL, DL, VT, Passthru, Scalar, VL); in lowerScalarSplat()
2463 Scalar = DAG.getNode(ExtOpc, DL, XLenVT, Scalar); in lowerScalarSplat()
2469 return DAG.getNode(RISCVISD::VMV_S_X_VL, DL, VT, Passthru, Scalar, VL); in lowerScalarSplat()
2470 return DAG.getNode(RISCVISD::VMV_V_X_VL, DL, VT, Passthru, Scalar, VL); in lowerScalarSplat()
2477 return DAG.getNode(RISCVISD::VMV_S_X_VL, DL, VT, Passthru, in lowerScalarSplat()
2478 DAG.getConstant(0, DL, XLenVT), VL); in lowerScalarSplat()
2481 return splatSplitI64WithVL(DL, VT, Passthru, Scalar, VL, DAG); in lowerScalarSplat()
2603 SDLoc DL(Op); in lowerVECTOR_SHUFFLE() local
2612 std::tie(TrueMask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget); in lowerVECTOR_SHUFFLE()
2637 TypeSize::Fixed(Offset), DL); in lowerVECTOR_SHUFFLE()
2643 DAG.getTargetConstant(Intrinsic::riscv_vlse, DL, XLenVT); in lowerVECTOR_SHUFFLE()
2651 ISD::INTRINSIC_W_CHAIN, DL, VTs, Ops, SVT, in lowerVECTOR_SHUFFLE()
2662 V = DAG.getLoad(SVT, DL, Ld->getChain(), NewAddr, in lowerVECTOR_SHUFFLE()
2667 V = DAG.getExtLoad(ISD::SEXTLOAD, DL, XLenVT, Ld->getChain(), NewAddr, in lowerVECTOR_SHUFFLE()
2676 DAG.getNode(Opc, DL, ContainerVT, DAG.getUNDEF(ContainerVT), V, VL); in lowerVECTOR_SHUFFLE()
2682 SDValue Gather = DAG.getNode(RISCVISD::VRGATHER_VX_VL, DL, ContainerVT, in lowerVECTOR_SHUFFLE()
2683 V1, DAG.getConstant(Lane, DL, XLenVT), in lowerVECTOR_SHUFFLE()
2718 DownVL = DAG.getConstant(InvRotate, DL, XLenVT); in lowerVECTOR_SHUFFLE()
2720 DAG.getNode(RISCVISD::VSLIDEDOWN_VL, DL, ContainerVT, Res, HiV, in lowerVECTOR_SHUFFLE()
2721 DAG.getConstant(Rotation, DL, XLenVT), TrueMask, DownVL); in lowerVECTOR_SHUFFLE()
2724 Res = DAG.getNode(RISCVISD::VSLIDEUP_VL, DL, ContainerVT, Res, LoV, in lowerVECTOR_SHUFFLE()
2725 DAG.getConstant(InvRotate, DL, XLenVT), TrueMask, VL); in lowerVECTOR_SHUFFLE()
2740 V1 = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, HalfVT, V1, in lowerVECTOR_SHUFFLE()
2741 DAG.getConstant(0, DL, XLenVT)); in lowerVECTOR_SHUFFLE()
2742 V2 = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, HalfVT, V2, in lowerVECTOR_SHUFFLE()
2743 DAG.getConstant(0, DL, XLenVT)); in lowerVECTOR_SHUFFLE()
2774 TrueMask = getAllOnesMask(HalfContainerVT, VL, DL, DAG); in lowerVECTOR_SHUFFLE()
2777 SDValue Add = DAG.getNode(RISCVISD::VWADDU_VL, DL, WideIntContainerVT, V1, in lowerVECTOR_SHUFFLE()
2780 SDValue Multiplier = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, IntHalfVT, in lowerVECTOR_SHUFFLE()
2782 DAG.getAllOnesConstant(DL, XLenVT)); in lowerVECTOR_SHUFFLE()
2783 SDValue WidenMul = DAG.getNode(RISCVISD::VWMULU_VL, DL, WideIntContainerVT, in lowerVECTOR_SHUFFLE()
2788 Add = DAG.getNode(RISCVISD::ADD_VL, DL, WideIntContainerVT, Add, WidenMul, in lowerVECTOR_SHUFFLE()
2831 MaskVals.push_back(DAG.getConstant(SelectMaskVal, DL, XLenVT)); in lowerVECTOR_SHUFFLE()
2835 ? DAG.getConstant(MaskIndex, DL, XLenVT) in lowerVECTOR_SHUFFLE()
2839 : DAG.getConstant(MaskIndex - NumElts, DL, XLenVT)); in lowerVECTOR_SHUFFLE()
2854 SDValue SelectMask = DAG.getBuildVector(MaskVT, DL, MaskVals); in lowerVECTOR_SHUFFLE()
2857 return DAG.getNode(ISD::VSELECT, DL, VT, SelectMask, V1, V2); in lowerVECTOR_SHUFFLE()
2885 Gather = lowerScalarSplat(SDValue(), SplatValue, VL, ContainerVT, DL, DAG, in lowerVECTOR_SHUFFLE()
2894 Gather = DAG.getNode(GatherVXOpc, DL, ContainerVT, V1, in lowerVECTOR_SHUFFLE()
2895 DAG.getConstant(SplatIndex, DL, XLenVT), TrueMask, in lowerVECTOR_SHUFFLE()
2898 SDValue LHSIndices = DAG.getBuildVector(IndexVT, DL, GatherIndicesLHS); in lowerVECTOR_SHUFFLE()
2902 Gather = DAG.getNode(GatherVVOpc, DL, ContainerVT, V1, LHSIndices, in lowerVECTOR_SHUFFLE()
2921 Gather = DAG.getNode(GatherVXOpc, DL, ContainerVT, V2, in lowerVECTOR_SHUFFLE()
2922 DAG.getConstant(SplatIndex, DL, XLenVT), SelectMask, in lowerVECTOR_SHUFFLE()
2925 SDValue RHSIndices = DAG.getBuildVector(IndexVT, DL, GatherIndicesRHS); in lowerVECTOR_SHUFFLE()
2928 Gather = DAG.getNode(GatherVVOpc, DL, ContainerVT, V2, RHSIndices, in lowerVECTOR_SHUFFLE()
2959 SDLoc DL(Op); in lowerCTLZ_CTTZ_ZERO_UNDEF() local
2976 DAG.getNode(ISD::SUB, DL, VT, DAG.getConstant(0, DL, VT), Src); in lowerCTLZ_CTTZ_ZERO_UNDEF()
2977 Src = DAG.getNode(ISD::AND, DL, VT, Src, Neg); in lowerCTLZ_CTTZ_ZERO_UNDEF()
2981 SDValue FloatVal = DAG.getNode(ISD::UINT_TO_FP, DL, FloatVT, Src); in lowerCTLZ_CTTZ_ZERO_UNDEF()
2986 SDValue Shift = DAG.getNode(ISD::SRL, DL, IntVT, Bitcast, in lowerCTLZ_CTTZ_ZERO_UNDEF()
2987 DAG.getConstant(ShiftAmt, DL, IntVT)); in lowerCTLZ_CTTZ_ZERO_UNDEF()
2989 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, DL, VT, Shift); in lowerCTLZ_CTTZ_ZERO_UNDEF()
2995 return DAG.getNode(ISD::SUB, DL, VT, Trunc, in lowerCTLZ_CTTZ_ZERO_UNDEF()
2996 DAG.getConstant(ExponentBias, DL, VT)); in lowerCTLZ_CTTZ_ZERO_UNDEF()
3001 return DAG.getNode(ISD::SUB, DL, VT, DAG.getConstant(Adjust, DL, VT), Trunc); in lowerCTLZ_CTTZ_ZERO_UNDEF()
3018 SDLoc DL(Op); in expandUnalignedRVVLoad() local
3027 SDValue L = DAG.getLoad(NewVT, DL, Load->getChain(), Load->getBasePtr(), in expandUnalignedRVVLoad()
3030 return DAG.getMergeValues({DAG.getBitcast(VT, L), L.getValue(1)}, DL); in expandUnalignedRVVLoad()
3048 SDLoc DL(Op); in expandUnalignedRVVStore() local
3059 return DAG.getStore(Store->getChain(), DL, StoredVal, Store->getBasePtr(), in expandUnalignedRVVStore()
3124 SDLoc DL(Op); in LowerOperation() local
3130 SDValue NewOp0 = DAG.getNode(ISD::ANY_EXTEND, DL, XLenVT, Op0); in LowerOperation()
3131 SDValue FPConv = DAG.getNode(RISCVISD::FMV_H_X, DL, MVT::f16, NewOp0); in LowerOperation()
3136 SDValue NewOp0 = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, Op0); in LowerOperation()
3138 DAG.getNode(RISCVISD::FMV_W_X_RV64, DL, MVT::f32, NewOp0); in LowerOperation()
3165 return DAG.getBitcast(VT, DAG.getNode(ISD::INSERT_VECTOR_ELT, DL, BVT, in LowerOperation()
3167 DAG.getConstant(0, DL, XLenVT))); in LowerOperation()
3179 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT, BVec, in LowerOperation()
3180 DAG.getConstant(0, DL, XLenVT)); in LowerOperation()
3193 SDLoc DL(Op); in LowerOperation() local
3201 return DAG.getNode(RISCVISD::GREV, DL, VT, Op.getOperand(0), in LowerOperation()
3202 DAG.getConstant(Imm, DL, VT)); in LowerOperation()
3207 SDValue BSwap = DAG.getNode(ISD::BSWAP, DL, VT, Op.getOperand(0)); in LowerOperation()
3210 return DAG.getNode(RISCVISD::GREV, DL, VT, BSwap, in LowerOperation()
3211 DAG.getConstant(7, DL, VT)); in LowerOperation()
3217 SDLoc DL(Op); in LowerOperation() local
3222 SDValue ShAmt = DAG.getNode(ISD::AND, DL, VT, Op.getOperand(2), in LowerOperation()
3223 DAG.getConstant(ShAmtWidth, DL, VT)); in LowerOperation()
3236 return DAG.getNode(Opc, DL, VT, Op0, Op1, ShAmt); in LowerOperation()
3262 SDLoc DL(Op); in LowerOperation() local
3263 SDValue VLENB = DAG.getNode(RISCVISD::READ_VLENB, DL, VT); in LowerOperation()
3276 return DAG.getNode(ISD::SRL, DL, VT, VLENB, in LowerOperation()
3277 DAG.getConstant(3 - Log2, DL, VT)); in LowerOperation()
3279 return DAG.getNode(ISD::SHL, DL, VT, VLENB, in LowerOperation()
3280 DAG.getConstant(Log2 - 3, DL, VT)); in LowerOperation()
3286 return DAG.getNode(ISD::MUL, DL, VT, VLENB, in LowerOperation()
3287 DAG.getConstant(Val / 8, DL, VT)); in LowerOperation()
3289 SDValue VScale = DAG.getNode(ISD::SRL, DL, VT, VLENB, in LowerOperation()
3290 DAG.getConstant(3, DL, VT)); in LowerOperation()
3291 return DAG.getNode(ISD::MUL, DL, VT, VScale, Op.getOperand(0)); in LowerOperation()
3298 SDLoc DL(Op); in LowerOperation() local
3299 SDValue Op0 = DAG.getNode(ISD::FP_EXTEND, DL, MVT::f32, Op.getOperand(0)); in LowerOperation()
3301 DAG.getNode(ISD::FPOWI, DL, MVT::f32, Op0, Op.getOperand(1)); in LowerOperation()
3302 return DAG.getNode(ISD::FP_ROUND, DL, MVT::f16, Powi, in LowerOperation()
3303 DAG.getIntPtrConstant(0, DL)); in LowerOperation()
3322 SDLoc DL(Op); in LowerOperation() local
3342 SDValue Ext = DAG.getNode(ExtOpcode, DL, IVecVT, Src); in LowerOperation()
3343 return DAG.getNode(Op.getOpcode(), DL, VT, Ext); in LowerOperation()
3350 SDValue FExt = DAG.getFPExtendOrRound(Src, DL, InterimFVT); in LowerOperation()
3351 return DAG.getNode(Op.getOpcode(), DL, VT, FExt); in LowerOperation()
3360 SDValue Int2FP = DAG.getNode(Op.getOpcode(), DL, InterimFVT, Src); in LowerOperation()
3361 return DAG.getFPExtendOrRound(Int2FP, DL, VT); in LowerOperation()
3368 SDValue FP2Int = DAG.getNode(Op.getOpcode(), DL, IVecVT, Src); in LowerOperation()
3369 return DAG.getNode(ISD::TRUNCATE, DL, VT, FP2Int); in LowerOperation()
3408 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget); in LowerOperation()
3411 Src = DAG.getNode(RVVOpc, DL, ContainerVT, Src, Mask, VL); in LowerOperation()
3477 SDLoc DL(Op); in LowerOperation() local
3487 Vec = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, VT, Vec, SubVec, in LowerOperation()
3488 DAG.getIntPtrConstant(OpIdx.index() * NumOpElts, DL)); in LowerOperation()
3675 static SDValue getTargetNode(GlobalAddressSDNode *N, SDLoc DL, EVT Ty, in getTargetNode() argument
3677 return DAG.getTargetGlobalAddress(N->getGlobal(), DL, Ty, 0, Flags); in getTargetNode()
3680 static SDValue getTargetNode(BlockAddressSDNode *N, SDLoc DL, EVT Ty, in getTargetNode() argument
3686 static SDValue getTargetNode(ConstantPoolSDNode *N, SDLoc DL, EVT Ty, in getTargetNode() argument
3692 static SDValue getTargetNode(JumpTableSDNode *N, SDLoc DL, EVT Ty, in getTargetNode() argument
3700 SDLoc DL(N); in getAddr() local
3704 SDValue Addr = getTargetNode(N, DL, Ty, DAG, 0); in getAddr()
3709 return DAG.getNode(RISCVISD::LLA, DL, Ty, Addr); in getAddr()
3721 DAG.getMemIntrinsicNode(RISCVISD::LA, DL, DAG.getVTList(Ty, MVT::Other), in getAddr()
3732 SDValue AddrHi = getTargetNode(N, DL, Ty, DAG, RISCVII::MO_HI); in getAddr()
3733 SDValue AddrLo = getTargetNode(N, DL, Ty, DAG, RISCVII::MO_LO); in getAddr()
3734 SDValue MNHi = DAG.getNode(RISCVISD::HI, DL, Ty, AddrHi); in getAddr()
3735 return DAG.getNode(RISCVISD::ADD_LO, DL, Ty, MNHi, AddrLo); in getAddr()
3741 SDValue Addr = getTargetNode(N, DL, Ty, DAG, 0); in getAddr()
3742 return DAG.getNode(RISCVISD::LLA, DL, Ty, Addr); in getAddr()
3749 SDLoc DL(Op); in lowerGlobalAddress() local
3779 SDLoc DL(N); in getStaticTLSAddr() local
3789 SDValue Addr = DAG.getTargetGlobalAddress(GV, DL, Ty, 0, 0); in getStaticTLSAddr()
3797 RISCVISD::LA_TLS_IE, DL, DAG.getVTList(Ty, MVT::Other), in getStaticTLSAddr()
3802 return DAG.getNode(ISD::ADD, DL, Ty, Load, TPReg); in getStaticTLSAddr()
3810 DAG.getTargetGlobalAddress(GV, DL, Ty, 0, RISCVII::MO_TPREL_HI); in getStaticTLSAddr()
3812 DAG.getTargetGlobalAddress(GV, DL, Ty, 0, RISCVII::MO_TPREL_ADD); in getStaticTLSAddr()
3814 DAG.getTargetGlobalAddress(GV, DL, Ty, 0, RISCVII::MO_TPREL_LO); in getStaticTLSAddr()
3816 SDValue MNHi = DAG.getNode(RISCVISD::HI, DL, Ty, AddrHi); in getStaticTLSAddr()
3819 DAG.getNode(RISCVISD::ADD_TPREL, DL, Ty, MNHi, TPReg, AddrAdd); in getStaticTLSAddr()
3820 return DAG.getNode(RISCVISD::ADD_LO, DL, Ty, MNAdd, AddrLo); in getStaticTLSAddr()
3825 SDLoc DL(N); in getDynamicTLSAddr() local
3833 SDValue Addr = DAG.getTargetGlobalAddress(GV, DL, Ty, 0, 0); in getDynamicTLSAddr()
3834 SDValue Load = DAG.getNode(RISCVISD::LA_TLS_GD, DL, Ty, Addr); in getDynamicTLSAddr()
3845 CLI.setDebugLoc(DL) in getDynamicTLSAddr()
3856 SDLoc DL(Op); in lowerGlobalTLSAddress() local
3887 SDLoc DL(Op); in lowerSELECT() local
3895 ? DAG.getSplatVector(SplatCondVT, DL, CondV) in lowerSELECT()
3896 : DAG.getSplatBuildVector(SplatCondVT, DL, CondV); in lowerSELECT()
3897 return DAG.getNode(ISD::VSELECT, DL, VT, CondSplat, TrueV, FalseV); in lowerSELECT()
3925 return DAG.getNode(ISD::ADD, DL, Op.getValueType(), CondV, FalseV); in lowerSELECT()
3927 return DAG.getNode(ISD::SUB, DL, Op.getValueType(), FalseV, CondV); in lowerSELECT()
3930 translateSetCCForBranch(DL, LHS, RHS, CCVal, DAG); in lowerSELECT()
3934 return DAG.getNode(RISCVISD::SELECT_CC, DL, Op.getValueType(), Ops); in lowerSELECT()
3940 SDValue Zero = DAG.getConstant(0, DL, XLenVT); in lowerSELECT()
3945 return DAG.getNode(RISCVISD::SELECT_CC, DL, Op.getValueType(), Ops); in lowerSELECT()
3950 SDLoc DL(Op); in lowerBRCOND() local
3959 translateSetCCForBranch(DL, LHS, RHS, CCVal, DAG); in lowerBRCOND()
3962 return DAG.getNode(RISCVISD::BR_CC, DL, Op.getValueType(), Op.getOperand(0), in lowerBRCOND()
3966 return DAG.getNode(RISCVISD::BR_CC, DL, Op.getValueType(), Op.getOperand(0), in lowerBRCOND()
3967 CondV, DAG.getConstant(0, DL, XLenVT), in lowerBRCOND()
3975 SDLoc DL(Op); in lowerVASTART() local
3982 return DAG.getStore(Op.getOperand(0), DL, FI, Op.getOperand(1), in lowerVASTART()
3996 SDLoc DL(Op); in lowerFRAMEADDR() local
3997 SDValue FrameAddr = DAG.getCopyFromReg(DAG.getEntryNode(), DL, FrameReg, VT); in lowerFRAMEADDR()
4001 SDValue Ptr = DAG.getNode(ISD::ADD, DL, VT, FrameAddr, in lowerFRAMEADDR()
4002 DAG.getIntPtrConstant(Offset, DL)); in lowerFRAMEADDR()
4004 DAG.getLoad(VT, DL, DAG.getEntryNode(), Ptr, MachinePointerInfo()); in lowerFRAMEADDR()
4022 SDLoc DL(Op); in lowerRETURNADDR() local
4027 SDValue Offset = DAG.getConstant(Off, DL, VT); in lowerRETURNADDR()
4028 return DAG.getLoad(VT, DL, DAG.getEntryNode(), in lowerRETURNADDR()
4029 DAG.getNode(ISD::ADD, DL, VT, FrameAddr, Offset), in lowerRETURNADDR()
4036 return DAG.getCopyFromReg(DAG.getEntryNode(), DL, Reg, XLenVT); in lowerRETURNADDR()
4041 SDLoc DL(Op); in lowerShiftLeftParts() local
4054 SDValue Zero = DAG.getConstant(0, DL, VT); in lowerShiftLeftParts()
4055 SDValue One = DAG.getConstant(1, DL, VT); in lowerShiftLeftParts()
4056 SDValue MinusXLen = DAG.getConstant(-(int)Subtarget.getXLen(), DL, VT); in lowerShiftLeftParts()
4057 SDValue XLenMinus1 = DAG.getConstant(Subtarget.getXLen() - 1, DL, VT); in lowerShiftLeftParts()
4058 SDValue ShamtMinusXLen = DAG.getNode(ISD::ADD, DL, VT, Shamt, MinusXLen); in lowerShiftLeftParts()
4059 SDValue XLenMinus1Shamt = DAG.getNode(ISD::XOR, DL, VT, Shamt, XLenMinus1); in lowerShiftLeftParts()
4061 SDValue LoTrue = DAG.getNode(ISD::SHL, DL, VT, Lo, Shamt); in lowerShiftLeftParts()
4062 SDValue ShiftRight1Lo = DAG.getNode(ISD::SRL, DL, VT, Lo, One); in lowerShiftLeftParts()
4064 DAG.getNode(ISD::SRL, DL, VT, ShiftRight1Lo, XLenMinus1Shamt); in lowerShiftLeftParts()
4065 SDValue ShiftLeftHi = DAG.getNode(ISD::SHL, DL, VT, Hi, Shamt); in lowerShiftLeftParts()
4066 SDValue HiTrue = DAG.getNode(ISD::OR, DL, VT, ShiftLeftHi, ShiftRightLo); in lowerShiftLeftParts()
4067 SDValue HiFalse = DAG.getNode(ISD::SHL, DL, VT, Lo, ShamtMinusXLen); in lowerShiftLeftParts()
4069 SDValue CC = DAG.getSetCC(DL, VT, ShamtMinusXLen, Zero, ISD::SETLT); in lowerShiftLeftParts()
4071 Lo = DAG.getNode(ISD::SELECT, DL, VT, CC, LoTrue, Zero); in lowerShiftLeftParts()
4072 Hi = DAG.getNode(ISD::SELECT, DL, VT, CC, HiTrue, HiFalse); in lowerShiftLeftParts()
4075 return DAG.getMergeValues(Parts, DL); in lowerShiftLeftParts()
4080 SDLoc DL(Op); in lowerShiftRightParts() local
4104 SDValue Zero = DAG.getConstant(0, DL, VT); in lowerShiftRightParts()
4105 SDValue One = DAG.getConstant(1, DL, VT); in lowerShiftRightParts()
4106 SDValue MinusXLen = DAG.getConstant(-(int)Subtarget.getXLen(), DL, VT); in lowerShiftRightParts()
4107 SDValue XLenMinus1 = DAG.getConstant(Subtarget.getXLen() - 1, DL, VT); in lowerShiftRightParts()
4108 SDValue ShamtMinusXLen = DAG.getNode(ISD::ADD, DL, VT, Shamt, MinusXLen); in lowerShiftRightParts()
4109 SDValue XLenMinus1Shamt = DAG.getNode(ISD::XOR, DL, VT, Shamt, XLenMinus1); in lowerShiftRightParts()
4111 SDValue ShiftRightLo = DAG.getNode(ISD::SRL, DL, VT, Lo, Shamt); in lowerShiftRightParts()
4112 SDValue ShiftLeftHi1 = DAG.getNode(ISD::SHL, DL, VT, Hi, One); in lowerShiftRightParts()
4114 DAG.getNode(ISD::SHL, DL, VT, ShiftLeftHi1, XLenMinus1Shamt); in lowerShiftRightParts()
4115 SDValue LoTrue = DAG.getNode(ISD::OR, DL, VT, ShiftRightLo, ShiftLeftHi); in lowerShiftRightParts()
4116 SDValue HiTrue = DAG.getNode(ShiftRightOp, DL, VT, Hi, Shamt); in lowerShiftRightParts()
4117 SDValue LoFalse = DAG.getNode(ShiftRightOp, DL, VT, Hi, ShamtMinusXLen); in lowerShiftRightParts()
4119 IsSRA ? DAG.getNode(ISD::SRA, DL, VT, Hi, XLenMinus1) : Zero; in lowerShiftRightParts()
4121 SDValue CC = DAG.getSetCC(DL, VT, ShamtMinusXLen, Zero, ISD::SETLT); in lowerShiftRightParts()
4123 Lo = DAG.getNode(ISD::SELECT, DL, VT, CC, LoTrue, LoFalse); in lowerShiftRightParts()
4124 Hi = DAG.getNode(ISD::SELECT, DL, VT, CC, HiTrue, HiFalse); in lowerShiftRightParts()
4127 return DAG.getMergeValues(Parts, DL); in lowerShiftRightParts()
4134 SDLoc DL(Op); in lowerVectorMaskSplat() local
4139 SDValue VL = getDefaultScalableVLOps(VT, DL, DAG, Subtarget).second; in lowerVectorMaskSplat()
4140 return DAG.getNode(RISCVISD::VMSET_VL, DL, VT, VL); in lowerVectorMaskSplat()
4143 SDValue VL = getDefaultScalableVLOps(VT, DL, DAG, Subtarget).second; in lowerVectorMaskSplat()
4144 return DAG.getNode(RISCVISD::VMCLR_VL, DL, VT, VL); in lowerVectorMaskSplat()
4150 SplatVal = DAG.getNode(ISD::AND, DL, XLenVT, SplatVal, in lowerVectorMaskSplat()
4151 DAG.getConstant(1, DL, XLenVT)); in lowerVectorMaskSplat()
4152 SDValue LHS = DAG.getSplatVector(InterVT, DL, SplatVal); in lowerVectorMaskSplat()
4153 SDValue Zero = DAG.getConstant(0, DL, InterVT); in lowerVectorMaskSplat()
4154 return DAG.getSetCC(DL, VT, LHS, Zero, ISD::SETNE); in lowerVectorMaskSplat()
4163 SDLoc DL(Op); in lowerSPLAT_VECTOR_PARTS() local
4174 SDLoc DL(Op); in lowerSPLAT_VECTOR_PARTS() local
4177 getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget); in lowerSPLAT_VECTOR_PARTS()
4180 splatPartsI64WithVL(DL, ContainerVT, SDValue(), Lo, Hi, VL, DAG); in lowerSPLAT_VECTOR_PARTS()
4190 return DAG.getNode(RISCVISD::VMV_V_X_VL, DL, VecVT, DAG.getUNDEF(VecVT), in lowerSPLAT_VECTOR_PARTS()
4198 return DAG.getNode(RISCVISD::VMV_V_X_VL, DL, VecVT, DAG.getUNDEF(VecVT), Lo, in lowerSPLAT_VECTOR_PARTS()
4202 return DAG.getNode(RISCVISD::SPLAT_VECTOR_SPLIT_I64_VL, DL, VecVT, in lowerSPLAT_VECTOR_PARTS()
4213 SDLoc DL(Op); in lowerVectorMaskExt() local
4221 SDValue SplatZero = DAG.getConstant(0, DL, VecVT); in lowerVectorMaskExt()
4222 SDValue SplatTrueVal = DAG.getConstant(ExtTrueVal, DL, VecVT); in lowerVectorMaskExt()
4223 return DAG.getNode(ISD::VSELECT, DL, VecVT, Src, SplatTrueVal, SplatZero); in lowerVectorMaskExt()
4233 std::tie(Mask, VL) = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget); in lowerVectorMaskExt()
4236 SDValue SplatZero = DAG.getConstant(0, DL, XLenVT); in lowerVectorMaskExt()
4237 SDValue SplatTrueVal = DAG.getConstant(ExtTrueVal, DL, XLenVT); in lowerVectorMaskExt()
4239 SplatZero = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT, in lowerVectorMaskExt()
4241 SplatTrueVal = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT, in lowerVectorMaskExt()
4243 SDValue Select = DAG.getNode(RISCVISD::VSELECT_VL, DL, ContainerVT, CC, in lowerVectorMaskExt()
4268 SDLoc DL(Op); in lowerFixedLengthVectorExtendToRVV() local
4270 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget); in lowerFixedLengthVectorExtendToRVV()
4272 SDValue Ext = DAG.getNode(ExtendOpc, DL, ContainerExtVT, Op1, Mask, VL); in lowerFixedLengthVectorExtendToRVV()
4283 SDLoc DL(Op); in lowerVectorMaskTruncLike() local
4310 getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget); in lowerVectorMaskTruncLike()
4313 SDValue SplatOne = DAG.getConstant(1, DL, Subtarget.getXLenVT()); in lowerVectorMaskTruncLike()
4314 SDValue SplatZero = DAG.getConstant(0, DL, Subtarget.getXLenVT()); in lowerVectorMaskTruncLike()
4316 SplatOne = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT, in lowerVectorMaskTruncLike()
4318 SplatZero = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT, in lowerVectorMaskTruncLike()
4323 DAG.getNode(RISCVISD::AND_VL, DL, ContainerVT, Src, SplatOne, Mask, VL); in lowerVectorMaskTruncLike()
4324 Trunc = DAG.getNode(RISCVISD::SETCC_VL, DL, MaskContainerVT, Trunc, SplatZero, in lowerVectorMaskTruncLike()
4334 SDLoc DL(Op); in lowerVectorTruncLike() local
4375 getDefaultVLOps(SrcVT, ContainerVT, DL, DAG, Subtarget); in lowerVectorTruncLike()
4383 Result = DAG.getNode(RISCVISD::TRUNCATE_VECTOR_VL, DL, ResultVT, Result, in lowerVectorTruncLike()
4403 SDLoc DL(Op); in lowerVectorFPExtendOrRoundLike() local
4438 getDefaultVLOps(SrcVT, ContainerVT, DL, DAG, Subtarget); in lowerVectorFPExtendOrRoundLike()
4443 Src = DAG.getNode(ConvOpc, DL, ContainerVT, Src, Mask, VL); in lowerVectorFPExtendOrRoundLike()
4454 DAG.getNode(InterConvOpc, DL, InterVT, Src, Mask, VL); in lowerVectorFPExtendOrRoundLike()
4456 DAG.getNode(ConvOpc, DL, ContainerVT, IntermediateConv, Mask, VL); in lowerVectorFPExtendOrRoundLike()
4470 SDLoc DL(Op); in lowerINSERT_VECTOR_ELT() local
4480 Vec = DAG.getNode(ISD::ZERO_EXTEND, DL, WideVT, Vec); in lowerINSERT_VECTOR_ELT()
4481 Vec = DAG.getNode(ISD::INSERT_VECTOR_ELT, DL, WideVT, Vec, Val, Idx); in lowerINSERT_VECTOR_ELT()
4482 return DAG.getNode(ISD::TRUNCATE, DL, VecVT, Vec); in lowerINSERT_VECTOR_ELT()
4494 SDValue Zero = DAG.getConstant(0, DL, XLenVT); in lowerINSERT_VECTOR_ELT()
4504 Val = DAG.getConstant(CVal->getSExtValue(), DL, MVT::i32); in lowerINSERT_VECTOR_ELT()
4509 std::tie(Mask, VL) = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget); in lowerINSERT_VECTOR_ELT()
4517 Vec = DAG.getNode(Opc, DL, ContainerVT, Vec, Val, VL); in lowerINSERT_VECTOR_ELT()
4523 DAG.getNode(Opc, DL, ContainerVT, DAG.getUNDEF(ContainerVT), Val, VL); in lowerINSERT_VECTOR_ELT()
4529 SDValue One = DAG.getConstant(1, DL, XLenVT); in lowerINSERT_VECTOR_ELT()
4530 SDValue ValLo = DAG.getNode(ISD::EXTRACT_ELEMENT, DL, MVT::i32, Val, Zero); in lowerINSERT_VECTOR_ELT()
4531 SDValue ValHi = DAG.getNode(ISD::EXTRACT_ELEMENT, DL, MVT::i32, Val, One); in lowerINSERT_VECTOR_ELT()
4535 getDefaultScalableVLOps(I32ContainerVT, DL, DAG, Subtarget).first; in lowerINSERT_VECTOR_ELT()
4537 SDValue InsertI64VL = DAG.getConstant(2, DL, XLenVT); in lowerINSERT_VECTOR_ELT()
4540 ValInVec = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, I32ContainerVT, in lowerINSERT_VECTOR_ELT()
4543 ValInVec = DAG.getNode(RISCVISD::VSLIDE1UP_VL, DL, I32ContainerVT, in lowerINSERT_VECTOR_ELT()
4546 ValInVec = DAG.getNode(RISCVISD::VSLIDE1UP_VL, DL, I32ContainerVT, in lowerINSERT_VECTOR_ELT()
4555 DAG.getNode(ISD::ADD, DL, XLenVT, Idx, DAG.getConstant(1, DL, XLenVT)); in lowerINSERT_VECTOR_ELT()
4556 SDValue Slideup = DAG.getNode(RISCVISD::VSLIDEUP_VL, DL, ContainerVT, Vec, in lowerINSERT_VECTOR_ELT()
4569 SDLoc DL(Op); in lowerEXTRACT_VECTOR_ELT() local
4592 ExtractElementIdx = DAG.getConstant(0, DL, XLenVT); in lowerEXTRACT_VECTOR_ELT()
4599 ISD::SRL, DL, XLenVT, Idx, in lowerEXTRACT_VECTOR_ELT()
4600 DAG.getConstant(Log2_64(WideEltVT.getSizeInBits()), DL, XLenVT)); in lowerEXTRACT_VECTOR_ELT()
4603 ISD::AND, DL, XLenVT, Idx, in lowerEXTRACT_VECTOR_ELT()
4604 DAG.getConstant(WideEltVT.getSizeInBits() - 1, DL, XLenVT)); in lowerEXTRACT_VECTOR_ELT()
4607 Vec = DAG.getNode(ISD::BITCAST, DL, WideVT, Vec); in lowerEXTRACT_VECTOR_ELT()
4608 SDValue ExtractElt = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, XLenVT, in lowerEXTRACT_VECTOR_ELT()
4612 DAG.getNode(ISD::SRL, DL, XLenVT, ExtractElt, ExtractBitIdx); in lowerEXTRACT_VECTOR_ELT()
4613 return DAG.getNode(ISD::AND, DL, XLenVT, ShiftRight, in lowerEXTRACT_VECTOR_ELT()
4614 DAG.getConstant(1, DL, XLenVT)); in lowerEXTRACT_VECTOR_ELT()
4619 Vec = DAG.getNode(ISD::ZERO_EXTEND, DL, WideVT, Vec); in lowerEXTRACT_VECTOR_ELT()
4620 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, EltVT, Vec, Idx); in lowerEXTRACT_VECTOR_ELT()
4633 SDValue VL = DAG.getConstant(1, DL, XLenVT); in lowerEXTRACT_VECTOR_ELT()
4634 SDValue Mask = getAllOnesMask(ContainerVT, VL, DL, DAG); in lowerEXTRACT_VECTOR_ELT()
4635 Vec = DAG.getNode(RISCVISD::VSLIDEDOWN_VL, DL, ContainerVT, in lowerEXTRACT_VECTOR_ELT()
4641 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, EltVT, Vec, in lowerEXTRACT_VECTOR_ELT()
4642 DAG.getConstant(0, DL, XLenVT)); in lowerEXTRACT_VECTOR_ELT()
4645 SDValue Elt0 = DAG.getNode(RISCVISD::VMV_X_S, DL, XLenVT, Vec); in lowerEXTRACT_VECTOR_ELT()
4646 return DAG.getNode(ISD::TRUNCATE, DL, EltVT, Elt0); in lowerEXTRACT_VECTOR_ELT()
4662 SDLoc DL(Op); in lowerVectorIntrinsicScalars() local
4689 ScalarOp = DAG.getNode(ExtOpc, DL, XLenVT, ScalarOp); in lowerVectorIntrinsicScalars()
4690 return DAG.getNode(Op->getOpcode(), DL, Op->getVTList(), Operands); in lowerVectorIntrinsicScalars()
4709 ScalarOp = DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, ScalarOp); in lowerVectorIntrinsicScalars()
4710 return DAG.getNode(Op->getOpcode(), DL, Op->getVTList(), Operands); in lowerVectorIntrinsicScalars()
4726 SDValue ScalarLo = DAG.getNode(ISD::EXTRACT_ELEMENT, DL, MVT::i32, ScalarOp, in lowerVectorIntrinsicScalars()
4727 DAG.getConstant(0, DL, XLenVT)); in lowerVectorIntrinsicScalars()
4728 SDValue ScalarHi = DAG.getNode(ISD::EXTRACT_ELEMENT, DL, MVT::i32, ScalarOp, in lowerVectorIntrinsicScalars()
4729 DAG.getConstant(1, DL, XLenVT)); in lowerVectorIntrinsicScalars()
4750 I32VL = DAG.getConstant(2 * AVLInt, DL, XLenVT); in lowerVectorIntrinsicScalars()
4754 SDValue LMUL = DAG.getConstant(Lmul, DL, XLenVT); in lowerVectorIntrinsicScalars()
4756 SDValue SEW = DAG.getConstant(Sew, DL, XLenVT); in lowerVectorIntrinsicScalars()
4758 Intrinsic::riscv_vsetvlimax_opt, DL, MVT::i32); in lowerVectorIntrinsicScalars()
4759 I32VL = DAG.getNode(ISD::INTRINSIC_WO_CHAIN, DL, XLenVT, SETVLMAX, SEW, in lowerVectorIntrinsicScalars()
4769 SDValue LMUL = DAG.getConstant(Lmul, DL, XLenVT); in lowerVectorIntrinsicScalars()
4771 SDValue SEW = DAG.getConstant(Sew, DL, XLenVT); in lowerVectorIntrinsicScalars()
4773 DAG.getTargetConstant(Intrinsic::riscv_vsetvli_opt, DL, MVT::i32); in lowerVectorIntrinsicScalars()
4776 SDValue VL = DAG.getNode(ISD::INTRINSIC_WO_CHAIN, DL, XLenVT, SETVL, AVL, in lowerVectorIntrinsicScalars()
4779 DAG.getNode(ISD::SHL, DL, XLenVT, VL, DAG.getConstant(1, DL, XLenVT)); in lowerVectorIntrinsicScalars()
4782 SDValue I32Mask = getAllOnesMask(I32VT, I32VL, DL, DAG); in lowerVectorIntrinsicScalars()
4794 Vec = DAG.getNode(RISCVISD::VSLIDE1UP_VL, DL, I32VT, Passthru, Vec, in lowerVectorIntrinsicScalars()
4796 Vec = DAG.getNode(RISCVISD::VSLIDE1UP_VL, DL, I32VT, Passthru, Vec, in lowerVectorIntrinsicScalars()
4799 Vec = DAG.getNode(RISCVISD::VSLIDE1DOWN_VL, DL, I32VT, Passthru, Vec, in lowerVectorIntrinsicScalars()
4801 Vec = DAG.getNode(RISCVISD::VSLIDE1DOWN_VL, DL, I32VT, Passthru, Vec, in lowerVectorIntrinsicScalars()
4821 return DAG.getNode(RISCVISD::VSELECT_VL, DL, VT, Mask, Vec, MaskedOff, in lowerVectorIntrinsicScalars()
4825 return DAG.getNode(RISCVISD::VP_MERGE_VL, DL, VT, Mask, Vec, MaskedOff, in lowerVectorIntrinsicScalars()
4833 ScalarOp = splatSplitI64WithVL(DL, VT, SDValue(), ScalarOp, VL, DAG); in lowerVectorIntrinsicScalars()
4834 return DAG.getNode(Op->getOpcode(), DL, Op->getVTList(), Operands); in lowerVectorIntrinsicScalars()
4840 SDLoc DL(Op); in LowerINTRINSIC_WO_CHAIN() local
4855 return DAG.getNode(Opc, DL, XLenVT, Op.getOperand(1), in LowerINTRINSIC_WO_CHAIN()
4856 DAG.getConstant(7, DL, XLenVT)); in LowerINTRINSIC_WO_CHAIN()
4862 return DAG.getNode(Opc, DL, XLenVT, Op.getOperand(1), Op.getOperand(2)); in LowerINTRINSIC_WO_CHAIN()
4872 return DAG.getNode(Opc, DL, XLenVT, Op.getOperand(1), in LowerINTRINSIC_WO_CHAIN()
4873 DAG.getConstant((BitWidth / 2) - 1, DL, XLenVT)); in LowerINTRINSIC_WO_CHAIN()
4879 return DAG.getNode(Opc, DL, XLenVT, Op.getOperand(1), Op.getOperand(2)); in LowerINTRINSIC_WO_CHAIN()
4885 return DAG.getNode(Opc, DL, XLenVT, Op.getOperand(1), Op.getOperand(2)); in LowerINTRINSIC_WO_CHAIN()
4888 return DAG.getNode(RISCVISD::BFP, DL, XLenVT, Op.getOperand(1), in LowerINTRINSIC_WO_CHAIN()
4891 return DAG.getNode(RISCVISD::FSL, DL, XLenVT, Op.getOperand(1), in LowerINTRINSIC_WO_CHAIN()
4894 return DAG.getNode(RISCVISD::FSR, DL, XLenVT, Op.getOperand(1), in LowerINTRINSIC_WO_CHAIN()
4898 return DAG.getNode(RISCVISD::VMV_X_S, DL, Op.getValueType(), in LowerINTRINSIC_WO_CHAIN()
4902 Op.getOperand(3), Op.getSimpleValueType(), DL, DAG, in LowerINTRINSIC_WO_CHAIN()
4905 return DAG.getNode(RISCVISD::VFMV_V_F_VL, DL, Op.getValueType(), in LowerINTRINSIC_WO_CHAIN()
4911 Scalar = DAG.getNode(ISD::ANY_EXTEND, DL, XLenVT, Scalar); in LowerINTRINSIC_WO_CHAIN()
4912 return DAG.getNode(RISCVISD::VMV_S_X_VL, DL, Op.getValueType(), in LowerINTRINSIC_WO_CHAIN()
4937 SDValue SplattedVal = splatSplitI64WithVL(DL, VT, SDValue(), Scalar, VL, DAG); in LowerINTRINSIC_WO_CHAIN()
4941 DAG.getNode(RISCVISD::VMV_V_X_VL, DL, VT, DAG.getUNDEF(VT), in LowerINTRINSIC_WO_CHAIN()
4942 DAG.getConstant(0, DL, MVT::i32), VL); in LowerINTRINSIC_WO_CHAIN()
4945 SDValue Mask = getAllOnesMask(VT, VL, DL, DAG); in LowerINTRINSIC_WO_CHAIN()
4946 SDValue VID = DAG.getNode(RISCVISD::VID_VL, DL, VT, Mask, VL); in LowerINTRINSIC_WO_CHAIN()
4948 DAG.getNode(RISCVISD::SETCC_VL, DL, MaskVT, VID, SplattedIdx, in LowerINTRINSIC_WO_CHAIN()
4950 return DAG.getNode(RISCVISD::VSELECT_VL, DL, VT, SelectCond, SplattedVal, in LowerINTRINSIC_WO_CHAIN()
4965 SDLoc DL(Op); in LowerINTRINSIC_W_CHAIN() local
4983 SDValue VL = DAG.getConstant(VT.getVectorNumElements(), DL, XLenVT); in LowerINTRINSIC_W_CHAIN()
4986 IsUnmasked ? Intrinsic::riscv_vlse : Intrinsic::riscv_vlse_mask, DL, in LowerINTRINSIC_W_CHAIN()
5001 SDValue Policy = DAG.getTargetConstant(RISCVII::TAIL_AGNOSTIC, DL, XLenVT); in LowerINTRINSIC_W_CHAIN()
5007 DAG.getMemIntrinsicNode(ISD::INTRINSIC_W_CHAIN, DL, VTs, Ops, in LowerINTRINSIC_W_CHAIN()
5011 return DAG.getMergeValues({Result, Chain}, DL); in LowerINTRINSIC_W_CHAIN()
5020 SDLoc DL(Op); in LowerINTRINSIC_W_CHAIN() local
5032 SDValue VL = DAG.getConstant(VT.getVectorNumElements(), DL, XLenVT); in LowerINTRINSIC_W_CHAIN()
5033 SDValue IntID = DAG.getTargetConstant(VlsegInts[NF - 2], DL, XLenVT); in LowerINTRINSIC_W_CHAIN()
5043 DAG.getMemIntrinsicNode(ISD::INTRINSIC_W_CHAIN, DL, VTs, Ops, in LowerINTRINSIC_W_CHAIN()
5050 return DAG.getMergeValues(Results, DL); in LowerINTRINSIC_W_CHAIN()
5064 SDLoc DL(Op); in LowerINTRINSIC_VOID() local
5082 SDValue VL = DAG.getConstant(VT.getVectorNumElements(), DL, XLenVT); in LowerINTRINSIC_VOID()
5085 IsUnmasked ? Intrinsic::riscv_vsse : Intrinsic::riscv_vsse_mask, DL, in LowerINTRINSIC_VOID()
5097 return DAG.getMemIntrinsicNode(ISD::INTRINSIC_VOID, DL, Store->getVTList(), in LowerINTRINSIC_VOID()
5140 SDLoc DL(Op); in lowerVectorMaskVecReduction() local
5167 getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget); in lowerVectorMaskVecReduction()
5172 SDValue Zero = DAG.getConstant(0, DL, XLenVT); in lowerVectorMaskVecReduction()
5180 SDValue TrueMask = DAG.getNode(RISCVISD::VMSET_VL, DL, ContainerVT, VL); in lowerVectorMaskVecReduction()
5181 Vec = DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Vec, TrueMask, VL); in lowerVectorMaskVecReduction()
5182 Vec = DAG.getNode(RISCVISD::VCPOP_VL, DL, XLenVT, Vec, Mask, VL); in lowerVectorMaskVecReduction()
5190 Vec = DAG.getNode(RISCVISD::VCPOP_VL, DL, XLenVT, Vec, Mask, VL); in lowerVectorMaskVecReduction()
5197 SDValue One = DAG.getConstant(1, DL, XLenVT); in lowerVectorMaskVecReduction()
5198 Vec = DAG.getNode(RISCVISD::VCPOP_VL, DL, XLenVT, Vec, Mask, VL); in lowerVectorMaskVecReduction()
5199 Vec = DAG.getNode(ISD::AND, DL, XLenVT, Vec, One); in lowerVectorMaskVecReduction()
5206 SDValue SetCC = DAG.getSetCC(DL, XLenVT, Vec, Zero, CC); in lowerVectorMaskVecReduction()
5217 return DAG.getNode(BaseOpc, DL, XLenVT, SetCC, Op.getOperand(0)); in lowerVectorMaskVecReduction()
5222 SDLoc DL(Op); in lowerVECREDUCE() local
5233 std::tie(Lo, Hi) = DAG.SplitVector(Vec, DL); in lowerVECREDUCE()
5235 Vec = DAG.getNode(BaseOpc, DL, VecEVT, Lo, Hi); in lowerVECREDUCE()
5257 std::tie(Mask, VL) = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget); in lowerVECREDUCE()
5260 DAG.getNeutralElement(BaseOpc, DL, VecEltVT, SDNodeFlags()); in lowerVECREDUCE()
5262 lowerScalarSplat(SDValue(), NeutralElem, DAG.getConstant(1, DL, XLenVT), in lowerVECREDUCE()
5263 M1VT, DL, DAG, Subtarget); in lowerVECREDUCE()
5264 SDValue Reduction = DAG.getNode(RVVOpcode, DL, M1VT, DAG.getUNDEF(M1VT), Vec, in lowerVECREDUCE()
5266 SDValue Elt0 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, VecEltVT, Reduction, in lowerVECREDUCE()
5267 DAG.getConstant(0, DL, XLenVT)); in lowerVECREDUCE()
5268 return DAG.getSExtOrTrunc(Elt0, DL, Op.getValueType()); in lowerVECREDUCE()
5276 SDLoc DL(Op); in getRVVFPReductionOpAndOperands() local
5286 DAG.getConstantFP(Flags.hasNoSignedZeros() ? 0.0 : -0.0, DL, EltVT); in getRVVFPReductionOpAndOperands()
5294 DAG.getNeutralElement(BaseOpcode, DL, EltVT, Flags)); in getRVVFPReductionOpAndOperands()
5297 DAG.getNeutralElement(BaseOpcode, DL, EltVT, Flags)); in getRVVFPReductionOpAndOperands()
5303 SDLoc DL(Op); in lowerFPVECREDUCE() local
5322 std::tie(Mask, VL) = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget); in lowerFPVECREDUCE()
5325 lowerScalarSplat(SDValue(), ScalarVal, DAG.getConstant(1, DL, XLenVT), in lowerFPVECREDUCE()
5326 M1VT, DL, DAG, Subtarget); in lowerFPVECREDUCE()
5327 SDValue Reduction = DAG.getNode(RVVOpcode, DL, M1VT, DAG.getUNDEF(M1VT), in lowerFPVECREDUCE()
5329 return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, VecEltVT, Reduction, in lowerFPVECREDUCE()
5330 DAG.getConstant(0, DL, XLenVT)); in lowerFPVECREDUCE()
5366 SDLoc DL(Op); in lowerVPREDUCE() local
5393 DAG.getConstant(1, DL, XLenVT), M1VT, in lowerVPREDUCE()
5394 DL, DAG, Subtarget); in lowerVPREDUCE()
5396 DAG.getNode(RVVOpcode, DL, M1VT, StartSplat, Vec, StartSplat, Mask, VL); in lowerVPREDUCE()
5397 SDValue Elt0 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, ResVT, Reduction, in lowerVPREDUCE()
5398 DAG.getConstant(0, DL, XLenVT)); in lowerVPREDUCE()
5401 return DAG.getSExtOrTrunc(Elt0, DL, Op.getValueType()); in lowerVPREDUCE()
5411 SDLoc DL(Op); in lowerINSERT_SUBVECTOR() local
5444 Vec = DAG.getNode(ISD::ZERO_EXTEND, DL, ExtVecVT, Vec); in lowerINSERT_SUBVECTOR()
5445 SubVec = DAG.getNode(ISD::ZERO_EXTEND, DL, ExtSubVecVT, SubVec); in lowerINSERT_SUBVECTOR()
5446 Vec = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, ExtVecVT, Vec, SubVec, in lowerINSERT_SUBVECTOR()
5448 SDValue SplatZero = DAG.getConstant(0, DL, ExtVecVT); in lowerINSERT_SUBVECTOR()
5449 return DAG.getSetCC(DL, VecVT, Vec, SplatZero, ISD::SETNE); in lowerINSERT_SUBVECTOR()
5466 SubVec = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, ContainerVT, in lowerINSERT_SUBVECTOR()
5468 DAG.getConstant(0, DL, XLenVT)); in lowerINSERT_SUBVECTOR()
5474 getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget).first; in lowerINSERT_SUBVECTOR()
5478 DAG.getConstant(OrigIdx + SubVecVT.getVectorNumElements(), DL, XLenVT); in lowerINSERT_SUBVECTOR()
5479 SDValue SlideupAmt = DAG.getConstant(OrigIdx, DL, XLenVT); in lowerINSERT_SUBVECTOR()
5480 SDValue Slideup = DAG.getNode(RISCVISD::VSLIDEUP_VL, DL, ContainerVT, Vec, in lowerINSERT_SUBVECTOR()
5524 AlignedExtract = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, InterSubVT, Vec, in lowerINSERT_SUBVECTOR()
5525 DAG.getConstant(AlignedIdx, DL, XLenVT)); in lowerINSERT_SUBVECTOR()
5528 SDValue SlideupAmt = DAG.getConstant(RemIdx, DL, XLenVT); in lowerINSERT_SUBVECTOR()
5530 SlideupAmt = DAG.getNode(ISD::VSCALE, DL, XLenVT, SlideupAmt); in lowerINSERT_SUBVECTOR()
5533 std::tie(Mask, VL) = getDefaultScalableVLOps(VecVT, DL, DAG, Subtarget); in lowerINSERT_SUBVECTOR()
5536 VL = DAG.getConstant(SubVecVT.getVectorMinNumElements(), DL, XLenVT); in lowerINSERT_SUBVECTOR()
5537 VL = DAG.getNode(ISD::VSCALE, DL, XLenVT, VL); in lowerINSERT_SUBVECTOR()
5538 VL = DAG.getNode(ISD::ADD, DL, XLenVT, SlideupAmt, VL); in lowerINSERT_SUBVECTOR()
5540 SubVec = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, InterSubVT, in lowerINSERT_SUBVECTOR()
5542 DAG.getConstant(0, DL, XLenVT)); in lowerINSERT_SUBVECTOR()
5544 SDValue Slideup = DAG.getNode(RISCVISD::VSLIDEUP_VL, DL, InterSubVT, in lowerINSERT_SUBVECTOR()
5550 Slideup = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, VecVT, Vec, Slideup, in lowerINSERT_SUBVECTOR()
5551 DAG.getConstant(AlignedIdx, DL, XLenVT)); in lowerINSERT_SUBVECTOR()
5564 SDLoc DL(Op); in lowerEXTRACT_SUBVECTOR() local
5598 Vec = DAG.getNode(ISD::ZERO_EXTEND, DL, ExtVecVT, Vec); in lowerEXTRACT_SUBVECTOR()
5599 Vec = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, ExtSubVecVT, Vec, in lowerEXTRACT_SUBVECTOR()
5601 SDValue SplatZero = DAG.getConstant(0, DL, ExtSubVecVT); in lowerEXTRACT_SUBVECTOR()
5602 return DAG.getSetCC(DL, SubVecVT, Vec, SplatZero, ISD::SETNE); in lowerEXTRACT_SUBVECTOR()
5622 getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget).first; in lowerEXTRACT_SUBVECTOR()
5625 SDValue VL = DAG.getConstant(SubVecVT.getVectorNumElements(), DL, XLenVT); in lowerEXTRACT_SUBVECTOR()
5626 SDValue SlidedownAmt = DAG.getConstant(OrigIdx, DL, XLenVT); in lowerEXTRACT_SUBVECTOR()
5628 DAG.getNode(RISCVISD::VSLIDEDOWN_VL, DL, ContainerVT, in lowerEXTRACT_SUBVECTOR()
5631 Slidedown = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, SubVecVT, Slidedown, in lowerEXTRACT_SUBVECTOR()
5632 DAG.getConstant(0, DL, XLenVT)); in lowerEXTRACT_SUBVECTOR()
5656 Vec = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, InterSubVT, Vec, in lowerEXTRACT_SUBVECTOR()
5657 DAG.getConstant(OrigIdx - RemIdx, DL, XLenVT)); in lowerEXTRACT_SUBVECTOR()
5662 SDValue SlidedownAmt = DAG.getConstant(RemIdx, DL, XLenVT); in lowerEXTRACT_SUBVECTOR()
5664 SlidedownAmt = DAG.getNode(ISD::VSCALE, DL, XLenVT, SlidedownAmt); in lowerEXTRACT_SUBVECTOR()
5667 std::tie(Mask, VL) = getDefaultScalableVLOps(InterSubVT, DL, DAG, Subtarget); in lowerEXTRACT_SUBVECTOR()
5669 DAG.getNode(RISCVISD::VSLIDEDOWN_VL, DL, InterSubVT, in lowerEXTRACT_SUBVECTOR()
5674 Slidedown = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, SubVecVT, Slidedown, in lowerEXTRACT_SUBVECTOR()
5675 DAG.getConstant(0, DL, XLenVT)); in lowerEXTRACT_SUBVECTOR()
5686 SDLoc DL(Op); in lowerSTEP_VECTOR() local
5690 std::tie(Mask, VL) = getDefaultScalableVLOps(VT, DL, DAG, Subtarget); in lowerSTEP_VECTOR()
5691 SDValue StepVec = DAG.getNode(RISCVISD::VID_VL, DL, VT, Mask, VL); in lowerSTEP_VECTOR()
5696 DAG.getNode(RISCVISD::VMV_V_X_VL, DL, VT, DAG.getUNDEF(VT), in lowerSTEP_VECTOR()
5697 DAG.getConstant(Log2_64(StepValImm), DL, XLenVT)); in lowerSTEP_VECTOR()
5698 StepVec = DAG.getNode(ISD::SHL, DL, VT, StepVec, StepVal); in lowerSTEP_VECTOR()
5701 SDValue(), DAG.getConstant(StepValImm, DL, VT.getVectorElementType()), in lowerSTEP_VECTOR()
5702 VL, VT, DL, DAG, Subtarget); in lowerSTEP_VECTOR()
5703 StepVec = DAG.getNode(ISD::MUL, DL, VT, StepVec, StepVal); in lowerSTEP_VECTOR()
5716 SDLoc DL(Op); in lowerVECTOR_REVERSE() local
5720 SDValue Op1 = DAG.getNode(ISD::ZERO_EXTEND, DL, WidenVT, Op.getOperand(0)); in lowerVECTOR_REVERSE()
5721 SDValue Op2 = DAG.getNode(ISD::VECTOR_REVERSE, DL, WidenVT, Op1); in lowerVECTOR_REVERSE()
5722 return DAG.getNode(ISD::TRUNCATE, DL, VecVT, Op2); in lowerVECTOR_REVERSE()
5747 Lo = DAG.getNode(ISD::VECTOR_REVERSE, DL, LoVT, Lo); in lowerVECTOR_REVERSE()
5748 Hi = DAG.getNode(ISD::VECTOR_REVERSE, DL, HiVT, Hi); in lowerVECTOR_REVERSE()
5752 DAG.getNode(ISD::INSERT_SUBVECTOR, DL, VecVT, DAG.getUNDEF(VecVT), Hi, in lowerVECTOR_REVERSE()
5753 DAG.getIntPtrConstant(0, DL)); in lowerVECTOR_REVERSE()
5755 ISD::INSERT_SUBVECTOR, DL, VecVT, Res, Lo, in lowerVECTOR_REVERSE()
5756 DAG.getIntPtrConstant(LoVT.getVectorMinNumElements(), DL)); in lowerVECTOR_REVERSE()
5766 std::tie(Mask, VL) = getDefaultScalableVLOps(VecVT, DL, DAG, Subtarget); in lowerVECTOR_REVERSE()
5770 SDValue VLMax = DAG.getNode(ISD::VSCALE, DL, XLenVT, in lowerVECTOR_REVERSE()
5771 DAG.getConstant(MinElts, DL, XLenVT)); in lowerVECTOR_REVERSE()
5773 DAG.getNode(ISD::SUB, DL, XLenVT, VLMax, DAG.getConstant(1, DL, XLenVT)); in lowerVECTOR_REVERSE()
5780 SplatVL = DAG.getSplatVector(IntVT, DL, VLMinus1); in lowerVECTOR_REVERSE()
5782 SplatVL = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, IntVT, DAG.getUNDEF(IntVT), in lowerVECTOR_REVERSE()
5785 SDValue VID = DAG.getNode(RISCVISD::VID_VL, DL, IntVT, Mask, VL); in lowerVECTOR_REVERSE()
5787 DAG.getNode(RISCVISD::SUB_VL, DL, IntVT, SplatVL, VID, Mask, VL); in lowerVECTOR_REVERSE()
5789 return DAG.getNode(GatherOpc, DL, VecVT, Op.getOperand(0), Indices, Mask, in lowerVECTOR_REVERSE()
5795 SDLoc DL(Op); in lowerVECTOR_SPLICE() local
5802 SDValue VLMax = DAG.getNode(ISD::VSCALE, DL, XLenVT, in lowerVECTOR_SPLICE()
5803 DAG.getConstant(MinElts, DL, XLenVT)); in lowerVECTOR_SPLICE()
5810 DownOffset = DAG.getConstant(ImmValue, DL, XLenVT); in lowerVECTOR_SPLICE()
5811 UpOffset = DAG.getNode(ISD::SUB, DL, XLenVT, VLMax, DownOffset); in lowerVECTOR_SPLICE()
5815 UpOffset = DAG.getConstant(-ImmValue, DL, XLenVT); in lowerVECTOR_SPLICE()
5816 DownOffset = DAG.getNode(ISD::SUB, DL, XLenVT, VLMax, UpOffset); in lowerVECTOR_SPLICE()
5819 SDValue TrueMask = getAllOnesMask(VecVT, VLMax, DL, DAG); in lowerVECTOR_SPLICE()
5822 DAG.getNode(RISCVISD::VSLIDEDOWN_VL, DL, VecVT, DAG.getUNDEF(VecVT), V1, in lowerVECTOR_SPLICE()
5824 return DAG.getNode(RISCVISD::VSLIDEUP_VL, DL, VecVT, SlideDown, V2, UpOffset, in lowerVECTOR_SPLICE()
5831 SDLoc DL(Op); in lowerFixedLengthVectorLoadToRVV() local
5843 SDValue VL = DAG.getConstant(VT.getVectorNumElements(), DL, XLenVT); in lowerFixedLengthVectorLoadToRVV()
5847 IsMaskOp ? Intrinsic::riscv_vlm : Intrinsic::riscv_vle, DL, XLenVT); in lowerFixedLengthVectorLoadToRVV()
5855 DAG.getMemIntrinsicNode(ISD::INTRINSIC_W_CHAIN, DL, VTs, Ops, in lowerFixedLengthVectorLoadToRVV()
5859 return DAG.getMergeValues({Result, NewLoad.getValue(1)}, DL); in lowerFixedLengthVectorLoadToRVV()
5865 SDLoc DL(Op); in lowerFixedLengthVectorStoreToRVV() local
5880 StoreVal = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, VT, in lowerFixedLengthVectorStoreToRVV()
5881 DAG.getConstant(0, DL, VT), StoreVal, in lowerFixedLengthVectorStoreToRVV()
5882 DAG.getIntPtrConstant(0, DL)); in lowerFixedLengthVectorStoreToRVV()
5887 SDValue VL = DAG.getConstant(VT.getVectorNumElements(), DL, XLenVT); in lowerFixedLengthVectorStoreToRVV()
5894 IsMaskOp ? Intrinsic::riscv_vsm : Intrinsic::riscv_vse, DL, XLenVT); in lowerFixedLengthVectorStoreToRVV()
5896 ISD::INTRINSIC_VOID, DL, DAG.getVTList(MVT::Other), in lowerFixedLengthVectorStoreToRVV()
5903 SDLoc DL(Op); in lowerMaskedLoad() local
5938 VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second; in lowerMaskedLoad()
5942 SmallVector<SDValue, 8> Ops{Chain, DAG.getTargetConstant(IntID, DL, XLenVT)}; in lowerMaskedLoad()
5952 Ops.push_back(DAG.getTargetConstant(RISCVII::TAIL_AGNOSTIC, DL, XLenVT)); in lowerMaskedLoad()
5957 DAG.getMemIntrinsicNode(ISD::INTRINSIC_W_CHAIN, DL, VTs, Ops, MemVT, MMO); in lowerMaskedLoad()
5963 return DAG.getMergeValues({Result, Chain}, DL); in lowerMaskedLoad()
5968 SDLoc DL(Op); in lowerMaskedStore() local
6004 VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second; in lowerMaskedStore()
6008 SmallVector<SDValue, 8> Ops{Chain, DAG.getTargetConstant(IntID, DL, XLenVT)}; in lowerMaskedStore()
6015 return DAG.getMemIntrinsicNode(ISD::INTRINSIC_VOID, DL, in lowerMaskedStore()
6032 SDLoc DL(Op); in lowerFixedLengthVectorSetccToRVV() local
6034 DAG.getConstant(VT.getVectorNumElements(), DL, Subtarget.getXLenVT()); in lowerFixedLengthVectorSetccToRVV()
6037 SDValue Mask = getAllOnesMask(ContainerVT, VL, DL, DAG); in lowerFixedLengthVectorSetccToRVV()
6039 SDValue Cmp = DAG.getNode(RISCVISD::SETCC_VL, DL, MaskVT, Op1, Op2, in lowerFixedLengthVectorSetccToRVV()
6071 SDLoc DL(Op); in lowerABS() local
6081 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget); in lowerABS()
6084 RISCVISD::VMV_V_X_VL, DL, ContainerVT, DAG.getUNDEF(ContainerVT), in lowerABS()
6085 DAG.getConstant(0, DL, Subtarget.getXLenVT())); in lowerABS()
6087 DAG.getNode(RISCVISD::SUB_VL, DL, ContainerVT, SplatZero, X, Mask, VL); in lowerABS()
6089 DAG.getNode(RISCVISD::SMAX_VL, DL, ContainerVT, X, NegX, Mask, VL); in lowerABS()
6096 SDLoc DL(Op); in lowerFixedLengthVectorFCOPYSIGNToRVV() local
6108 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget); in lowerFixedLengthVectorFCOPYSIGNToRVV()
6111 DAG.getNode(RISCVISD::FCOPYSIGN_VL, DL, ContainerVT, Mag, Sign, Mask, VL); in lowerFixedLengthVectorFCOPYSIGNToRVV()
6131 SDLoc DL(Op); in lowerFixedLengthVectorSelectToRVV() local
6133 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget); in lowerFixedLengthVectorSelectToRVV()
6136 DAG.getNode(RISCVISD::VSELECT_VL, DL, ContainerVT, CC, Op1, Op2, VL); in lowerFixedLengthVectorSelectToRVV()
6164 SDLoc DL(Op); in lowerToScalableOp() local
6166 std::tie(Mask, VL) = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget); in lowerToScalableOp()
6171 SDValue ScalableRes = DAG.getNode(NewOpc, DL, ContainerVT, Ops); in lowerToScalableOp()
6182 SDLoc DL(Op); in lowerVPOp() local
6203 return DAG.getNode(RISCVISDOpc, DL, VT, Ops, Op->getFlags()); in lowerVPOp()
6207 SDValue VPOp = DAG.getNode(RISCVISDOpc, DL, ContainerVT, Ops, Op->getFlags()); in lowerVPOp()
6214 SDLoc DL(Op); in lowerVPExtMaskOp() local
6229 SDValue Zero = DAG.getConstant(0, DL, XLenVT); in lowerVPExtMaskOp()
6230 SDValue ZeroSplat = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT, in lowerVPExtMaskOp()
6234 Op.getOpcode() == ISD::VP_ZERO_EXTEND ? 1 : -1, DL, XLenVT); in lowerVPExtMaskOp()
6235 SDValue Splat = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT, in lowerVPExtMaskOp()
6238 SDValue Result = DAG.getNode(RISCVISD::VSELECT_VL, DL, ContainerVT, Src, in lowerVPExtMaskOp()
6247 SDLoc DL(Op); in lowerVPSetCCMaskOp() local
6264 SDValue AllOneMask = DAG.getNode(RISCVISD::VMSET_VL, DL, ContainerVT, VL); in lowerVPSetCCMaskOp()
6271 Result = DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op1, Op2, VL); in lowerVPSetCCMaskOp()
6276 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op1, Op2, VL); in lowerVPSetCCMaskOp()
6278 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Temp, AllOneMask, VL); in lowerVPSetCCMaskOp()
6286 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op1, AllOneMask, VL); in lowerVPSetCCMaskOp()
6287 Result = DAG.getNode(RISCVISD::VMAND_VL, DL, ContainerVT, Temp, Op2, VL); in lowerVPSetCCMaskOp()
6295 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op2, AllOneMask, VL); in lowerVPSetCCMaskOp()
6296 Result = DAG.getNode(RISCVISD::VMAND_VL, DL, ContainerVT, Op1, Temp, VL); in lowerVPSetCCMaskOp()
6304 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op1, AllOneMask, VL); in lowerVPSetCCMaskOp()
6305 Result = DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Temp, Op2, VL); in lowerVPSetCCMaskOp()
6313 DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Op2, AllOneMask, VL); in lowerVPSetCCMaskOp()
6314 Result = DAG.getNode(RISCVISD::VMXOR_VL, DL, ContainerVT, Temp, Op1, VL); in lowerVPSetCCMaskOp()
6327 SDLoc DL(Op); in lowerVPFPIntConvOp() local
6360 SDValue Zero = DAG.getConstant(0, DL, XLenVT); in lowerVPFPIntConvOp()
6361 SDValue ZeroSplat = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, IntVT, in lowerVPFPIntConvOp()
6364 RISCVISDExtOpc == RISCVISD::VZEXT_VL ? 1 : -1, DL, XLenVT); in lowerVPFPIntConvOp()
6365 SDValue OneSplat = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, IntVT, in lowerVPFPIntConvOp()
6367 Src = DAG.getNode(RISCVISD::VSELECT_VL, DL, IntVT, Src, OneSplat, in lowerVPFPIntConvOp()
6373 Src = DAG.getNode(RISCVISDExtOpc, DL, IntVT, Src, Mask, VL); in lowerVPFPIntConvOp()
6376 Result = DAG.getNode(RISCVISDOpc, DL, DstVT, Src, Mask, VL); in lowerVPFPIntConvOp()
6387 DAG.getNode(RISCVISD::FP_EXTEND_VL, DL, InterimFVT, Src, Mask, VL); in lowerVPFPIntConvOp()
6390 Result = DAG.getNode(RISCVISDOpc, DL, DstVT, Src, Mask, VL); in lowerVPFPIntConvOp()
6405 Result = DAG.getNode(RISCVISDOpc, DL, InterimFVT, Src, Mask, VL); in lowerVPFPIntConvOp()
6409 Result = DAG.getNode(RISCVISD::FP_ROUND_VL, DL, DstVT, Src, Mask, VL); in lowerVPFPIntConvOp()
6423 Result = DAG.getNode(RISCVISDOpc, DL, InterimIVT, Src, Mask, VL); in lowerVPFPIntConvOp()
6428 SDValue SplatZero = DAG.getConstant(0, DL, XLenVT); in lowerVPFPIntConvOp()
6429 SplatZero = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, InterimIVT, in lowerVPFPIntConvOp()
6431 Result = DAG.getNode(RISCVISD::SETCC_VL, DL, DstVT, Result, SplatZero, in lowerVPFPIntConvOp()
6437 Result = DAG.getNode(RISCVISDOpc, DL, InterimIVT, Src, Mask, VL); in lowerVPFPIntConvOp()
6444 Result = DAG.getNode(RISCVISD::TRUNCATE_VECTOR_VL, DL, InterimIVT, in lowerVPFPIntConvOp()
6477 SDLoc DL(Op); in lowerLogicVPOp() local
6478 SDValue Val = DAG.getNode(MaskOpc, DL, ContainerVT, Op1, Op2, VL); in lowerLogicVPOp()
6492 SDLoc DL(Op); in lowerMaskedGather() local
6551 VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second; in lowerMaskedGather()
6555 SDValue TrueMask = DAG.getNode(RISCVISD::VMSET_VL, DL, Mask.getValueType(), in lowerMaskedGather()
6557 Index = DAG.getNode(RISCVISD::TRUNCATE_VECTOR_VL, DL, IndexVT, Index, in lowerMaskedGather()
6563 SmallVector<SDValue, 8> Ops{Chain, DAG.getTargetConstant(IntID, DL, XLenVT)}; in lowerMaskedGather()
6574 Ops.push_back(DAG.getTargetConstant(RISCVII::TAIL_AGNOSTIC, DL, XLenVT)); in lowerMaskedGather()
6578 DAG.getMemIntrinsicNode(ISD::INTRINSIC_W_CHAIN, DL, VTs, Ops, MemVT, MMO); in lowerMaskedGather()
6584 return DAG.getMergeValues({Result, Chain}, DL); in lowerMaskedGather()
6595 SDLoc DL(Op); in lowerMaskedScatter() local
6653 VL = getDefaultVLOps(VT, ContainerVT, DL, DAG, Subtarget).second; in lowerMaskedScatter()
6657 SDValue TrueMask = DAG.getNode(RISCVISD::VMSET_VL, DL, Mask.getValueType(), in lowerMaskedScatter()
6659 Index = DAG.getNode(RISCVISD::TRUNCATE_VECTOR_VL, DL, IndexVT, Index, in lowerMaskedScatter()
6665 SmallVector<SDValue, 8> Ops{Chain, DAG.getTargetConstant(IntID, DL, XLenVT)}; in lowerMaskedScatter()
6673 return DAG.getMemIntrinsicNode(ISD::INTRINSIC_VOID, DL, in lowerMaskedScatter()
6680 SDLoc DL(Op); in lowerGET_ROUNDING() local
6683 RISCVSysReg::lookupSysRegByName("FRM")->Encoding, DL, XLenVT); in lowerGET_ROUNDING()
6685 SDValue RM = DAG.getNode(RISCVISD::READ_CSR, DL, VTs, Chain, SysRegNo); in lowerGET_ROUNDING()
6699 DAG.getNode(ISD::SHL, DL, XLenVT, RM, DAG.getConstant(2, DL, XLenVT)); in lowerGET_ROUNDING()
6700 SDValue Shifted = DAG.getNode(ISD::SRL, DL, XLenVT, in lowerGET_ROUNDING()
6701 DAG.getConstant(Table, DL, XLenVT), Shift); in lowerGET_ROUNDING()
6702 SDValue Masked = DAG.getNode(ISD::AND, DL, XLenVT, Shifted, in lowerGET_ROUNDING()
6703 DAG.getConstant(7, DL, XLenVT)); in lowerGET_ROUNDING()
6705 return DAG.getMergeValues({Masked, Chain}, DL); in lowerGET_ROUNDING()
6711 SDLoc DL(Op); in lowerSET_ROUNDING() local
6715 RISCVSysReg::lookupSysRegByName("FRM")->Encoding, DL, XLenVT); in lowerSET_ROUNDING()
6728 SDValue Shift = DAG.getNode(ISD::SHL, DL, XLenVT, RMValue, in lowerSET_ROUNDING()
6729 DAG.getConstant(2, DL, XLenVT)); in lowerSET_ROUNDING()
6730 SDValue Shifted = DAG.getNode(ISD::SRL, DL, XLenVT, in lowerSET_ROUNDING()
6731 DAG.getConstant(Table, DL, XLenVT), Shift); in lowerSET_ROUNDING()
6732 RMValue = DAG.getNode(ISD::AND, DL, XLenVT, Shifted, in lowerSET_ROUNDING()
6733 DAG.getConstant(0x7, DL, XLenVT)); in lowerSET_ROUNDING()
6734 return DAG.getNode(RISCVISD::WRITE_CSR, DL, MVT::Other, Chain, SysRegNo, in lowerSET_ROUNDING()
6769 SDLoc DL(N); in customLegalizeToWOpByIntr() local
6775 NewOps.push_back(DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, Op)); in customLegalizeToWOpByIntr()
6776 SDValue NewRes = DAG.getNode(WOpcode, DL, MVT::i64, NewOps); in customLegalizeToWOpByIntr()
6778 return DAG.getNode(ISD::TRUNCATE, DL, N->getValueType(0), NewRes); in customLegalizeToWOpByIntr()
6813 SDLoc DL(N); in customLegalizeToWOp() local
6815 SDValue NewOp0 = DAG.getNode(ExtOpc, DL, MVT::i64, N->getOperand(0)); in customLegalizeToWOp()
6816 SDValue NewOp1 = DAG.getNode(ExtOpc, DL, MVT::i64, N->getOperand(1)); in customLegalizeToWOp()
6817 SDValue NewRes = DAG.getNode(WOpcode, DL, MVT::i64, NewOp0, NewOp1); in customLegalizeToWOp()
6819 return DAG.getNode(ISD::TRUNCATE, DL, N->getValueType(0), NewRes); in customLegalizeToWOp()
6825 SDLoc DL(N); in customLegalizeToWOpWithSExt() local
6826 SDValue NewOp0 = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(0)); in customLegalizeToWOpWithSExt()
6827 SDValue NewOp1 = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(1)); in customLegalizeToWOpWithSExt()
6828 SDValue NewWOp = DAG.getNode(N->getOpcode(), DL, MVT::i64, NewOp0, NewOp1); in customLegalizeToWOpWithSExt()
6829 SDValue NewRes = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, MVT::i64, NewWOp, in customLegalizeToWOpWithSExt()
6831 return DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, NewRes); in customLegalizeToWOpWithSExt()
6837 SDLoc DL(N); in ReplaceNodeResults() local
6860 Opc, DL, VTs, N->getOperand(0), Op0, in ReplaceNodeResults()
6861 DAG.getTargetConstant(RISCVFPRndMode::RTZ, DL, MVT::i64)); in ReplaceNodeResults()
6862 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, Res)); in ReplaceNodeResults()
6868 DAG.getNode(Opc, DL, MVT::i64, Op0, in ReplaceNodeResults()
6869 DAG.getTargetConstant(RISCVFPRndMode::RTZ, DL, MVT::i64)); in ReplaceNodeResults()
6870 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, Res)); in ReplaceNodeResults()
6888 makeLibCall(DAG, LC, N->getValueType(0), Op0, CallOptions, DL, Chain); in ReplaceNodeResults()
6900 DAG.getNode(RISCVISD::READ_CYCLE_WIDE, DL, VTs, N->getOperand(0)); in ReplaceNodeResults()
6903 DAG.getNode(ISD::BUILD_PAIR, DL, MVT::i64, RCW, RCW.getValue(1))); in ReplaceNodeResults()
6925 S = DAG.getNode(ISD::TRUNCATE, DL, XLenVT, S); in ReplaceNodeResults()
6926 U = DAG.getNode(ISD::TRUNCATE, DL, XLenVT, U); in ReplaceNodeResults()
6927 SDValue Lo = DAG.getNode(ISD::MUL, DL, XLenVT, S, U); in ReplaceNodeResults()
6928 SDValue Hi = DAG.getNode(RISCVISD::MULHSU, DL, XLenVT, S, U); in ReplaceNodeResults()
6929 return DAG.getNode(ISD::BUILD_PAIR, DL, N->getValueType(0), Lo, Hi); in ReplaceNodeResults()
6970 SDLoc DL(N); in ReplaceNodeResults() local
6972 DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(0)); in ReplaceNodeResults()
6974 DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::i64, N->getOperand(1)); in ReplaceNodeResults()
6975 SDValue NewWOp = DAG.getNode(ISD::SHL, DL, MVT::i64, NewOp0, NewOp1); in ReplaceNodeResults()
6976 SDValue NewRes = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, MVT::i64, NewWOp, in ReplaceNodeResults()
6978 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, NewRes)); in ReplaceNodeResults()
6996 DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(0)); in ReplaceNodeResults()
7000 SDValue Res = DAG.getNode(Opc, DL, MVT::i64, NewOp0); in ReplaceNodeResults()
7001 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, Res)); in ReplaceNodeResults()
7034 SDValue LHS = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(0)); in ReplaceNodeResults()
7035 SDValue RHS = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(1)); in ReplaceNodeResults()
7037 DAG.getNode(IsAdd ? ISD::ADD : ISD::SUB, DL, MVT::i64, LHS, RHS); in ReplaceNodeResults()
7038 Res = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, MVT::i64, Res, in ReplaceNodeResults()
7048 Overflow = DAG.getSetCC(DL, N->getValueType(1), Res, in ReplaceNodeResults()
7049 DAG.getConstant(0, DL, MVT::i64), ISD::SETEQ); in ReplaceNodeResults()
7054 LHS = DAG.getNode(ISD::SIGN_EXTEND, DL, MVT::i64, N->getOperand(0)); in ReplaceNodeResults()
7055 Overflow = DAG.getSetCC(DL, N->getValueType(1), Res, LHS, in ReplaceNodeResults()
7059 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, Res)); in ReplaceNodeResults()
7072 DAG.getNode(ISD::SIGN_EXTEND, DL, MVT::i64, N->getOperand(0)); in ReplaceNodeResults()
7074 DAG.getNode(ISD::SIGN_EXTEND, DL, MVT::i64, N->getOperand(1)); in ReplaceNodeResults()
7075 SDValue Res = DAG.getNode(N->getOpcode(), DL, MVT::i64, LHS, RHS); in ReplaceNodeResults()
7076 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, Res)); in ReplaceNodeResults()
7091 SDValue Src = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(0)); in ReplaceNodeResults()
7097 SDValue SignFill = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, MVT::i64, Src, in ReplaceNodeResults()
7099 SignFill = DAG.getNode(ISD::SRA, DL, MVT::i64, SignFill, in ReplaceNodeResults()
7100 DAG.getConstant(31, DL, MVT::i64)); in ReplaceNodeResults()
7102 SDValue NewRes = DAG.getNode(ISD::XOR, DL, MVT::i64, Src, SignFill); in ReplaceNodeResults()
7103 NewRes = DAG.getNode(ISD::SUB, DL, MVT::i64, NewRes, SignFill); in ReplaceNodeResults()
7107 NewRes = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, MVT::i64, NewRes, in ReplaceNodeResults()
7109 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, NewRes)); in ReplaceNodeResults()
7119 SDValue FPConv = DAG.getNode(RISCVISD::FMV_X_ANYEXTH, DL, XLenVT, Op0); in ReplaceNodeResults()
7120 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i16, FPConv)); in ReplaceNodeResults()
7124 DAG.getNode(RISCVISD::FMV_X_ANYEXTW_RV64, DL, MVT::i64, Op0); in ReplaceNodeResults()
7125 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, FPConv)); in ReplaceNodeResults()
7135 Results.push_back(DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT, BVec, in ReplaceNodeResults()
7136 DAG.getConstant(0, DL, XLenVT))); in ReplaceNodeResults()
7153 SDValue NewOp0 = DAG.getNode(ISD::ANY_EXTEND, DL, XLenVT, N->getOperand(0)); in ReplaceNodeResults()
7155 DAG.getNode(ISD::ZERO_EXTEND, DL, XLenVT, N->getOperand(1)); in ReplaceNodeResults()
7156 SDValue NewRes = DAG.getNode(N->getOpcode(), DL, XLenVT, NewOp0, NewOp1); in ReplaceNodeResults()
7159 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, VT, NewRes)); in ReplaceNodeResults()
7169 SDValue NewOp0 = DAG.getNode(ISD::ANY_EXTEND, DL, XLenVT, N->getOperand(0)); in ReplaceNodeResults()
7174 SDValue GREVI = DAG.getNode(RISCVISD::GREV, DL, XLenVT, NewOp0, in ReplaceNodeResults()
7175 DAG.getConstant(Imm, DL, XLenVT)); in ReplaceNodeResults()
7178 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, VT, GREVI)); in ReplaceNodeResults()
7186 DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(0)); in ReplaceNodeResults()
7188 DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(1)); in ReplaceNodeResults()
7190 DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(2)); in ReplaceNodeResults()
7193 NewShAmt = DAG.getNode(ISD::AND, DL, MVT::i64, NewShAmt, in ReplaceNodeResults()
7194 DAG.getConstant(0x1f, DL, MVT::i64)); in ReplaceNodeResults()
7205 SDValue NewOp = DAG.getNode(Opc, DL, MVT::i64, NewOp0, NewOp1, NewShAmt); in ReplaceNodeResults()
7206 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, NewOp)); in ReplaceNodeResults()
7241 SDValue VL = DAG.getConstant(1, DL, XLenVT); in ReplaceNodeResults()
7242 SDValue Mask = getAllOnesMask(ContainerVT, VL, DL, DAG); in ReplaceNodeResults()
7247 Vec = DAG.getNode(RISCVISD::VSLIDEDOWN_VL, DL, ContainerVT, in ReplaceNodeResults()
7252 SDValue EltLo = DAG.getNode(RISCVISD::VMV_X_S, DL, XLenVT, Vec); in ReplaceNodeResults()
7256 SDValue ThirtyTwoV = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ContainerVT, in ReplaceNodeResults()
7258 DAG.getConstant(32, DL, XLenVT), VL); in ReplaceNodeResults()
7259 SDValue LShr32 = DAG.getNode(RISCVISD::SRL_VL, DL, ContainerVT, Vec, in ReplaceNodeResults()
7262 SDValue EltHi = DAG.getNode(RISCVISD::VMV_X_S, DL, XLenVT, LShr32); in ReplaceNodeResults()
7264 Results.push_back(DAG.getNode(ISD::BUILD_PAIR, DL, MVT::i64, EltLo, EltHi)); in ReplaceNodeResults()
7278 DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(1)); in ReplaceNodeResults()
7280 DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(2)); in ReplaceNodeResults()
7287 NewOp2 = DAG.getNode(ISD::AND, DL, MVT::i64, NewOp2, in ReplaceNodeResults()
7288 DAG.getConstant(0x1f, DL, MVT::i64)); in ReplaceNodeResults()
7291 SDValue Res = DAG.getNode(Opc, DL, MVT::i64, NewOp1, NewOp2); in ReplaceNodeResults()
7292 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, Res)); in ReplaceNodeResults()
7308 DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(1)); in ReplaceNodeResults()
7309 SDValue Res = DAG.getNode(RISCVISD::GORC, DL, MVT::i64, NewOp, in ReplaceNodeResults()
7310 DAG.getConstant(7, DL, MVT::i64)); in ReplaceNodeResults()
7311 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, Res)); in ReplaceNodeResults()
7319 DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(1)); in ReplaceNodeResults()
7321 DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(2)); in ReplaceNodeResults()
7329 NewOp2 = DAG.getNode(ISD::AND, DL, MVT::i64, NewOp2, in ReplaceNodeResults()
7330 DAG.getConstant(0xf, DL, MVT::i64)); in ReplaceNodeResults()
7334 SDValue Res = DAG.getNode(Opc, DL, MVT::i64, NewOp1, NewOp2); in ReplaceNodeResults()
7335 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, Res)); in ReplaceNodeResults()
7343 SDValue Extract = DAG.getNode(RISCVISD::VMV_X_S, DL, in ReplaceNodeResults()
7345 Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, VT, Extract)); in ReplaceNodeResults()
7357 SDValue EltLo = DAG.getNode(RISCVISD::VMV_X_S, DL, XLenVT, Vec); in ReplaceNodeResults()
7361 SDValue VL = DAG.getConstant(1, DL, XLenVT); in ReplaceNodeResults()
7362 SDValue Mask = getAllOnesMask(VecVT, VL, DL, DAG); in ReplaceNodeResults()
7365 DAG.getNode(RISCVISD::VMV_V_X_VL, DL, VecVT, DAG.getUNDEF(VecVT), in ReplaceNodeResults()
7366 DAG.getConstant(32, DL, XLenVT), VL); in ReplaceNodeResults()
7368 DAG.getNode(RISCVISD::SRL_VL, DL, VecVT, Vec, ThirtyTwoV, Mask, VL); in ReplaceNodeResults()
7369 SDValue EltHi = DAG.getNode(RISCVISD::VMV_X_S, DL, XLenVT, LShr32); in ReplaceNodeResults()
7372 DAG.getNode(ISD::BUILD_PAIR, DL, MVT::i64, EltLo, EltHi)); in ReplaceNodeResults()
7402 SDValue Res = DAG.getNode(ISD::FLT_ROUNDS_, DL, VTs, N->getOperand(0)); in ReplaceNodeResults()
7637 SDLoc DL(Op); in combineORToGREV() local
7638 return DAG.getNode(RISCVISD::GREV, DL, VT, LHS->Op, in combineORToGREV()
7639 DAG.getConstant(LHS->ShAmt, DL, VT)); in combineORToGREV()
7660 SDLoc DL(Op); in combineORToGORC() local
7668 return DAG.getNode(RISCVISD::GORC, DL, VT, X, Reverse.getOperand(1)); in combineORToGORC()
7676 return DAG.getNode(RISCVISD::GORC, DL, VT, X, in combineORToGORC()
7677 DAG.getConstant(RotAmt, DL, VT)); in combineORToGORC()
7704 return DAG.getNode(RISCVISD::GORC, DL, VT, LHS->Op, in combineORToGORC()
7705 DAG.getConstant(LHS->ShAmt, DL, VT)); in combineORToGORC()
7801 SDLoc DL(Op); in combineORToSHFL() local
7802 return DAG.getNode(RISCVISD::SHFL, DL, VT, Match1->Op, in combineORToSHFL()
7803 DAG.getConstant(Match1->ShAmt, DL, VT)); in combineORToSHFL()
7843 SDLoc DL(N); in transformAddShlImm() local
7847 DAG.getNode(ISD::SHL, DL, VT, NL, DAG.getConstant(Diff, DL, VT)); in transformAddShlImm()
7848 SDValue NA1 = DAG.getNode(ISD::ADD, DL, VT, NA0, NS); in transformAddShlImm()
7849 return DAG.getNode(ISD::SHL, DL, VT, NA1, DAG.getConstant(Bits, DL, VT)); in transformAddShlImm()
7871 SDLoc DL(N); in combineROTR_ROTL_RORW_ROLW() local
7898 RISCVISD::GREV, DL, VT, Src, in combineROTR_ROTL_RORW_ROLW()
7899 DAG.getConstant(CombinedShAmt, DL, N->getOperand(1).getValueType())); in combineROTR_ROTL_RORW_ROLW()
7905 return DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, VT, Res, in combineROTR_ROTL_RORW_ROLW()
7938 SDLoc DL(N); in combineGREVI_GORCI() local
7940 N->getOpcode(), DL, N->getValueType(0), Src, in combineGREVI_GORCI()
7941 DAG.getConstant(CombinedShAmt, DL, N->getOperand(1).getValueType())); in combineGREVI_GORCI()
8074 SDLoc DL(N); in transformAddImmMulImm() local
8075 SDValue New0 = DAG.getNode(ISD::ADD, DL, VT, N0->getOperand(0), in transformAddImmMulImm()
8076 DAG.getConstant(CA, DL, VT)); in transformAddImmMulImm()
8078 DAG.getNode(ISD::MUL, DL, VT, New0, DAG.getConstant(C0, DL, VT)); in transformAddImmMulImm()
8079 return DAG.getNode(ISD::ADD, DL, VT, New1, DAG.getConstant(CB, DL, VT)); in transformAddImmMulImm()
8115 SDLoc DL(N); in performANDCombine() local
8116 SDValue Op0 = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N0.getOperand(0)); in performANDCombine()
8117 SDValue Op1 = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::i64, N0.getOperand(1)); in performANDCombine()
8118 SDValue Srl = DAG.getNode(ISD::SRL, DL, MVT::i64, Op0, Op1); in performANDCombine()
8119 SDValue And = DAG.getNode(ISD::AND, DL, MVT::i64, Srl, in performANDCombine()
8120 DAG.getConstant(1, DL, MVT::i64)); in performANDCombine()
8121 return DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, And); in performANDCombine()
8160 SDLoc DL(N); in performXORCombine() local
8161 return DAG.getNode(RISCVISD::ROLW, DL, MVT::i64, in performXORCombine()
8162 DAG.getConstant(~1, DL, MVT::i64), N0.getOperand(1)); in performXORCombine()
8250 SDLoc DL(N); in performSIGN_EXTEND_INREGCombine() local
8253 DAG.getNode(ISD::SUB, DL, VT, DAG.getConstant(0, DL, MVT::i64), Freeze); in performSIGN_EXTEND_INREGCombine()
8254 Neg = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, MVT::i64, Neg, in performSIGN_EXTEND_INREGCombine()
8256 return DAG.getNode(ISD::SMAX, DL, MVT::i64, Freeze, Neg); in performSIGN_EXTEND_INREGCombine()
8285 SDLoc DL(N); in combineADDSUB_VLToVWADDSUB_VL() local
8295 Op1 = DAG.getNode(ExtOpc, DL, NarrowVT, Op1, Mask, VL); in combineADDSUB_VLToVWADDSUB_VL()
8303 return DAG.getNode(WOpc, DL, VT, Op0, Op1, Mask, VL); in combineADDSUB_VLToVWADDSUB_VL()
8336 SDLoc DL(N); in combineVWADD_W_VL_VWSUB_W_VL() local
8347 Op0 = DAG.getNode(ExtOpc, DL, NarrowVT, Op0, Mask, VL); in combineVWADD_W_VL_VWSUB_W_VL()
8348 return DAG.getNode(VOpc, DL, VT, Op0, Op1, Mask, VL); in combineVWADD_W_VL_VWSUB_W_VL()
8378 Op0 = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, NarrowVT, in combineVWADD_W_VL_VWSUB_W_VL()
8380 return DAG.getNode(VOpc, DL, VT, Op1, Op0, Mask, VL); in combineVWADD_W_VL_VWSUB_W_VL()
8416 SDLoc DL(N); in combineMUL_VLToVWMUL_VL() local
8462 Op1 = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, NarrowVT, in combineMUL_VLToVWMUL_VL()
8472 Op0 = DAG.getNode(ExtOpc, DL, NarrowVT, Op0, Mask, VL); in combineMUL_VLToVWMUL_VL()
8476 Op1 = DAG.getNode(ExtOpc, DL, NarrowVT, Op1, Mask, VL); in combineMUL_VLToVWMUL_VL()
8481 return DAG.getNode(WMulOpc, DL, VT, Op0, Op1, Mask, VL); in combineMUL_VLToVWMUL_VL()
8537 SDLoc DL(N); in performFP_TO_INTCombine() local
8538 SDValue FpToInt = DAG.getNode(Opc, DL, XLenVT, Src.getOperand(0), in performFP_TO_INTCombine()
8539 DAG.getTargetConstant(FRM, DL, XLenVT)); in performFP_TO_INTCombine()
8540 return DAG.getNode(ISD::TRUNCATE, DL, VT, FpToInt); in performFP_TO_INTCombine()
8591 SDLoc DL(N); in performFP_TO_INT_SATCombine() local
8592 SDValue FpToInt = DAG.getNode(Opc, DL, XLenVT, Src, in performFP_TO_INT_SATCombine()
8593 DAG.getTargetConstant(FRM, DL, XLenVT)); in performFP_TO_INT_SATCombine()
8597 SDValue ZeroInt = DAG.getConstant(0, DL, DstVT); in performFP_TO_INT_SATCombine()
8598 return DAG.getSelectCC(DL, Src, Src, ZeroInt, FpToInt, ISD::CondCode::SETUO); in performFP_TO_INT_SATCombine()
8616 SDLoc DL(N); in performBITREVERSECombine() local
8617 return DAG.getNode(RISCVISD::GREV, DL, VT, Src.getOperand(0), in performBITREVERSECombine()
8618 DAG.getConstant(7, DL, VT)); in performBITREVERSECombine()
8685 SDLoc DL(N); in performSRACombine() local
8686 return DAG.getNode(ISD::SRA, DL, MVT::i64, Shl, in performSRACombine()
8687 DAG.getConstant(ShAmt + 32, DL, MVT::i64)); in performSRACombine()
8726 SDLoc DL(N); in performSRACombine() local
8733 DAG.getConstant(AddC->getAPIntValue().lshr(32), DL, MVT::i64); in performSRACombine()
8735 In = DAG.getNode(ISD::ADD, DL, MVT::i64, In, ShiftedAddC); in performSRACombine()
8737 In = DAG.getNode(ISD::SUB, DL, MVT::i64, ShiftedAddC, In); in performSRACombine()
8740 SDValue SExt = DAG.getNode(ISD::SIGN_EXTEND_INREG, DL, MVT::i64, In, in performSRACombine()
8746 ISD::SHL, DL, MVT::i64, SExt, in performSRACombine()
8747 DAG.getConstant(32 - ShAmt, DL, MVT::i64)); in performSRACombine()
8751 static bool combine_CC(SDValue &LHS, SDValue &RHS, SDValue &CC, const SDLoc &DL, in combine_CC() argument
8770 translateSetCCForBranch(DL, LHS, RHS, CCVal, DAG); in combine_CC()
8799 DAG.getNode(ISD::SHL, DL, LHS.getValueType(), LHS0.getOperand(0), in combine_CC()
8800 DAG.getConstant(ShAmt, DL, LHS.getValueType())); in combine_CC()
8812 RHS = DAG.getConstant(0, DL, LHS.getValueType()); in combine_CC()
8853 SDLoc DL(N); in PerformDAGCombine() local
8860 SDValue Lo = DAG.getConstant(V.trunc(32), DL, MVT::i32); in PerformDAGCombine()
8861 SDValue Hi = DAG.getConstant(V.lshr(32).trunc(32), DL, MVT::i32); in PerformDAGCombine()
8873 DAG.getNode(RISCVISD::SplitF64, DL, DAG.getVTList(MVT::i32, MVT::i32), in PerformDAGCombine()
8879 SDValue NewHi = DAG.getNode(ISD::XOR, DL, MVT::i32, Hi, in PerformDAGCombine()
8880 DAG.getConstant(SignBit, DL, MVT::i32)); in PerformDAGCombine()
8884 SDValue NewHi = DAG.getNode(ISD::AND, DL, MVT::i32, Hi, in PerformDAGCombine()
8885 DAG.getConstant(~SignBit, DL, MVT::i32)); in PerformDAGCombine()
8982 SDLoc DL(N); in PerformDAGCombine() local
9004 SDValue NewFMV = DAG.getNode(N->getOpcode(), DL, VT, Op0.getOperand(0)); in PerformDAGCombine()
9008 return DAG.getNode(ISD::XOR, DL, VT, NewFMV, in PerformDAGCombine()
9009 DAG.getConstant(SignBit, DL, VT)); in PerformDAGCombine()
9012 return DAG.getNode(ISD::AND, DL, VT, NewFMV, in PerformDAGCombine()
9013 DAG.getConstant(~SignBit, DL, VT)); in PerformDAGCombine()
9066 SDLoc DL(N); in PerformDAGCombine() local
9072 if (combine_CC(LHS, RHS, CC, DL, DAG, Subtarget)) in PerformDAGCombine()
9073 return DAG.getNode(RISCVISD::SELECT_CC, DL, N->getValueType(0), in PerformDAGCombine()
9082 SDLoc DL(N); in PerformDAGCombine() local
9084 if (combine_CC(LHS, RHS, CC, DL, DAG, Subtarget)) in PerformDAGCombine()
9085 return DAG.getNode(RISCVISD::BR_CC, DL, N->getValueType(0), in PerformDAGCombine()
9117 SDLoc DL(N); in PerformDAGCombine() local
9118 SDValue NewFPExtRound = DAG.getFPExtendOrRound(In2.getOperand(0), DL, VT); in PerformDAGCombine()
9119 return DAG.getNode(ISD::FCOPYSIGN, DL, VT, N->getOperand(0), in PerformDAGCombine()
9120 DAG.getNode(ISD::FNEG, DL, VT, NewFPExtRound)); in PerformDAGCombine()
9153 SDLoc DL(N); in PerformDAGCombine() local
9162 DL, IndexVT, Index); in PerformDAGCombine()
9171 SDValue SplatScale = DAG.getConstant(Log2_32(Scale), DL, IndexVT); in PerformDAGCombine()
9172 Index = DAG.getNode(ISD::SHL, DL, IndexVT, Index, SplatScale); in PerformDAGCombine()
9173 ScaleOp = DAG.getTargetConstant(1, DL, ScaleOp.getValueType()); in PerformDAGCombine()
9178 return DAG.getGatherVP(N->getVTList(), VPGN->getMemoryVT(), DL, in PerformDAGCombine()
9184 return DAG.getScatterVP(N->getVTList(), VPSN->getMemoryVT(), DL, in PerformDAGCombine()
9191 N->getVTList(), MGN->getMemoryVT(), DL, in PerformDAGCombine()
9197 N->getVTList(), MSN->getMemoryVT(), DL, in PerformDAGCombine()
9208 SDLoc DL(N); in PerformDAGCombine() local
9211 ShAmt = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, VT, DAG.getUNDEF(VT), in PerformDAGCombine()
9213 return DAG.getNode(N->getOpcode(), DL, VT, N->getOperand(0), ShAmt, in PerformDAGCombine()
9227 SDLoc DL(N); in PerformDAGCombine() local
9229 ShAmt = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, VT, DAG.getUNDEF(VT), in PerformDAGCombine()
9232 return DAG.getNode(N->getOpcode(), DL, VT, N->getOperand(0), ShAmt); in PerformDAGCombine()
9297 SDLoc DL(N); in PerformDAGCombine() local
9300 Store->getChain(), DL, Src, Store->getBasePtr(), Store->getOffset(), in PerformDAGCombine()
9301 DAG.getConstant(1, DL, MaskVT), in PerformDAGCombine()
9302 DAG.getConstant(1, DL, Subtarget.getXLenVT()), MemVT, in PerformDAGCombine()
9348 SDLoc DL(N); in PerformDAGCombine() local
9352 return DAG.getConstant(-1, DL, VT); in PerformDAGCombine()
9353 return DAG.getConstant(0, DL, VT); in PerformDAGCombine()
9369 SDLoc DL(N); in PerformDAGCombine() local
9370 N0 = DAG.getNode(ISD::CONCAT_VECTORS, DL, MVT::v8i1, Ops); in PerformDAGCombine()
9372 return DAG.getNode(ISD::TRUNCATE, DL, VT, N0); in PerformDAGCombine()
9469 SDLoc DL(Op); in targetShrinkDemandedConstant() local
9470 SDValue NewC = TLO.DAG.getConstant(NewMask, DL, Op.getValueType()); in targetShrinkDemandedConstant()
9471 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), DL, Op.getValueType(), in targetShrinkDemandedConstant()
9803 DebugLoc DL = MI.getDebugLoc(); in emitReadCycleWidePseudo() local
9806 BuildMI(LoopMBB, DL, TII->get(RISCV::CSRRS), HiReg) in emitReadCycleWidePseudo()
9809 BuildMI(LoopMBB, DL, TII->get(RISCV::CSRRS), LoReg) in emitReadCycleWidePseudo()
9812 BuildMI(LoopMBB, DL, TII->get(RISCV::CSRRS), ReadAgainReg) in emitReadCycleWidePseudo()
9816 BuildMI(LoopMBB, DL, TII->get(RISCV::BNE)) in emitReadCycleWidePseudo()
9834 DebugLoc DL = MI.getDebugLoc(); in emitSplitF64Pseudo() local
9850 BuildMI(*BB, MI, DL, TII.get(RISCV::LW), LoReg) in emitSplitF64Pseudo()
9854 BuildMI(*BB, MI, DL, TII.get(RISCV::LW), HiReg) in emitSplitF64Pseudo()
9868 DebugLoc DL = MI.getDebugLoc(); in emitBuildPairF64Pseudo() local
9882 BuildMI(*BB, MI, DL, TII.get(RISCV::SW)) in emitBuildPairF64Pseudo()
9887 BuildMI(*BB, MI, DL, TII.get(RISCV::SW)) in emitBuildPairF64Pseudo()
9912 DebugLoc DL = MI.getDebugLoc(); in emitQuietFCMP() local
9921 BuildMI(*BB, MI, DL, TII.get(RISCV::ReadFFLAGS), SavedFFlags); in emitQuietFCMP()
9923 auto MIB = BuildMI(*BB, MI, DL, TII.get(RelOpcode), DstReg) in emitQuietFCMP()
9930 BuildMI(*BB, MI, DL, TII.get(RISCV::WriteFFLAGS)) in emitQuietFCMP()
9934 auto MIB2 = BuildMI(*BB, MI, DL, TII.get(EqOpcode), RISCV::X0) in emitQuietFCMP()
9985 const DebugLoc &DL = First.getDebugLoc(); in EmitLoweredCascadedSelect() local
10015 BuildMI(FirstMBB, DL, TII.getBrCond(FirstCC)) in EmitLoweredCascadedSelect()
10027 BuildMI(ThisMBB, DL, TII.getBrCond(SecondCC)) in EmitLoweredCascadedSelect()
10034 BuildMI(*SinkMBB, SinkMBB->begin(), DL, TII.get(RISCV::PHI), DestReg) in EmitLoweredCascadedSelect()
10123 DebugLoc DL = MI.getDebugLoc(); in emitSelectPseudo() local
10150 BuildMI(HeadMBB, DL, TII.getBrCond(CC)) in emitSelectPseudo()
10345 static bool CC_RISCV(const DataLayout &DL, RISCVABI::ABI ABI, unsigned ValNo, in CC_RISCV() argument
10350 unsigned XLen = DL.getLargestLegalIntTypeSizeInBits(); in CC_RISCV()
10410 DL.getTypeAllocSize(OrigTy) == TwoXLenInBytes) { in CC_RISCV()
10632 const CCValAssign &VA, const SDLoc &DL, in convertLocVTToValVT() argument
10643 Val = DAG.getNode(RISCVISD::FMV_H_X, DL, MVT::f16, Val); in convertLocVTToValVT()
10645 Val = DAG.getNode(RISCVISD::FMV_W_X_RV64, DL, MVT::f32, Val); in convertLocVTToValVT()
10647 Val = DAG.getNode(ISD::BITCAST, DL, VA.getValVT(), Val); in convertLocVTToValVT()
10656 const CCValAssign &VA, const SDLoc &DL, in unpackFromRegLoc() argument
10665 Val = DAG.getCopyFromReg(Chain, DL, VReg, LocVT); in unpackFromRegLoc()
10670 return convertLocVTToValVT(DAG, Val, VA, DL, TLI.getSubtarget()); in unpackFromRegLoc()
10674 const CCValAssign &VA, const SDLoc &DL, in convertValVTToLocVT() argument
10687 Val = DAG.getNode(RISCVISD::FMV_X_ANYEXTH, DL, VA.getLocVT(), Val); in convertValVTToLocVT()
10689 Val = DAG.getNode(RISCVISD::FMV_X_ANYEXTW_RV64, DL, MVT::i64, Val); in convertValVTToLocVT()
10691 Val = DAG.getNode(ISD::BITCAST, DL, LocVT, Val); in convertValVTToLocVT()
10700 const CCValAssign &VA, const SDLoc &DL) { in unpackFromMemLoc() argument
10728 ExtType, DL, LocVT, Chain, FIN, in unpackFromMemLoc()
10734 const CCValAssign &VA, const SDLoc &DL) { in unpackF64OnRV32DSoftABI() argument
10746 return DAG.getLoad(MVT::f64, DL, Chain, FIN, in unpackF64OnRV32DSoftABI()
10754 SDValue Lo = DAG.getCopyFromReg(Chain, DL, LoVReg, MVT::i32); in unpackF64OnRV32DSoftABI()
10760 Hi = DAG.getLoad(MVT::i32, DL, Chain, FIN, in unpackF64OnRV32DSoftABI()
10766 Hi = DAG.getCopyFromReg(Chain, DL, HiVReg, MVT::i32); in unpackF64OnRV32DSoftABI()
10768 return DAG.getNode(RISCVISD::BuildPairF64, DL, MVT::f64, Lo, Hi); in unpackF64OnRV32DSoftABI()
10773 static bool CC_RISCV_FastCC(const DataLayout &DL, RISCVABI::ABI ABI, in CC_RISCV_FastCC() argument
10922 const SmallVectorImpl<ISD::InputArg> &Ins, const SDLoc &DL, in LowerFormalArguments() argument
10977 ArgValue = unpackF64OnRV32DSoftABI(DAG, Chain, VA, DL); in LowerFormalArguments()
10979 ArgValue = unpackFromRegLoc(DAG, Chain, VA, DL, *this); in LowerFormalArguments()
10981 ArgValue = unpackFromMemLoc(DAG, Chain, VA, DL); in LowerFormalArguments()
10989 InVals.push_back(DAG.getLoad(VA.getValVT(), DL, Chain, ArgValue, in LowerFormalArguments()
10997 SDValue Offset = DAG.getIntPtrConstant(PartOffset, DL); in LowerFormalArguments()
10999 Offset = DAG.getNode(ISD::VSCALE, DL, XLenVT, Offset); in LowerFormalArguments()
11000 SDValue Address = DAG.getNode(ISD::ADD, DL, PtrVT, ArgValue, Offset); in LowerFormalArguments()
11001 InVals.push_back(DAG.getLoad(PartVA.getValVT(), DL, Chain, Address, in LowerFormalArguments()
11052 SDValue ArgValue = DAG.getCopyFromReg(Chain, DL, Reg, XLenVT); in LowerFormalArguments()
11055 SDValue Store = DAG.getStore(Chain, DL, ArgValue, PtrOff, in LowerFormalArguments()
11069 Chain = DAG.getNode(ISD::TokenFactor, DL, MVT::Other, OutChains); in LowerFormalArguments()
11158 SDLoc &DL = CLI.DL; in LowerCall() local
11210 SDValue SizeNode = DAG.getConstant(Size, DL, XLenVT); in LowerCall()
11212 Chain = DAG.getMemcpy(Chain, DL, FIPtr, Arg, SizeNode, Alignment, in LowerCall()
11220 Chain = DAG.getCALLSEQ_START(Chain, NumBytes, 0, CLI.DL); in LowerCall()
11236 RISCVISD::SplitF64, DL, DAG.getVTList(MVT::i32, MVT::i32), ArgValue); in LowerCall()
11247 StackPtr = DAG.getCopyFromReg(Chain, DL, RISCV::X2, PtrVT); in LowerCall()
11250 DAG.getStore(Chain, DL, Hi, StackPtr, MachinePointerInfo())); in LowerCall()
11286 SDValue Offset = DAG.getIntPtrConstant(PartOffset, DL); in LowerCall()
11289 Offset = DAG.getNode(ISD::VSCALE, DL, XLenVT, Offset); in LowerCall()
11298 DAG.getStore(Chain, DL, ArgValue, SpillSlot, in LowerCall()
11304 DAG.getNode(ISD::ADD, DL, PtrVT, SpillSlot, PartOffset); in LowerCall()
11306 DAG.getStore(Chain, DL, PartValue, Address, in LowerCall()
11311 ArgValue = convertValVTToLocVT(DAG, ArgValue, VA, DL, Subtarget); in LowerCall()
11328 StackPtr = DAG.getCopyFromReg(Chain, DL, RISCV::X2, PtrVT); in LowerCall()
11330 DAG.getNode(ISD::ADD, DL, PtrVT, StackPtr, in LowerCall()
11331 DAG.getIntPtrConstant(VA.getLocMemOffset(), DL)); in LowerCall()
11335 DAG.getStore(Chain, DL, ArgValue, Address, MachinePointerInfo())); in LowerCall()
11341 Chain = DAG.getNode(ISD::TokenFactor, DL, MVT::Other, MemOpChains); in LowerCall()
11347 Chain = DAG.getCopyToReg(Chain, DL, Reg.first, Reg.second, Glue); in LowerCall()
11371 Callee = DAG.getTargetGlobalAddress(GV, DL, PtrVT, 0, OpFlags); in LowerCall()
11409 return DAG.getNode(RISCVISD::TAIL, DL, NodeTys, Ops); in LowerCall()
11412 Chain = DAG.getNode(RISCVISD::CALL, DL, NodeTys, Ops); in LowerCall()
11418 DAG.getConstant(NumBytes, DL, PtrVT, true), in LowerCall()
11419 DAG.getConstant(0, DL, PtrVT, true), in LowerCall()
11420 Glue, DL); in LowerCall()
11432 DAG.getCopyFromReg(Chain, DL, VA.getLocReg(), VA.getLocVT(), Glue); in LowerCall()
11440 DAG.getCopyFromReg(Chain, DL, ArgGPRs[1], MVT::i32, Glue); in LowerCall()
11443 RetValue = DAG.getNode(RISCVISD::BuildPairF64, DL, MVT::f64, RetValue, in LowerCall()
11447 RetValue = convertLocVTToValVT(DAG, RetValue, VA, DL, Subtarget); in LowerCall()
11482 const SDLoc &DL, SelectionDAG &DAG) const { in LowerReturn() argument
11511 SDValue SplitF64 = DAG.getNode(RISCVISD::SplitF64, DL, in LowerReturn()
11525 Chain = DAG.getCopyToReg(Chain, DL, RegLo, Lo, Glue); in LowerReturn()
11528 Chain = DAG.getCopyToReg(Chain, DL, RegHi, Hi, Glue); in LowerReturn()
11533 Val = convertValVTToLocVT(DAG, Val, VA, DL, Subtarget); in LowerReturn()
11534 Chain = DAG.getCopyToReg(Chain, DL, VA.getLocReg(), Val, Glue); in LowerReturn()
11574 return DAG.getNode(RetOpc, DL, MVT::Other, RetOps); in LowerReturn()
12159 const DataLayout &DL = AI->getModule()->getDataLayout(); in emitMaskedAtomicRMWIntrinsic() local
12161 DL.getTypeStoreSizeInBits(AI->getValOperand()->getType()); in emitMaskedAtomicRMWIntrinsic()
12390 SelectionDAG &DAG, const SDLoc &DL, SDValue Val, SDValue *Parts, in splitValueIntoRegisterParts() argument
12397 Val = DAG.getNode(ISD::BITCAST, DL, MVT::i16, Val); in splitValueIntoRegisterParts()
12398 Val = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i32, Val); in splitValueIntoRegisterParts()
12399 Val = DAG.getNode(ISD::OR, DL, MVT::i32, Val, in splitValueIntoRegisterParts()
12400 DAG.getConstant(0xFFFF0000, DL, MVT::i32)); in splitValueIntoRegisterParts()
12401 Val = DAG.getNode(ISD::BITCAST, DL, MVT::f32, Val); in splitValueIntoRegisterParts()
12426 Val = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, SameEltTypeVT, in splitValueIntoRegisterParts()
12428 DAG.getVectorIdxConstant(0, DL)); in splitValueIntoRegisterParts()
12430 Val = DAG.getNode(ISD::BITCAST, DL, PartVT, Val); in splitValueIntoRegisterParts()
12433 DAG.getNode(ISD::INSERT_SUBVECTOR, DL, PartVT, DAG.getUNDEF(PartVT), in splitValueIntoRegisterParts()
12434 Val, DAG.getVectorIdxConstant(0, DL)); in splitValueIntoRegisterParts()
12444 SelectionDAG &DAG, const SDLoc &DL, const SDValue *Parts, unsigned NumParts, in joinRegisterPartsIntoValue() argument
12451 Val = DAG.getNode(ISD::BITCAST, DL, MVT::i32, Val); in joinRegisterPartsIntoValue()
12452 Val = DAG.getNode(ISD::TRUNCATE, DL, MVT::i16, Val); in joinRegisterPartsIntoValue()
12453 Val = DAG.getNode(ISD::BITCAST, DL, MVT::f16, Val); in joinRegisterPartsIntoValue()
12478 Val = DAG.getNode(ISD::BITCAST, DL, SameEltTypeVT, Val); in joinRegisterPartsIntoValue()
12480 Val = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, ValueVT, Val, in joinRegisterPartsIntoValue()
12481 DAG.getVectorIdxConstant(0, DL)); in joinRegisterPartsIntoValue()
12515 SDLoc DL(N); in BuildSDIVPow2() local
12517 SDValue Zero = DAG.getConstant(0, DL, VT); in BuildSDIVPow2()
12518 SDValue Pow2MinusOne = DAG.getConstant((1ULL << Lg2) - 1, DL, VT); in BuildSDIVPow2()
12521 SDValue Cmp = DAG.getSetCC(DL, VT, N0, Zero, ISD::SETLT); in BuildSDIVPow2()
12522 SDValue Add = DAG.getNode(ISD::ADD, DL, VT, N0, Pow2MinusOne); in BuildSDIVPow2()
12523 SDValue Sel = DAG.getNode(ISD::SELECT, DL, VT, Cmp, Add, N0); in BuildSDIVPow2()
12531 DAG.getNode(ISD::SRA, DL, VT, Sel, DAG.getConstant(Lg2, DL, VT)); in BuildSDIVPow2()
12539 return DAG.getNode(ISD::SUB, DL, VT, DAG.getConstant(0, DL, VT), SRA); in BuildSDIVPow2()