@@ -196,9 +196,10 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
196196 }
197197 }
198198
199- // PowerPC uses addo,addo_carry,subo,subo_carry to propagate carry.
200199 setOperationAction(ISD::UADDO, RegVT, Custom);
201200 setOperationAction(ISD::USUBO, RegVT, Custom);
201+
202+ // PowerPC uses addo_carry,subo_carry to propagate carry.
202203 setOperationAction(ISD::UADDO_CARRY, RegVT, Custom);
203204 setOperationAction(ISD::USUBO_CARRY, RegVT, Custom);
204205
@@ -18306,8 +18307,9 @@ static SDValue combineADDToADDZE(SDNode *N, SelectionDAG &DAG,
1830618307 DAG.getConstant(NegConstant, DL, MVT::i64));
1830718308 SDValue AddOrZ = NegConstant != 0 ? Add : Z;
1830818309 SDValue Addc =
18309- DAG.getNode(ISD::UADDO, DL, DAG.getVTList(MVT::i64, CarryType), AddOrZ,
18310- DAG.getConstant(-1ULL, DL, MVT::i64));
18310+ DAG.getNode(ISD::UADDO_CARRY, DL, DAG.getVTList(MVT::i64, CarryType),
18311+ AddOrZ, DAG.getConstant(-1ULL, DL, MVT::i64),
18312+ DAG.getConstant(0, DL, CarryType));
1831118313 return DAG.getNode(ISD::UADDO_CARRY, DL, VTs, LHS,
1831218314 DAG.getConstant(0, DL, MVT::i64),
1831318315 SDValue(Addc.getNode(), 1));
@@ -18323,8 +18325,9 @@ static SDValue combineADDToADDZE(SDNode *N, SelectionDAG &DAG,
1832318325 DAG.getConstant(NegConstant, DL, MVT::i64));
1832418326 SDValue AddOrZ = NegConstant != 0 ? Add : Z;
1832518327 SDValue Subc =
18326- DAG.getNode(ISD::USUBO, DL, DAG.getVTList(MVT::i64, CarryType),
18327- DAG.getConstant(0, DL, MVT::i64), AddOrZ);
18328+ DAG.getNode(ISD::USUBO_CARRY, DL, DAG.getVTList(MVT::i64, CarryType),
18329+ DAG.getConstant(0, DL, MVT::i64), AddOrZ,
18330+ DAG.getConstant(0, DL, CarryType));
1832818331 SDValue Invert = DAG.getNode(ISD::XOR, DL, CarryType, Subc.getValue(1),
1832918332 DAG.getAllOnesConstant(DL, CarryType));
1833018333 return DAG.getNode(ISD::UADDO_CARRY, DL, VTs, LHS,
0 commit comments