[llvm] [RISCV][GISel] Lower G_SSUBE (PR #157855)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 10 09:54:22 PDT 2025


================
@@ -9298,6 +9300,28 @@ LegalizerHelper::lowerSADDO_SSUBO(MachineInstr &MI) {
   return Legalized;
 }
 
+LegalizerHelper::LegalizeResult
+LegalizerHelper::lowerSSUBE(MachineInstr &MI) {
+  auto [Res, OvOut, LHS, RHS, CarryIn] = MI.getFirst5Regs();
+  const LLT Ty     = MRI.getType(Res);
+
+  // sum = LHS - (RHS + zext(CarryIn))
+  auto CarryZ = MIRBuilder.buildZExt(Ty, CarryIn);
+  auto RHSp   = MIRBuilder.buildAdd(Ty, RHS, CarryZ);
+  auto Sum    = MIRBuilder.buildSub(Ty, LHS, RHSp);
+  MIRBuilder.buildCopy(Res, Sum);
----------------
topperc wrote:

Can we use Res for the output of the previous Sub instead of using a copy?

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


More information about the llvm-commits mailing list