[PATCH] D50035: [SLC] Expand simplification of pow() for vector types

Evandro Menezes via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 10 11:17:43 PDT 2018


evandro added inline comments.


================
Comment at: llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp:1171-1172
+  // Bail out if simplifying libcalls to pow() is disabled.
+  if (!hasUnaryFloatFn(TLI, Ty, LibFunc_pow, LibFunc_powf, LibFunc_powl))
+    return nullptr;
+
----------------
spatel wrote:
> evandro wrote:
> > spatel wrote:
> > > evandro wrote:
> > > > spatel wrote:
> > > > > Why do we need this check? In all of the affected transforms, we're not transforming *to* pow(). Is there a known bug without this check? Given that we have a pow intrinsic, I don't see the problem.
> > > > Without this check, `pow()` would be simplified even with `-disable-simplify-libcalls` and `pow-3.ll` would fail.
> > > No, that test still passes (we don't convert) because we check for the availability of sqrt() before trying the transform.
> > > 
> > > I suppose this raises a question: if -disable-simplify-libcalls is specified, should that preclude simplifications from LLVM intrinsics that mimic libcalls to other LLVM intrinsics that mimic libcalls?
> > > ...but that's probably best left to another patch or asked on llvm-dev.
> > `-disable-simplify-libcalls` disables all functions, including `pow()` itself.  As I understand it, no optimization should then be performed on libcalls.  Again, without these lines, `pow-3.ll` fails.
> There must be something different between our local machines then. I'm applying this patch on an unmodified trunk r339434, deleting the check for pow(), and running 'make check'. Everything passes. 
> 
> And I even stepped through in the debugger to confirm the reason as I stated earlier - the sqrt() check fails, so there is no transform. Can you step through and see how that check is bypassed on your machine?
You're right.  We're looking at different stages of the tree.  

Regardless, without this check, `pow()` could still be shrunk below, which I don't think is desired with `-disable-simplify-libcalls`.


https://reviews.llvm.org/D50035





More information about the llvm-commits mailing list