+SDValue DAGTypeLegalizer::PromoteIntRes_XADDO(SDNode *N, unsigned ResNo,
+ ISD::NodeType NTy) {
+ MVT NewVT = TLI.getTypeToTransformTo(SDValue(N, ResNo).getValueType());
+ assert(isTypeLegal(NewVT) && "Illegal XADDO type!");
+
+ MVT ValueVTs[] = { N->getOperand(0).getValueType(), NewVT };
+ SDValue Ops[] = { N->getOperand(0), N->getOperand(1) };
+
+ SDValue Res = DAG.getNode(NTy, DAG.getVTList(&ValueVTs[0], 2), &Ops[0], 2);
+ ReplaceValueWith(SDValue(N, 0), SDValue(Res.getNode(), 0));
+ ReplaceValueWith(SDValue(N, 1), SDValue(Res.getNode(), 1));
+ return Res;
+}
+
+SDValue DAGTypeLegalizer::PromoteIntRes_SADDO(SDNode *N, unsigned ResNo) {
+ return PromoteIntRes_XADDO(N, ResNo, ISD::SADDO);
+}
+
+SDValue DAGTypeLegalizer::PromoteIntRes_UADDO(SDNode *N, unsigned ResNo) {
+ return PromoteIntRes_XADDO(N, ResNo, ISD::UADDO);
+}
+