; The others pass args in registers and don't spill anything.
cglobal fft_dispatch%2, 2,5,8, z, nbits
FFT_DISPATCH fullsuffix, nbits
-%if mmsize == 32
- vzeroupper
-%endif
RET
%endmacro ; DECL_FFT
%if ARCH_X86_64 == 0
add esp, 12
%endif
-%if mmsize == 32
- vzeroupper
-%endif
RET
%endmacro
%macro RET 0
WIN64_RESTORE_XMM_INTERNAL rsp
POP_IF_USED 14, 13, 12, 11, 10, 9, 8, 7
+%if mmsize == 32
+ vzeroupper
+%endif
ret
%endmacro
%macro REP_RET 0
- %if regs_used > 7 || xmm_regs_used > 6
+ %if regs_used > 7 || xmm_regs_used > 6 || mmsize == 32
RET
%else
rep ret
%macro RET 0
POP_IF_USED 14, 13, 12, 11, 10, 9
+%if mmsize == 32
+ vzeroupper
+%endif
ret
%endmacro
%macro REP_RET 0
- %if regs_used > 9
+ %if regs_used > 9 || mmsize == 32
RET
%else
rep ret
%macro RET 0
POP_IF_USED 6, 5, 4, 3
+%if mmsize == 32
+ vzeroupper
+%endif
ret
%endmacro
%macro REP_RET 0
- %if regs_used > 3
+ %if regs_used > 3 || mmsize == 32
RET
%else
rep ret