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