[llvm] [AArch64][DAG] Port adde and sube combine to AArch64 (PR #202227)
Ricardo Jesus via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 3 09:41:05 PDT 2026
================
@@ -30285,17 +30322,25 @@ SDValue AArch64TargetLowering::PerformDAGCombine(SDNode *N,
case AArch64ISD::ADC:
if (auto R = foldOverflowCheck(N, DAG, /* IsAdd */ true))
return R;
+ if (auto R = performAddSubCarryCombine(N, DAG))
+ return R;
return foldADCToCINC(N, DAG);
case AArch64ISD::SBC:
- return foldOverflowCheck(N, DAG, /* IsAdd */ false);
+ if (auto R = foldOverflowCheck(N, DAG, /* IsAdd */ false))
+ return R;
+ return performAddSubCarryCombine(N, DAG);
case AArch64ISD::ADCS:
if (auto R = foldOverflowCheck(N, DAG, /* IsAdd */ true))
return R;
- return performFlagSettingCombine(N, DCI, AArch64ISD::ADC);
+ if (auto R = performFlagSettingCombine(N, DCI, AArch64ISD::ADC))
+ return R;
+ return performAddSubCarryCombine(N, DAG);
case AArch64ISD::SBCS:
if (auto R = foldOverflowCheck(N, DAG, /* IsAdd */ false))
return R;
- return performFlagSettingCombine(N, DCI, AArch64ISD::SBC);
+ if (auto R = performFlagSettingCombine(N, DCI, AArch64ISD::SBC))
+ return R;
+ return performAddSubCarryCombine(N, DAG);
----------------
rj-jesus wrote:
Maybe could pass the matching opcode and avoid the switch in performAddSubCarryCombine
https://github.com/llvm/llvm-project/pull/202227
More information about the llvm-commits
mailing list