[LLVMdev] llvm-gcc cannot emit @llvm.pow.* ?
Duncan Sands
baldrick at free.fr
Thu Nov 22 00:38:04 PST 2007
Hi,
> Current llvm-gcc cannot emit llvm intrinsic function like llvm.pow.* and
> llvm.sin.*
> For example:
>
> double foo(double x, double y) {
> return pow(x,y);
> }
>
> will compiled into ll:
>
> define double @foo(double %x, double %y) {
> %tmp3 = tail call double @pow( double %x, double %y )
> ret double %tmp3
> }
>
> This is not consistent with llvm language reference.
first of all, this is logically wrong - the language reference
doesn't say anywhere that you *have* to use llvm.pow.* rather than
pow from the C library. Also, don't forget that the llvm intrinsics
don't set errno, so using them is only valid on systems/for languages
for which errno is ignored. That said, llvm.pow.* is for raising
to an integer power, and here you raise to a double power.
Ciao,
Duncan.
More information about the llvm-dev
mailing list