[llvm] [DAG] Fold (umin (sub a b) a) -> (usubo a b); (select usubo.1 a usubo.0) (PR #161651)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 31 13:19:24 PDT 2025


================
@@ -6216,6 +6216,18 @@ SDValue DAGCombiner::visitIMINMAX(SDNode *N) {
                                         SDLoc(N), VT, N0, N1))
     return SD;
 
+  // (umin (sub a, b) a) -> (usubo a, b); (select usubo.1, a, usubo.0)
+  {
+    SDValue B;
+    if (sd_match(N0, m_Sub(m_Specific(N1), m_Value(B))) &&
+        TLI.isOperationLegalOrCustom(ISD::USUBO, VT)) {
+      EVT SETCCT = getSetCCResultType(VT);
+      SDVTList VTs = DAG.getVTList(VT, SETCCT);
----------------
arsenm wrote:

```suggestion
      SDVTList VTs = DAG.getVTList(VT, getSetCCResultType(VT));
```

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


More information about the llvm-commits mailing list