[LLVMdev] Implementation of builtins/intrinsics

Jean-Daniel Dupas devlists at shadowlab.org
Fri Jan 20 06:01:52 PST 2012


Le 20 janv. 2012 à 14:38, Ruben Van Boxem a écrit :

> Hi,
> 
> Lately, I have been wondering how a compiler like GCC or Clang implements builtin functions like sqrt, sin, and also more bit-specific things like bcmp and ffs. Originially, these were all deferred to the C library where they might still have a "backup implementation", but I don't understand why a compiler would choose the non-builtin version, as it should know its version is faster (or that's the way it should be at least).
> 
>  - How does LLVM cope with builtin's that are target specific? Does the Target backend know of all these specialized instructions?
>  - Does LLVM have a representation for all C library functions that have or might have a future hardware implementation? Or is this mostly handled by the whole toolchain (Clang adds target-specific info into the LLVM bitcode which is forced to produce the asm instruction if the target supports it)?
>  - Is it possible to code a sqrt or sin in LLVM bitcode that will use the hardware instruction if it's compiled for a certain target? 


See the LLVM language reference for the list of supported intrinsics: http://llvm.org/docs/LangRef.html#int_libc

-- Jean-Daniel








More information about the llvm-dev mailing list