[llvm] [GlobalIsel] Combine ADDO (PR #82927)

Thorsten Schütt via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 14 05:35:37 PDT 2024


================
@@ -6928,3 +6930,178 @@ bool CombinerHelper::matchOr(MachineInstr &MI, BuildFnTy &MatchInfo) {
 
   return false;
 }
+
+bool CombinerHelper::matchAddOverflow(MachineInstr &MI, BuildFnTy &MatchInfo) {
+  GAddCarryOut *Add = cast<GAddCarryOut>(&MI);
+
+  // Addo has no flags
+  Register Dst = Add->getReg(0);
+  Register Carry = Add->getReg(1);
+  Register LHS = Add->getLHSReg();
+  Register RHS = Add->getRHSReg();
+  bool IsSigned = Add->isSigned();
+  LLT DstTy = MRI.getType(Dst);
+  LLT CarryTy = MRI.getType(Carry);
+
+  // We want do fold the [u|s]addo.
----------------
tschuett wrote:

If the result `Dst` has multiple uses, then we cannot replace it.

https://github.com/llvm/llvm-project/pull/82927


More information about the llvm-commits mailing list