Siarhei Siamashka
2011-Feb-25 20:55 UTC
[LLVMdev] ARM ELF target and the use of VFP/NEON instructions
On Friday 25 February 2011 22:28:14 Jason Kim wrote:> On Fri, Feb 25, 2011 at 12:16 PM, Siarhei Siamashka > > <siarhei.siamashka at gmail.com> wrote: > > On Thursday 03 February 2011 14:14:28 Renato Golin wrote: > >> On 3 February 2011 10:25, Siarhei Siamashka > >> <siarhei.siamashka at gmail.com> > > > > wrote: > >> > I have submitted a bug some time ago to LLVM bugtracker: > >> > http://llvm.org/bugs/show_bug.cgi?id=8931 > >> > >> Hi Siarhei, > >> > >> This is a really silly bug with a simple fix. > >> > >> We have a similar patch here locally, but as this is part of another > >> set of patches we were waiting for it to stabilise. There are some > >> other build attributes that need to be set when you're using NEON or > >> VFP, but I'll try to get them working without any other modification > >> as a clean cut patch. > >> > >> I'll round it up and submit the patch. Thanks for reminding about it. > > > > Hi Renato, > > > > I noticed that support for some elf eabi attributes has been added to > > LLVM and it is a good progress. But still this is insufficient. > > > > Now with the schedule for 2.9 available, would it be possible to resolve > > this missing ".fpu" directive issue for 2.9 release in order to have > > clang working on ARM linux systems out of the box without patching? > > Hi Siarhei, > > if you can get us the sequence of attributes you want emitted for each fpu > type, and what you expect to see on the .o side, it should be very > possible to get that squared away for the release.The elf attributes and cpu/fpu type directives are a bit different things. The former are the extra information in .o files to be used by static or dynamic linker. The latter are the directives to assembler, and if you don't specify the right cpu/fpu type, the assembly code is rejected by gnu assembler and no .o file is generated at all. Currently LLVM emits ".cpu" directive, but totally forgets about ".fpu", and this causes problems. My proposed patch is available in LLVM bug 8931, and I'm also pasting it here for more convenience: Index: lib/Target/ARM/ARMAsmPrinter.cpp ==================================================================--- lib/Target/ARM/ARMAsmPrinter.cpp (revision 123053) +++ lib/Target/ARM/ARMAsmPrinter.cpp (working copy) @@ -458,7 +458,13 @@ AttrEmitter->EmitAttribute(ARMBuildAttrs::THUMB_ISA_use, 1); } - // FIXME: Emit FPU type + if (Subtarget->hasNEON()) + OutStreamer.EmitRawText(StringRef("\t.fpu neon")); + else if (Subtarget->hasVFP3()) + OutStreamer.EmitRawText(StringRef("\t.fpu vfpv3")); + else if (Subtarget->hasVFP2()) + OutStreamer.EmitRawText(StringRef("\t.fpu vfpv2")); + if (Subtarget->hasVFP2()) AttrEmitter->EmitAttribute(ARMBuildAttrs::VFP_arch, 2); It does not matter if you use this particular code or some other variant, but please just fix it somehow :) -- Best regards, Siarhei Siamashka
Renato Golin
2011-Feb-25 21:20 UTC
[LLVMdev] ARM ELF target and the use of VFP/NEON instructions
Hi Siarhei, I've got the patch in my hands, sorry for the delay. It takes into account the MC emitting the .fpu when in ASM mode and the build attributes in both ASM and ELF mode. Jason, that's the patch I was talking about today. It's non-invasive and I'll send it no later than Monday, so should be in for the 2.9 release. cheers, --renato
Jason Kim
2011-Feb-25 21:28 UTC
[LLVMdev] ARM ELF target and the use of VFP/NEON instructions
Wonderful! Looking forward to seeing it! -jason On Fri, Feb 25, 2011 at 1:20 PM, Renato Golin <renato.golin at arm.com> wrote:> Hi Siarhei, > > I've got the patch in my hands, sorry for the delay. > > It takes into account the MC emitting the .fpu when in ASM mode and > the build attributes in both ASM and ELF mode. > > Jason, that's the patch I was talking about today. It's non-invasive > and I'll send it no later than Monday, so should be in for the 2.9 > release. > > cheers, > --renato >
Reasonably Related Threads
- [LLVMdev] ARM ELF target and the use of VFP/NEON instructions
- [LLVMdev] ARM ELF target and the use of VFP/NEON instructions
- [LLVMdev] ARM ELF target and the use of VFP/NEON instructions
- [LLVMdev] ARM ELF target and the use of VFP/NEON instructions
- [LLVMdev] ARM ELF target and the use of VFP/NEON instructions