[llvm] [PPC] Add custom lowering for uaddo (PR #110137)
Eli Friedman via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 26 14:37:35 PDT 2024
================
@@ -11967,11 +11970,51 @@ SDValue PPCTargetLowering::LowerFP_EXTEND(SDValue Op, SelectionDAG &DAG) const {
llvm_unreachable("ERROR:Should return for all cases within swtich.");
}
+SDValue PPCTargetLowering::LowerUaddo(SDValue Op, SelectionDAG &DAG) const {
+ // Default to target independent lowering if there is a logical user of the
+ // carry-bit.
+ for (SDNode *U : Op->uses()) {
+ if (U->getOpcode() == ISD::SELECT || ISD::isBitwiseLogicOp(U->getOpcode()))
+ return SDValue();
+ }
+ SDValue LHS = Op.getOperand(0);
+ SDValue RHS = Op.getOperand(1);
+ SDLoc dl(Op);
+
+ // Default to target independent lowering for special cases handled there.
+ if (isOneConstant(RHS) || isAllOnesConstant(RHS))
+ return SDValue();
+
+ EVT VT = Op.getNode()->getValueType(0);
+ bool is64Bit = Subtarget.isPPC64();
+
+ SDValue ADDC;
+ SDValue Overflow;
+ SDVTList VTs = Op.getNode()->getVTList();
+
+ ADDC = SDValue(DAG.getMachineNode(is64Bit ? PPC::ADDC8 : PPC::ADDC, dl, VT,
----------------
efriedma-quic wrote:
Please avoid getMachineNode() during legalization; add appropriate PPCISD nodes if necessary. (Or maybe you can just use ISD::ADDC/ISD::ADDE.)
https://github.com/llvm/llvm-project/pull/110137
More information about the llvm-commits
mailing list