[FFmpeg-devel] Fix VP3 IDCT on Win64

Måns Rullgård mans
Wed Aug 25 22:22:28 CEST 2010


Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:

> On Wed, Aug 25, 2010 at 09:04:33PM +0100, M?ns Rullg?rd wrote:
>> Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:
>> 
>> > On Wed, Aug 25, 2010 at 07:46:35PM +0100, M?ns Rullg?rd wrote:
>> >> "Ronald S. Bultje" <rsbultje at gmail.com> writes:
>> >> 
>> >> > Hi,
>> >> >
>> >> > After this patch, it's still broken, because of put_h264_chroma_mc8
>> >> > ssse3 not properly marking clobbers, but this patch 1/3rd-fixes
>> >> > VP6/Win64/FATE failures (similar to how my previous patch fixed a
>> >> > third of it).
>> >> >
>> >> > I can't fix put_h264_chroma_mc8_ssse3 because it's split over multiple
>> >> > asm() statements which rely on maintaining register values between, so
>> >> > I will likely rewrite that (also for VC-1/H.264/RV40) in yasm, but
>> >> > that'll take a little longer... After that, fate-ea-vp60 passes
>> >> > (haven't tested the others yet, because Win64 hates me).
>> >> >
>> >> > Ronald
>> >> >
>> >> > Index: libavcodec/x86/vp3dsp_sse2.c
>> >> > ===================================================================
>> >> > --- libavcodec/x86/vp3dsp_sse2.c	(revision 24909)
>> >> > +++ libavcodec/x86/vp3dsp_sse2.c	(working copy)
>> >> > @@ -171,6 +171,7 @@
>> >> >          VP3_1D_IDCT_SSE2(ADD8, SHIFT4)
>> >> >          PUT_BLOCK(%%xmm0, %%xmm1, %%xmm2, %%xmm3, %%xmm4, %%xmm5, %%xmm6, %%xmm7)
>> >> >          :: "r"(input_data), "r"(ff_vp3_idct_data), "m"(ff_pw_8)
>> >> > +        : "%xmm6", "%xmm7"
>> >> >      );
>> >> >  }
>> >> 
>> >> Looks good to my untrained eye.
>> >
>> > Assuming it works with all compilers, which would simplify the patch
>> > I proposed some time ago (though listing all XMM registers 0-7 IMO
>> > would be better).
>> 
>> Why wouldn't it work?  The problem was, IIRC, with the high,
>> amd64-only xmm registers in 32-bit builds.
>
> Because some compilers might refuse to compile with xmm clobbers because
> they don't know anything about a xmm register?

If that is the case, how is the code compiling at all?  It is using
those regs after all.

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



More information about the ffmpeg-devel mailing list