reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
2656 SDLoc dl(Node); 2659 switch (Node->getOpcode()) { 2661 if (TLI.expandABS(Node, Tmp1, DAG)) 2665 if (TLI.expandCTPOP(Node, Tmp1, DAG)) 2670 if (TLI.expandCTLZ(Node, Tmp1, DAG)) 2675 if (TLI.expandCTTZ(Node, Tmp1, DAG)) 2679 Results.push_back(ExpandBITREVERSE(Node->getOperand(0), dl)); 2682 Results.push_back(ExpandBSWAP(Node->getOperand(0), dl)); 2687 Results.push_back(DAG.getConstant(0, dl, Node->getValueType(0))); 2690 SDValue CfaArg = DAG.getSExtOrTrunc(Node->getOperand(0), dl, 2705 Results.push_back(DAG.getConstant(1, dl, Node->getValueType(0))); 2714 Results.push_back(Node->getOperand(0)); 2719 Results.append(Node->getNumValues() - 1, 2720 DAG.getConstant(0, dl, Node->getValueType(0))); 2721 Results.push_back(Node->getOperand(0)); 2727 Results.push_back(Node->getOperand(0)); 2731 SDValue Zero = DAG.getConstant(0, dl, Node->getValueType(0)); 2732 SDVTList VTs = DAG.getVTList(Node->getValueType(0), MVT::Other); 2734 ISD::ATOMIC_CMP_SWAP, dl, cast<AtomicSDNode>(Node)->getMemoryVT(), VTs, 2735 Node->getOperand(0), Node->getOperand(1), Zero, Zero, 2735 Node->getOperand(0), Node->getOperand(1), Zero, Zero, 2736 cast<AtomicSDNode>(Node)->getMemOperand()); 2744 cast<AtomicSDNode>(Node)->getMemoryVT(), 2745 Node->getOperand(0), 2746 Node->getOperand(1), Node->getOperand(2), 2746 Node->getOperand(1), Node->getOperand(2), 2747 cast<AtomicSDNode>(Node)->getMemOperand()); 2755 SDVTList VTs = DAG.getVTList(Node->getValueType(0), MVT::Other); 2757 ISD::ATOMIC_CMP_SWAP, dl, cast<AtomicSDNode>(Node)->getMemoryVT(), VTs, 2758 Node->getOperand(0), Node->getOperand(1), Node->getOperand(2), 2758 Node->getOperand(0), Node->getOperand(1), Node->getOperand(2), 2758 Node->getOperand(0), Node->getOperand(1), Node->getOperand(2), 2759 Node->getOperand(3), cast<MemSDNode>(Node)->getMemOperand()); 2759 Node->getOperand(3), cast<MemSDNode>(Node)->getMemOperand()); 2763 SDValue RHS = Node->getOperand(1); 2765 EVT AtomicType = cast<AtomicSDNode>(Node)->getMemoryVT(); 2766 EVT OuterType = Node->getValueType(0); 2772 Node->getOperand(2), DAG.getValueType(AtomicType)); 2778 RHS = DAG.getZeroExtendInReg(Node->getOperand(2), dl, AtomicType); 2783 RHS = DAG.getZeroExtendInReg(Node->getOperand(2), dl, AtomicType); 2790 DAG.getSetCC(dl, Node->getValueType(1), LHS, RHS, ISD::SETEQ); 2798 ExpandDYNAMIC_STACKALLOC(Node, Results); 2801 for (unsigned i = 0; i < Node->getNumValues(); i++) 2802 Results.push_back(Node->getOperand(i)); 2805 EVT VT = Node->getValueType(0); 2817 if (TLI.getStrictFPOperationAction(Node->getOpcode(), 2818 Node->getValueType(0)) 2821 Tmp1 = EmitStackConvert(Node->getOperand(1), 2822 Node->getValueType(0), 2823 Node->getValueType(0), dl, Node->getOperand(0)); 2823 Node->getValueType(0), dl, Node->getOperand(0)); 2824 ReplaceNode(Node, Tmp1.getNode()); 2829 Tmp1 = EmitStackConvert(Node->getOperand(0), 2830 Node->getValueType(0), 2831 Node->getValueType(0), dl); 2837 if (TLI.getStrictFPOperationAction(Node->getOpcode(), 2838 Node->getValueType(0)) 2841 Tmp1 = EmitStackConvert(Node->getOperand(1), 2842 Node->getOperand(1).getValueType(), 2843 Node->getValueType(0), dl, Node->getOperand(0)); 2843 Node->getValueType(0), dl, Node->getOperand(0)); 2844 ReplaceNode(Node, Tmp1.getNode()); 2848 Tmp1 = EmitStackConvert(Node->getOperand(0), 2849 Node->getOperand(0).getValueType(), 2850 Node->getValueType(0), dl); 2854 EVT ExtraVT = cast<VTSDNode>(Node->getOperand(1))->getVT(); 2855 EVT VT = Node->getValueType(0); 2866 SDValue And = DAG.getNode(ISD::AND, dl, VT, Node->getOperand(0), One); 2879 Tmp1 = DAG.getNode(ISD::SHL, dl, Node->getValueType(0), 2880 Node->getOperand(0), ShiftCst); 2881 Tmp1 = DAG.getNode(ISD::SRA, dl, Node->getValueType(0), Tmp1, ShiftCst); 2886 if (TLI.expandUINT_TO_FP(Node, Tmp1, DAG)) { 2892 Tmp1 = ExpandLegalINT_TO_FP(Node->getOpcode() == ISD::SINT_TO_FP, 2893 Node->getOperand(0), Node->getValueType(0), dl); 2893 Node->getOperand(0), Node->getValueType(0), dl); 2897 if (TLI.expandFP_TO_SINT(Node, Tmp1, DAG)) 2901 if (TLI.expandFP_TO_SINT(Node, Tmp1, DAG)) { 2902 ReplaceNode(Node, Tmp1.getNode()); 2908 if (TLI.expandFP_TO_UINT(Node, Tmp1, Tmp2, DAG)) 2912 if (TLI.expandFP_TO_UINT(Node, Tmp1, Tmp2, DAG)) { 2914 DAG.ReplaceAllUsesOfValueWith(SDValue(Node,1), Tmp2); 2916 ReplaceNodeWithValue(SDValue(Node, 0), Tmp1); 2922 Results.push_back(DAG.expandVAArg(Node)); 2926 Results.push_back(DAG.expandVACopy(Node)); 2929 if (Node->getOperand(0).getValueType().getVectorNumElements() == 1) 2931 Tmp1 = DAG.getNode(ISD::BITCAST, dl, Node->getValueType(0), 2932 Node->getOperand(0)); 2934 Tmp1 = ExpandExtractFromVectorThroughStack(SDValue(Node, 0)); 2938 Results.push_back(ExpandExtractFromVectorThroughStack(SDValue(Node, 0))); 2941 Results.push_back(ExpandInsertToVectorThroughStack(SDValue(Node, 0))); 2944 Results.push_back(ExpandVectorBuildThroughStack(Node)); 2947 Results.push_back(ExpandSCALAR_TO_VECTOR(Node)); 2950 Results.push_back(ExpandINSERT_VECTOR_ELT(Node->getOperand(0), 2951 Node->getOperand(1), 2952 Node->getOperand(2), dl)); 2956 ArrayRef<int> Mask = cast<ShuffleVectorSDNode>(Node)->getMask(); 2958 EVT VT = Node->getValueType(0); 2960 SDValue Op0 = Node->getOperand(0); 2961 SDValue Op1 = Node->getOperand(1); 3026 Tmp1 = DAG.getNode(ISD::BITCAST, dl, Node->getValueType(0), Tmp1); 3031 EVT OpTy = Node->getOperand(0).getValueType(); 3032 if (cast<ConstantSDNode>(Node->getOperand(1))->getZExtValue()) { 3034 Tmp1 = DAG.getNode(ISD::SRL, dl, OpTy, Node->getOperand(0), 3037 Node->getOperand(0).getValueType(), 3039 Tmp1 = DAG.getNode(ISD::TRUNCATE, dl, Node->getValueType(0), Tmp1); 3042 Tmp1 = DAG.getNode(ISD::TRUNCATE, dl, Node->getValueType(0), 3043 Node->getOperand(0)); 3052 Results.push_back(DAG.getCopyFromReg(Node->getOperand(0), dl, SP, 3053 Node->getValueType(0))); 3056 Results.push_back(DAG.getUNDEF(Node->getValueType(0))); 3057 Results.push_back(Node->getOperand(0)); 3064 Results.push_back(DAG.getCopyToReg(Node->getOperand(0), dl, SP, 3065 Node->getOperand(1))); 3067 Results.push_back(Node->getOperand(0)); 3071 Results.push_back(DAG.getConstant(0, dl, Node->getValueType(0))); 3075 Results.push_back(ExpandFCOPYSIGN(Node)); 3079 Tmp1 = DAG.getConstantFP(-0.0, dl, Node->getValueType(0)); 3081 Tmp1 = DAG.getNode(ISD::FSUB, dl, Node->getValueType(0), Tmp1, 3082 Node->getOperand(0)); 3086 Results.push_back(ExpandFABS(Node)); 3094 switch (Node->getOpcode()) { 3101 Tmp1 = Node->getOperand(0); 3102 Tmp2 = Node->getOperand(1); 3109 if (SDValue Expanded = TLI.expandFMINNUM_FMAXNUM(Node, DAG)) 3115 EVT VT = Node->getValueType(0); 3119 isSinCosLibcallAvailable(Node, TLI)) 3120 && useSinCos(Node)) { 3122 Tmp1 = DAG.getNode(ISD::FSINCOS, dl, VTs, Node->getOperand(0)); 3123 if (Node->getOpcode() == ISD::FCOS) 3133 if (Node->getValueType(0) != MVT::f32) { 3138 DAG.getNode(ISD::FP16_TO_FP, dl, MVT::f32, Node->getOperand(0)); 3140 DAG.getNode(ISD::FP_EXTEND, dl, Node->getValueType(0), Res)); 3146 SDValue Op = Node->getOperand(0); 3155 DAG.getNode(ISD::FP_TO_FP16, dl, Node->getValueType(0), FloatVal)); 3160 ConstantFPSDNode *CFP = cast<ConstantFPSDNode>(Node); 3163 if (!TLI.isFPImmLegal(CFP->getValueAPF(), Node->getValueType(0), 3169 ConstantSDNode *CP = cast<ConstantSDNode>(Node); 3174 EVT VT = Node->getValueType(0); 3177 const SDNodeFlags Flags = Node->getFlags(); 3178 Tmp1 = DAG.getNode(ISD::FNEG, dl, VT, Node->getOperand(1)); 3179 Tmp1 = DAG.getNode(ISD::FADD, dl, VT, Node->getOperand(0), Tmp1, Flags); 3185 EVT VT = Node->getValueType(0); 3189 Tmp1 = DAG.getNode(ISD::XOR, dl, VT, Node->getOperand(1), 3193 Results.push_back(DAG.getNode(ISD::ADD, dl, VT, Node->getOperand(0), Tmp1)); 3198 EVT VT = Node->getValueType(0); 3199 bool isSigned = Node->getOpcode() == ISD::SREM; 3202 Tmp2 = Node->getOperand(0); 3203 Tmp3 = Node->getOperand(1); 3219 bool isSigned = Node->getOpcode() == ISD::SDIV; 3221 EVT VT = Node->getValueType(0); 3224 Tmp1 = DAG.getNode(DivRemOpc, dl, VTs, Node->getOperand(0), 3225 Node->getOperand(1)); 3233 Node->getOpcode() == ISD::MULHU ? ISD::UMUL_LOHI : ISD::SMUL_LOHI; 3234 EVT VT = Node->getValueType(0); 3237 Tmp1 = DAG.getNode(ExpandOpcode, dl, VTs, Node->getOperand(0), 3238 Node->getOperand(1)); 3244 SDValue LHS = Node->getOperand(0); 3245 SDValue RHS = Node->getOperand(1); 3248 Node->getOpcode() == ISD::UMUL_LOHI ? ISD::MULHU : ISD::MULHS; 3259 if (TLI.expandMUL_LOHI(Node->getOpcode(), VT, Node, LHS, RHS, Halves, 3259 if (TLI.expandMUL_LOHI(Node->getOpcode(), VT, Node, LHS, RHS, Halves, 3276 EVT VT = Node->getValueType(0); 3298 Results.push_back(DAG.getNode(OpToUse, dl, VTs, Node->getOperand(0), 3299 Node->getOperand(1))); 3309 TLI.expandMUL(Node, Lo, Hi, HalfType, DAG, 3323 if (TLI.expandFunnelShift(Node, Tmp1, DAG)) 3328 if (TLI.expandROT(Node, Tmp1, DAG)) 3335 Results.push_back(TLI.expandAddSubSat(Node, DAG)); 3341 Results.push_back(TLI.expandFixedPointMul(Node, DAG)); 3345 SDValue LHS = Node->getOperand(0); 3346 SDValue RHS = Node->getOperand(1); 3347 SDValue Carry = Node->getOperand(2); 3349 bool IsAdd = Node->getOpcode() == ISD::ADDCARRY; 3357 EVT CarryType = Node->getValueType(1); 3358 EVT SetCCType = getSetCCResultType(Node->getValueType(0)); 3388 TLI.expandSADDSUBO(Node, Result, Overflow, DAG); 3396 TLI.expandUADDSUBO(Node, Result, Overflow, DAG); 3404 if (TLI.expandMULO(Node, Result, Overflow, DAG)) { 3411 EVT PairTy = Node->getValueType(0); 3412 Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, dl, PairTy, Node->getOperand(0)); 3413 Tmp2 = DAG.getNode(ISD::ANY_EXTEND, dl, PairTy, Node->getOperand(1)); 3422 Tmp1 = Node->getOperand(0); 3423 Tmp2 = Node->getOperand(1); 3424 Tmp3 = Node->getOperand(2); 3434 Tmp1->setFlags(Node->getFlags()); 3438 SDValue Chain = Node->getOperand(0); 3439 SDValue Table = Node->getOperand(1); 3440 SDValue Index = Node->getOperand(2); 3482 Tmp1 = Node->getOperand(0); 3483 Tmp2 = Node->getOperand(1); 3488 Node->getOperand(2)); 3502 Node->getOperand(2)); 3507 Tmp1 = Node->getOperand(0); 3508 Tmp2 = Node->getOperand(1); 3509 Tmp3 = Node->getOperand(2); 3510 bool Legalized = LegalizeSetCCCondCode(Node->getValueType(0), Tmp1, Tmp2, 3517 Tmp1 = DAG.getNode(ISD::SETCC, dl, Node->getValueType(0), 3518 Tmp1, Tmp2, Tmp3, Node->getFlags()); 3531 EVT VT = Node->getValueType(0); 3546 Tmp1->setFlags(Node->getFlags()); 3551 Tmp1 = Node->getOperand(0); // LHS 3552 Tmp2 = Node->getOperand(1); // RHS 3553 Tmp3 = Node->getOperand(2); // True 3554 Tmp4 = Node->getOperand(3); // False 3555 EVT VT = Node->getValueType(0); 3556 SDValue CC = Node->getOperand(4); 3567 SDValue Cond = DAG.getNode(ISD::SETCC, dl, CCVT, Tmp1, Tmp2, CC, Node->getFlags()); 3583 Tmp1->setFlags(Node->getFlags()); 3593 Tmp1->setFlags(Node->getFlags()); 3612 Tmp1 = DAG.getNode(ISD::SELECT_CC, dl, Node->getValueType(0), 3617 Tmp1 = DAG.getNode(ISD::SELECT_CC, dl, Node->getValueType(0), Tmp1, 3620 Tmp1->setFlags(Node->getFlags()); 3626 Tmp1 = Node->getOperand(0); // Chain 3627 Tmp2 = Node->getOperand(2); // LHS 3628 Tmp3 = Node->getOperand(3); // RHS 3629 Tmp4 = Node->getOperand(1); // CC 3641 Tmp1 = DAG.getNode(ISD::BR_CC, dl, Node->getValueType(0), Tmp1, 3642 Tmp4, Tmp2, Tmp3, Node->getOperand(4)); 3646 Tmp1 = DAG.getNode(ISD::BR_CC, dl, Node->getValueType(0), Tmp1, Tmp4, 3647 Tmp2, Tmp3, Node->getOperand(4)); 3653 Results.push_back(ExpandBUILD_VECTOR(Node)); 3656 Results.push_back(ExpandSPLAT_VECTOR(Node)); 3662 EVT VT = Node->getValueType(0); 3670 ISD::EXTRACT_VECTOR_ELT, dl, VT.getScalarType(), Node->getOperand(0), 3673 ISD::EXTRACT_VECTOR_ELT, dl, VT.getScalarType(), Node->getOperand(1), 3675 Scalars.push_back(DAG.getNode(Node->getOpcode(), dl, 3679 SDValue Result = DAG.getBuildVector(Node->getValueType(0), dl, Scalars); 3680 ReplaceNode(SDValue(Node, 0), Result); 3696 Results.push_back(TLI.expandVecReduce(Node, DAG)); 3711 if (Results.empty() && Node->isStrictFPOpcode()) { 3717 switch (Node->getOpcode()) { 3719 if (TLI.getStrictFPOperationAction(Node->getOpcode(), 3720 Node->getValueType(0)) 3730 if (TLI.getStrictFPOperationAction(Node->getOpcode(), 3731 Node->getOperand(1).getValueType()) 3745 ReplaceNode(Node, Results.data());