[llvm] [InstCombine] Convert @log to @llvm.log if the input is known positive. (PR #111428)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 8 13:48:25 PDT 2024


================
@@ -2589,10 +2584,28 @@ Value *LibCallSimplifier::optimizeLog(CallInst *Log, IRBuilderBase &B) {
       PowLb = LibFunc_powl;
       break;
     default:
-      return Ret;
+      return nullptr;
+    }
+
+    // Convert libcall to intrinsic if the value is known > 0.
+    bool IsKnownNoErrno = Log->hasNoNaNs() && Log->hasNoInfs();
+    if (!IsKnownNoErrno) {
+      SimplifyQuery SQ(DL, TLI, DT, AC, Log, true, true, DC);
+      KnownFPClass Known = computeKnownFPClass(
+          Log->getOperand(0),
+          KnownFPClass::OrderedLessThanZeroMask | fcSubnormal,
+          /*Depth=*/0, SQ);
+      Function *F = Log->getParent()->getParent();
+      IsKnownNoErrno = Known.isKnownNeverLogicalZero(*F, Ty) &&
+                       Known.cannotBeOrderedLessThanZero();
----------------
arsenm wrote:

```suggestion
      Function *F = Log->getParent()->getParent();
      IsKnownNoErrno =  Known.cannotBeOrderedLessThanZero() &&
                       Known.isKnownNeverLogicalZero(*F, Ty);
```

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


More information about the llvm-commits mailing list