[llvm-dev] intrinsics

Friedman, Eli via llvm-dev
Tue, 11 Jul 2017 18:16:13 -0000

On 7/11/2017 10:26 AM, Anastasiya Ruzhanskaya via llvm-dev
wrote:
> Hello,
> I would like to find out a detail about intrinsics functions. When I
> use memset form a standard library it is always converted to llvm's
> memset, however the usage of some others as sqrt, pow, sin do not lead
> to the same. How can I get the same effect?

For math functions in particular, the intrinsics don't really match the
semantics of the actual C library functions, so clang doesn't normally
convert them.  (If you use -ffast-math, clang will convert them
anyway.)  This is an area which could probably be improved, but it's
complicated because we depend on the host's libm.

> Why there is no overall LLVM pass like IntrinsicLowerinPass.cpp (it
> has only some specific ones)? There is only a function that does this.

Some intrinsics expose functionality which can't be expressed using IR
instructions.

-Eli

--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux
Foundation Collaborative Project