[FFmpeg-devel] [RFC] insufficient VFP check?

Måns Rullgård mans
Sun Jan 17 01:31:02 CET 2010


M?ns Rullg?rd <mans at mansr.com> writes:

> Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:
>
>> On Sun, Jan 17, 2010 at 02:03:32AM +0200, Siarhei Siamashka wrote:
>>> On Sunday 17 January 2010, Reimar D?ffinger wrote:
>>> > On Sat, Jan 16, 2010 at 11:40:34PM +0000, M?ns Rullg?rd wrote:
>>> > > Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:
>>> > > > Hello,
>>> > > > the configure vfp check looks for
>>> > > > fadds s0, s0, s0
>>> > > > However, this detects VFP e.g. for
>>> > > > -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp
>>> > > > while actual compilation fails with e.g.
>>> > > > libavcodec/arm/dsputil_vfp.S:160: Error: selected processor does not
>>> > > > support `vmov r7,r8,s4,s5' So what is the right solution, replace the
>>> > > > check with something like the failing instruction?
>>> > >
>>> > > What configure line did you use?  It always works for me...
>>> >
>>> > Something a bit silly:
>>> > ./configure --cross-prefix=armv7a-softfloat-linux-gnueabi-
>>> > --extra-cflags="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp" --arch=arm
>>> > --cpu=cortex-a8 However doesn't look silly enough to make it break that
>>> > way..
>>> 
>>> At least gentoo has problems compiling mplayer/ffmpeg with 
>>> armv7a-softfloat-linux-gnueabi toolchain (because it has an extra softfloat 
>>> related patch applied by ebuild), armv7a-unknown-linux-gnueabi is fine.
>>
>> Uh, can the -unknown- variant compile vfp/neon?
>> I came to the conclusion, idiotic as it is (not commenting on the technical
>> point, but from a usability one), that softfloat is necessary
>> to have neon/vfp support.
>
> Hmm, I didn't read carefully enough first time, and missed the
> softfloat part.  You definitely do *not* want to mess with softfloat
> on A8.  The softfloat compilers are configured to emulate FP, and the
> -mfloat-abi=softfp flag contradicts that.  No idea what that might
> lead to.
>
> With a softfloat compiler I get the same error.

Mystery solved: running gcc with -v reveals the assembler invocation
to be this:

/usr/libexec/gcc/arm-softfloat-linux-gnueabi/as --gdwarf2 -mcpu=cortex-a8 -mfpu=softvfp -meabi=4 -o libavcodec/arm/dsputil_vfp.o /tmp/ccsHJvmR.s

The -mfpu=softvfp there means all manner of FP is out of the question.

Oddly enough, non-softfloat compilers will happily compile to
softfloat if only given the -msoft-float flag.

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list