[FFmpeg-devel] [PATCH] update doc/optimization.txt
Tue Sep 21 00:41:35 CEST 2010
Michael Niedermayer <michaelni at gmx.at> writes:
> On Mon, Sep 20, 2010 at 02:13:56PM -0700, Alex Converse wrote:
>> On Mon, Sep 20, 2010 at 10:20 AM, Michael Niedermayer <michaelni at gmx.at> wrote:
>> > I dont mind at all if code is changed to yasm if it is faster or if it is
>> > neccessary and the only known clean way to solve a bug.
>> > i dont even mind if code is yasm instead of asm() to begin with
>> > but changing the code just because someone decided to make a usefull change
>> > on top of the yasm code instead of in inline, i really dont like this and i
>> > wouldnt like the other way around either, rewriting yasm to inline for no
>> > good reason
>> > thats just besides that it totally fucks up svn blame and even git blame
>> Besides the bugs Ronald mentioned, we were using split asm sections
>> and counted on them preserving values between the sections which is
>> undefined behavior.
> its no bit better if these where split yasm function calls
> the problem is the split not the inline vs yasm
The two asm blocks were obviously moved to yasm as a single function.
>> Both of these situations are possible to fix with inline asm (yasm
>> loops and manually stacking variables things) but these mistakes
>> are much harder to make in yasm in the first place.
> i dont really agree that such mistakes are harder to make in yasm
> also depending on mmx/sse registers being preserved was likely done
Consciously or not, it was done in error.
> It was done at a time when it was safe with existing platforms. The problems
> just begun with win64
It also affected suncc on Linux. All the mdct-based audio codecs were
> So IMO this is a before win64 vs. after win64 issue and not at all a inline
> vs yasm issue.
It is simple matter of not relying on undefined behaviour. I hope we can
all agree that undefined behaviour should not be relied upon.
> With yasm the only reason not to do split asm is that yasm has more
> overhead namely for each call
The function call overhead is exactly the same with yasm or C,
assuming the C compiler doesn't generate ridiculous prologues and
epilogues. Please stop claiming anything else. Nobody is talking
about asm that actually gets inlined.
mans at mansr.com
More information about the ffmpeg-devel