[llvm-commits] [llvm-gcc-4.0]Patch to make llvm-gcc emit llvm.pow/sin/cos.* [for review]

Chris Lattner clattner at apple.com
Fri Nov 23 10:42:32 PST 2007

> Another benefit I can imagine is that using llvm.pow.* will make  
> code more effective than using @pow.
> As llvm began to support apfloat, and as the llvm LangRef says "You  
> can use llvm.pow on any floating point or vector of floating point  
> type. Not all targets support all types however", we may get chance  
> to optimize the lR code by using llvm.pow.* .
> For example, That will avoid code like:
> %tmp1 = fpext %x to double
> %tmp2 = fpext %y to double
> %tmp3 = call @pow(%tmp1, %tmp2)
> %result = fptrunc %tmp3 to SomeSmallFloatingType  //
> The above code (the fpext/fptrunc stuff) also  might block other  
> optimizations.
> And in optimization pass, we may have chance to minimize the fp size.

Duncan is right: there is no advantage of llvm.pow here over pow/powf,  
etc.  LLVM optimization passes can and do hack on standard libc  
functions (see simplifylibcalls pass).

The only advantage of llvm.pow.* is that it applies to vector operands  
as well as scalars.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20071123/0b12a75f/attachment.html>

More information about the llvm-commits mailing list