[LLVMdev] Math Library Intrinsics as native intrinsics

Dan Gohman gohman at apple.com
Tue Apr 14 09:46:20 PDT 2009

There's at least one other LLVM user which would find these
useful, and probably more, so it may be appropriate to merge
this into the main tree. I'm interested to hear if anyone
else has an opinion here.

An llvm.math namespace seems like a good idea. Instead of
using "fpow" though, I'd prefer to just use names like
"pow". For consistency, the ISD namespace operators could
be renamed to MATH_POW and similar.

The text in LangRef.html that describes the semantics of
llvm.pow needs improvement. Here's an attempt at an
improved description of error handling for LLVM intrinsic
math functions:

The @llvm.math intrinsics use floating-point exceptions
according to IEEE rules for the corresponding math functions.
LLVM IR does not currently define the initial state of the
floating-point status or control flags, or an interface for
querying or setting them. The value of errno after a call to
an @llvm.math intrinsic is undefined.

What do you think?


On Apr 14, 2009, at 8:39 AM, Villmow, Micah wrote:

> Dan,
> I have a large list of functions(60+) that I want to be legalized. I
> have currently been adding them in the same manner as pow/exp etc...
> These functions come in both scalar and vector versions of up to 16
> elements as the 1.0 spec requires. Is this something that I could
> Merge back into the tree or is another approach required?
> Some of the thoughts we were having as not to clutter the llvm  
> namespace
> was to add a math namespace and the intrinsic would go there instead.
> i.e. llvm.math.fpow, llvm.math.fpowi, llvm.math.fpowr, etc...
> Any ideas?
> Thanks,
> Micah
> -----Original Message-----
> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
> On Behalf Of Dan Gohman
> Sent: Monday, April 13, 2009 6:30 PM
> To: LLVM Developers Mailing List
> Subject: Re: [LLVMdev] Math Library Intrinsics as native intrinsics
> On Apr 8, 2009, at 12:43 AM, Duncan Sands wrote:
>> Hi Micah,
>>> There seems to be some math library functions that are already built
>>> into llvm as intrinsic(pow, exp, etc...) but there are lots that
>>> are not
>>> built in yet. Is there currently work going on that is implementing
>>> these? I do not want to duplicate work so I want to see what is out
>>> there.
>> another approach is to get rid of the llvm intrinsics, because they
>> don't buy you anything that you can't get with function attributes
>> and a list of libcalls.
> FWIW, the reason pow, exp, and others were added as intrinsics was to
> allow them to be overloaded with vector types, and to allow them
> to be legalized (split, scalarized, etc.).
> Dan
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list