[llvm] [AArch64] Use CNEG for absolute difference patterns. (PR #151177)

Paul Walker via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 29 10:03:16 PDT 2025


================
@@ -11386,6 +11386,22 @@ SDValue AArch64TargetLowering::LowerSELECT_CC(
       return DAG.getNode(ISD::AND, DL, VT, LHS, Shift);
     }
 
+    // Canonicalise absolute difference patterns:
+    //   select(cc, sub(lhs, rhs), sub(rhs, lhs)) ->
+    //   select(cc, sub(lhs, rhs), neg(sub(lhs, rhs)))
+    //
+    //   select(cc, sub(rhs, lhs), sub(lhs, rhs)) ->
+    //   select(cc, neg(sub(lhs, rhs)), sub(lhs, rhs))
----------------
paulwalker-arm wrote:

```suggestion
    //   select_cc lhs, rhs, sub(lhs, rhs), sub(rhs, lhs), cc ->
    //   select_cc lhs, rhs, sub(lhs, rhs), neg(sub(lhs, rhs)), cc
    //
    //   select_cc lhs, rhs, sub(rhs, lhs), sub(lhs, rhs), cc ->
    //   select_cc lhs, rhs, neg(sub(lhs, rhs)), sub(lhs, rhs), cc
```

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


More information about the llvm-commits mailing list