[llvm-dev] Bug with auto-vectorization of logf

Eric Martin via llvm-dev llvm-dev at lists.llvm.org
Thu Oct 27 11:36:50 PDT 2016


Hi,
I intended to file this bug on Bugzilla, but I've received no response from
llvm-admin in the 10 days since asking for a Bugzilla account.

I've written 2 test functions in C that take in a float array x of size n
and output float array f(x), where f is either fabsf or logf. The LLVM 3.9
auto-vectorization docs claim that both functions will be vectorized:
http://llvm.org/releases/3.9.0/docs/Vectorizers.html#vectorization-of-function-calls

When running with "clang -O3 -march=x86-64 -mavx2 -ffast-math test.c -S
-emit-llvm", the function calling fabsf is vectorized while the function
calling logf is not.  This is with clang 3.9, but I've also confirmed the
bug exists back to at least clang 3.7. I've also observed that logf calls
break vectorization of more complex loops, and I provide the comparison
with fabsf as a reduced test case.

I've attached the C program, a sh script to invoke clang with correct
arguments, and an example LLVM IR file I produced by running on my system.

If someone makes a Bugzilla account for me, I can refile this bug there.

Best,
Eric Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161027/26d0fce0/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: log_autovec_test.tgz
Type: application/x-gzip
Size: 2813 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161027/26d0fce0/attachment.bin>


More information about the llvm-dev mailing list