[FFmpeg-devel] Fix VP3 IDCT on Win64

Reimar Döffinger Reimar.Doeffinger
Thu Aug 26 20:44:06 CEST 2010

On Thu, Aug 26, 2010 at 11:05:30AM +0000, Loren Merritt wrote:
> On Thu, 26 Aug 2010, Reimar D?ffinger wrote:
> >On Wed, Aug 25, 2010 at 08:43:25PM -0400, Ronald S. Bultje wrote:
> >>
> >>Those will stay inline of course. If an issue arises where we really
> >>need multiple (>6) XMM registers in inline functions (which I can
> >>honestly not imagine), then we'll think about a solution then and
> >>there.
> >
> >The solution is easy: only add the clobbers for compilers where they
> >are supported (I assume this was the issue on Win32/BSD? You never
> >said _what_ the problem was). This can be tested in configure.
> >And you'll have to specify the clobbers for inline functions even
> >for a single XMM register and even for Linux, it's just unreasonable
> >to hope that the compiler will never place some float stuff in a
> >bad location, particularly with global optimization enabled.
> Do you plan to add an emms at the end of every mmx function?

I think you should have no problem to come up with reasons why
this is not comparable.
But just in case
- "fixing" emms usage necessarily has a performance impact,
  correct clobbers should not
- on most recent CPUs and on x86 in general, --disable-mmx
  should "fix" the emms issue without too much of a performance
  issue by just using SSE
- it is much less likely to be an issue since (most?) compilers
  do not use MMX instructions and very rarely keep values stored
  in the FPU (in contrast to SSE where they do both, even more so
  on Win64).

More information about the ffmpeg-devel mailing list