On Tue, 10 Jan 2012, Ronald S. Bultje wrote:

> Hi,
>
> [mostly Q for Loren]
>
> On Sat, Nov 5, 2011 at 9:04 AM, Ronald S. Bultje <[email protected]> wrote:
> > From: Loren Merritt <[email protected]>
> >
> > We keep INIT_AVX (for backwards compatibility). 3arg AVX ops with
> > a memory arg can only have it in src2, whereas SSE emulation of
> > 3arg prefers to have it in src1 (i.e. the mov). So, if the op is
> > symmetric and the wrong one is memory, swap them.
> > ---
> >  libavutil/x86/x86inc.asm |  523 
> > ++++++++++++++++++++++++++++++----------------
> >  1 files changed, 340 insertions(+), 183 deletions(-)
> [..]
> > @@ -297,6 +297,9 @@ DECLARE_REG 6, rax, eax, ax,  al,  [rsp + stack_offset 
> > + 56]
> >
> >  %macro WIN64_SPILL_XMM 1
> >     %assign xmm_regs_used %1
> > +    %if mmsize == 8
> > +        %assign xmm_regs_used 0
> > +    %endif
> >     ASSERT xmm_regs_used <= 16
> >     %if xmm_regs_used > 6
> >         sub rsp, (xmm_regs_used-6)*16+16
>
> Apparently this chunk breaks FFT on Win64, but --disable-sse fixes it,
> and commenting out this chunk also fixes it.
>
> Any ideas what that means?

I guess you need INIT_XMM around the relevant fft_dispatch functions, even
though they don't contain any simd instructions, because they handle the
spilling.

--Loren Merritt
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to