reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
2856 EVT VT = N0.getValueType(); 2866 return N0; 2871 if (N0 == N1) 2873 if (DAG.isConstantIntBuildVectorOrConstantInt(N0) && 2876 return DAG.FoldConstantArithmetic(ISD::SUB, DL, VT, N0.getNode(), 2887 return DAG.getNode(ISD::ADD, DL, VT, N0, 2891 if (isNullOrNullSplat(N0)) { 2908 return N0; 2914 return N0; 2922 if (isAllOnesOrAllOnesSplat(N0)) 2923 return DAG.getNode(ISD::XOR, DL, VT, N1, N0); 2927 return DAG.getNode(ISD::ADD, DL, VT, N0, N1.getOperand(1)); 2930 if (N1.getOpcode() == ISD::SUB && N0 == N1.getOperand(0)) 2934 if (N0.getOpcode() == ISD::ADD && N0.getOperand(0) == N1) 2934 if (N0.getOpcode() == ISD::ADD && N0.getOperand(0) == N1) 2935 return N0.getOperand(1); 2938 if (N0.getOpcode() == ISD::ADD && N0.getOperand(1) == N1) 2938 if (N0.getOpcode() == ISD::ADD && N0.getOperand(1) == N1) 2939 return N0.getOperand(0); 2942 if (N0.getOpcode() == ISD::ADD && 2944 isConstantOrConstantVector(N0.getOperand(1), /* NoOpaques */ true)) { 2946 ISD::SUB, DL, VT, N0.getOperand(1).getNode(), N1.getNode()); 2948 return DAG.getNode(ISD::ADD, DL, VT, N0.getOperand(0), NewC); 2954 if (isConstantOrConstantVector(N0, /* NoOpaques */ true) && 2956 SDValue NewC = DAG.FoldConstantArithmetic(ISD::SUB, DL, VT, N0.getNode(), 2964 if (N0.getOpcode() == ISD::SUB && 2966 isConstantOrConstantVector(N0.getOperand(1), /* NoOpaques */ true)) { 2968 ISD::ADD, DL, VT, N0.getOperand(1).getNode(), N1.getNode()); 2970 return DAG.getNode(ISD::SUB, DL, VT, N0.getOperand(0), NewC); 2974 if (N0.getOpcode() == ISD::SUB && 2976 isConstantOrConstantVector(N0.getOperand(0), /* NoOpaques */ true)) { 2978 ISD::SUB, DL, VT, N0.getOperand(0).getNode(), N1.getNode()); 2980 return DAG.getNode(ISD::SUB, DL, VT, NewC, N0.getOperand(1)); 2984 if (N0.getOpcode() == ISD::ADD && 2985 (N0.getOperand(1).getOpcode() == ISD::SUB || 2986 N0.getOperand(1).getOpcode() == ISD::ADD) && 2987 N0.getOperand(1).getOperand(0) == N1) 2988 return DAG.getNode(N0.getOperand(1).getOpcode(), DL, VT, N0.getOperand(0), 2988 return DAG.getNode(N0.getOperand(1).getOpcode(), DL, VT, N0.getOperand(0), 2989 N0.getOperand(1).getOperand(1)); 2992 if (N0.getOpcode() == ISD::ADD && N0.getOperand(1).getOpcode() == ISD::ADD && 2992 if (N0.getOpcode() == ISD::ADD && N0.getOperand(1).getOpcode() == ISD::ADD && 2993 N0.getOperand(1).getOperand(1) == N1) 2994 return DAG.getNode(ISD::ADD, DL, VT, N0.getOperand(0), 2995 N0.getOperand(1).getOperand(0)); 2998 if (N0.getOpcode() == ISD::SUB && N0.getOperand(1).getOpcode() == ISD::SUB && 2998 if (N0.getOpcode() == ISD::SUB && N0.getOperand(1).getOpcode() == ISD::SUB && 2999 N0.getOperand(1).getOperand(1) == N1) 3000 return DAG.getNode(ISD::SUB, DL, VT, N0.getOperand(0), 3001 N0.getOperand(1).getOperand(0)); 3005 return DAG.getNode(ISD::ADD, DL, VT, N0, 3016 return DAG.getNode(ISD::ADD, DL, VT, N0, Mul); 3023 return DAG.getNode(ISD::ADD, DL, VT, N0, Mul); 3028 if (N0.isUndef()) 3029 return N0; 3039 if (SDValue V = foldAddSubMasked1(false, N0, N1, DAG, SDLoc(N))) 3043 if (N0.hasOneUse() && N0.getOpcode() == ISD::SUB && isOneOrOneSplat(N1)) { 3043 if (N0.hasOneUse() && N0.getOpcode() == ISD::SUB && isOneOrOneSplat(N1)) { 3044 SDValue Xor = DAG.getNode(ISD::XOR, DL, VT, N0.getOperand(1), 3046 return DAG.getNode(ISD::ADD, DL, VT, Xor, N0.getOperand(0)); 3054 SDValue Add = DAG.getNode(ISD::ADD, DL, VT, N0, N1.getOperand(0)); 3060 if (N0.hasOneUse() && N0.getOpcode() == ISD::ADD && 3060 if (N0.hasOneUse() && N0.getOpcode() == ISD::ADD && 3061 isConstantOrConstantVector(N0.getOperand(1), /*NoOpaques=*/true)) { 3062 SDValue Sub = DAG.getNode(ISD::SUB, DL, VT, N0.getOperand(0), N1); 3063 return DAG.getNode(ISD::ADD, DL, VT, Sub, N0.getOperand(1)); 3068 SDValue Sub = DAG.getNode(ISD::SUB, DL, VT, N0, N1.getOperand(0)); 3073 if (N0.hasOneUse() && N0.getOpcode() == ISD::SUB && 3073 if (N0.hasOneUse() && N0.getOpcode() == ISD::SUB && 3074 isConstantOrConstantVector(N0.getOperand(1), /*NoOpaques=*/true)) { 3075 SDValue Sub = DAG.getNode(ISD::SUB, DL, VT, N0.getOperand(0), N1); 3076 return DAG.getNode(ISD::SUB, DL, VT, Sub, N0.getOperand(1)); 3079 if (N0.hasOneUse() && N0.getOpcode() == ISD::SUB && 3079 if (N0.hasOneUse() && N0.getOpcode() == ISD::SUB && 3080 isConstantOrConstantVector(N0.getOperand(0), /*NoOpaques=*/true)) { 3081 SDValue Add = DAG.getNode(ISD::ADD, DL, VT, N0.getOperand(1), N1); 3082 return DAG.getNode(ISD::SUB, DL, VT, N0.getOperand(0), Add); 3093 return DAG.getNode(ISD::ADD, DL, VT, N0, SExt); 3098 if (N0.getOpcode() == ISD::XOR && N1.getOpcode() == ISD::SRA) { 3099 SDValue X0 = N0.getOperand(0), X1 = N0.getOperand(1); 3099 SDValue X0 = N0.getOperand(0), X1 = N0.getOperand(1); 3111 if (GlobalAddressSDNode *GA = dyn_cast<GlobalAddressSDNode>(N0)) 3131 return DAG.getNode(ISD::ADD, DL, VT, N0, ZExt); 3143 return DAG.getNode(ISD::ADD, DL, VT, N0, SRA); 3149 if (SDValue Carry = getAsCarry(TLI, N0)) {