[LLVMdev] long double type on ARM

Bob Wilson bob.wilson at apple.com
Wed Sep 30 09:45:33 PDT 2009


That is from 2.5, and just because there is nothing special listed in  
config.gcc does not mean it doesn't work.  For 2.5, the ARM port of  
llvm-gcc did not require a separate llvm-arm.cpp source file, so  
nothing needed to be added to config.gcc.  It worked fine as far as I  
know.

For 2.6, you will see that there are some ARM-related changes to  
config.gcc in llvm-gcc.

On Sep 30, 2009, at 9:44 AM, Jin Gu Kang wrote:

> Hi Bob!
>
> I could not find llvm file for ARM target in llvm-gcc 4.2 front end  
> source code.
>
> $llvm-gcc-src/gcc/config.gcc file
>
> alpha*-*-*)
>   cpu_type=alpha
>   need_64bit_hwint=yes
> # LLVM LOCAL begin
>   out_cxx_file=alpha/llvm-alpha.cpp
> # LLVM LOCAL end
>   ;;
> ...
> arm*-*-*)
>   cpu_type=arm
>   extra_headers="mmintrin.h"
>   ;;
> ...
> i[34567]86-*-*)
>   cpu_type=i386
> # LLVM LOCAL begin
>   out_cxx_file=i386/llvm-i386.cpp
> # LLVM LOCAL end
>   # APPLE LOCAL begin 5612787 mainline sse4
>     extra_headers="mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
>            pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
>            nmmintrin.h"
>
> (out_cxx_file variable is empty for ARM target)
> I wonder if llvm-gcc 4.2 front-end support bitcode conversion for  
> ARM target.
>
> Thank you.
>
> Best regards,
>
> Jin-Gu Kang
>
> From: Bob Wilson [bob.wilson at apple.com]
> Sent: Thursday, October 01, 2009 1:23 AM
> To: Jin Gu Kang
> Cc: llvmdev at cs.uiuc.edu
> Subject: Re: [LLVMdev] long double type on ARM
>
> Unlike llvm itself, llvm-gcc needs to be configured for a particular  
> target architecture.  It looks like you're using a copy of llvm-gcc  
> that was built to generate x86 code.
>
> On Sep 30, 2009, at 6:27 AM, Jin Gu Kang wrote:
>
>> Dear LLVM members.
>>
>> I am compiling coreutils-7.4 package for ARM linux using LLVM 2.5  
>> version.
>>
>> When i compiled 'od' program in coreutils package using LLVM 2.5,
>> i could see the error message on llc processing.
>>
>> > llvm-gcc -emit-llvm  ./od.c  -c  -o  ./od.bc  -other-options...
>> > llc -march=arm ./od.bc -f -o ./od.s
>> llc: /home/jaykang10/HardDisk2/Projects/LLVM/src/llvm-2.5/lib/ 
>> Target/TargetData.cpp:305: unsigned int  
>> llvm::TargetData::getAlignmentInfo(llvm::AlignTypeEnum, uint32_t,  
>> bool, const llvm::Type*) const: Assertion `AlignType ==  
>> VECTOR_ALIGN && "Unknown alignment type!"' failed.
>>
>> The problem was that
>> when i converted 'od' source code to llvm bitcode, long double type  
>> of 'od' source code was changed to x86_fp80 type in llvm bitcode  
>> and then llc on ARM target was not support x86_fp80 type.
>>
>> I think that long double type on ARM is 8 byte. (same as double type)
>>
>> When we use llvm on ARM target,(or other target not support x86_fp80)
>> i think it might be better to convert long double type in C to  
>> double type in llvm bitcode on llvm-gcc or
>> treat x86_fp80 type in llvm bitcode as double type on llc.
>> (I wonder if we select the target at llvm-gcc build time)
>>
>> I would like to know how to solve the above problem.
>>
>> Thank you
>>
>> Best regards,
>>
>> Jin-Gu Kang
>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090930/5f6aacae/attachment.html>


More information about the llvm-dev mailing list