@@ -196,9 +196,10 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
196
196
}
197
197
}
198
198
199
- // PowerPC uses addo,addo_carry,subo,subo_carry to propagate carry.
200
199
setOperationAction(ISD::UADDO, RegVT, Custom);
201
200
setOperationAction(ISD::USUBO, RegVT, Custom);
201
+
202
+ // PowerPC uses addo_carry,subo_carry to propagate carry.
202
203
setOperationAction(ISD::UADDO_CARRY, RegVT, Custom);
203
204
setOperationAction(ISD::USUBO_CARRY, RegVT, Custom);
204
205
@@ -18306,8 +18307,9 @@ static SDValue combineADDToADDZE(SDNode *N, SelectionDAG &DAG,
18306
18307
DAG.getConstant(NegConstant, DL, MVT::i64));
18307
18308
SDValue AddOrZ = NegConstant != 0 ? Add : Z;
18308
18309
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));
18311
18313
return DAG.getNode(ISD::UADDO_CARRY, DL, VTs, LHS,
18312
18314
DAG.getConstant(0, DL, MVT::i64),
18313
18315
SDValue(Addc.getNode(), 1));
@@ -18323,8 +18325,9 @@ static SDValue combineADDToADDZE(SDNode *N, SelectionDAG &DAG,
18323
18325
DAG.getConstant(NegConstant, DL, MVT::i64));
18324
18326
SDValue AddOrZ = NegConstant != 0 ? Add : Z;
18325
18327
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));
18328
18331
SDValue Invert = DAG.getNode(ISD::XOR, DL, CarryType, Subc.getValue(1),
18329
18332
DAG.getAllOnesConstant(DL, CarryType));
18330
18333
return DAG.getNode(ISD::UADDO_CARRY, DL, VTs, LHS,
0 commit comments