[LLVMdev] Generating Floating point constants

Dale Johannesen dalej at apple.com
Wed Jun 2 10:48:32 PDT 2010

On Jun 2, 2010, at 3:28 AMPDT, Stéphane Letz wrote:

> Le 2 juin 2010 à 12:21, Eli Friedman a écrit :
>> On Wed, Jun 2, 2010 at 2:59 AM, Stéphane Letz <letz at free.fr> wrote:
>>> Hi,
>>> We need to generate "Floating point constants" in our code. In http://llvm.org/docs/LangRef.html it is explained that FP has to follow special encoding rules to be handled by LLVM later one (hexadecimal coding...)
>>> Is there any code available in LLVM  to handle this kind of "standard float to LLVM float" conversion?
>> If you're writing C++ code, just stick your float into an APFloat and
>> doesn't worry about the hexadecimal coding.  If you're generating
>> textual IR,
> Yes we are generating textual IR,
>> and you don't care about the precise hexadecimal
>> representation, AFAIK just printing a decimal float works.  
> Seems like some values cannot be assembled later on (for instance with "llc")

Yes, there are floating point values (such as NaNs) that cannot be expressed in decimal, and others that would require a prohibitively large number of digits.  You don't want to do that.

The code that writes out APFloats is in WriteConstantInt [sic] in VMCore/AsmWriter.cpp.  It's not set up to do conversions separately from writing out, but you should be able to figure it out.

More information about the llvm-dev mailing list