[FFmpeg-devel] [PATCH] ff_scalarproduct_float_sse

Måns Rullgård mans
Wed Jan 20 23:29:43 CET 2010


Michael Niedermayer <michaelni at gmx.at> writes:

> On Wed, Jan 20, 2010 at 09:31:14PM +0000, M?ns Rullg?rd wrote:
>> Michael Niedermayer <michaelni at gmx.at> writes:
>> 
>> > On Wed, Jan 20, 2010 at 02:48:57PM +0000, M?ns Rullg?rd wrote:
>> >> Michael Niedermayer <michaelni at gmx.at> writes:
>> >> 
>> >> > On Tue, Jan 19, 2010 at 11:42:40PM -0500, Alex Converse wrote:
>> >> >> This cause a >50% decrease in SBR decode time.
>> >> >> 
>> >> >> For the time being it can help in the other places where
>> >> >> scalarproduct_float() is used.
>> >> >> 
>> >> >> Regards,
>> >> >> Alex Converse
>> >> >
>> >> >>  dsputil_mmx.c    |    5 +++++
>> >> >>  dsputil_yasm.asm |   25 +++++++++++++++++++++++++
>> >> >
>> >> > Would you mind to avoid yasm and use gcc asm instead ?
>> >> >
>> >> > I have no problem with yasm as such but gcc asm is more portable and
>> >> > can be integrated with C code if we ever want that.
>> >> 
>> >> I have to disagree.  Just look at how many FATE targets broke with
>> >> your change to h264_loop_filter_strength_mmx2 yesterday.  Several
>> >> compilers are still failing to build it.
>> >
>> > what we had is called a syntax error, yasm wont do any better
>> > if you make such errors, though yasm would more consistently fail i guess
>> 
>> There was no syntax error.  A syntax error would have had gcc say
>> "syntax error", which it didn't.  In fact, it compiled just fine on
>> x86_64, only failing mysteriously on x86_32.  David then fixed it with
>> gcc, leaving only icc and suncc failing.
>
> 8+1*(%blah) is a syntax error
> so is
> 8+(%blah)
> some versions of gas support it and depending on luck you might end
> with 8+1*%m being substututed to 8+1*123(%blah) which isnt a syntax
> error still davids code was not correct this has nothing to do with gcc
> inline asm.

I was talking about your original commit.  It didn't have any such
syntax and still broke on _every_ x86_32 compiler.

> break the rules for yasm and it fails as well
> that said its gas not gcc for which it is a syntax error
>
>> 
>> > what we had before was too many complex memory operands, yasm does not
>> > support that in the first place.
>> 
>> Eh what?  Yasm is an assembler.  You do your own register allocation
>> there.  That is why it is superior, among other reasons.
>
> Nothing stops you from allocating your registers in gcc yourself either.

That would be very counter-productive.  You'd end up with gcc spilling
all the registers before the asm block and reloading them after.  Not
good.

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



More information about the ffmpeg-devel mailing list