[FFmpeg-cvslog] x86inc: automatically insert vzeroupper for YMM functions.
Ronald S. Bultje
git at videolan.org
Sat Jul 28 00:10:45 CEST 2012
ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Wed Jul 25 20:52:16 2012 -0700| [30b45d9c38e867457c805b5c008a50f9db16fcda] | committer: Ronald S. Bultje
x86inc: automatically insert vzeroupper for YMM functions.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=30b45d9c38e867457c805b5c008a50f9db16fcda
---
libavcodec/x86/dsputil_yasm.asm | 14 --------------
libavcodec/x86/fft_mmx.asm | 6 ------
libavresample/x86/audio_convert.asm | 10 ----------
libavresample/x86/audio_mix.asm | 10 ----------
libavutil/x86/float_dsp.asm | 10 ----------
libavutil/x86/x86inc.asm | 15 ++++++++++++---
6 files changed, 12 insertions(+), 53 deletions(-)
diff --git a/libavcodec/x86/dsputil_yasm.asm b/libavcodec/x86/dsputil_yasm.asm
index 077f3a0..70a0aa1 100644
--- a/libavcodec/x86/dsputil_yasm.asm
+++ b/libavcodec/x86/dsputil_yasm.asm
@@ -1158,12 +1158,7 @@ ALIGN 16
add src1q, 2*mmsize
sub lenq, 2*mmsize
jge .loop
-%if mmsize == 32
- vzeroupper
- RET
-%else
REP_RET
-%endif
%endmacro
INIT_XMM sse
@@ -1193,12 +1188,7 @@ ALIGN 16
sub lenq, 2*mmsize
jge .loop
-%if mmsize == 32
- vzeroupper
- RET
-%else
REP_RET
-%endif
%endmacro
INIT_XMM sse
@@ -1243,10 +1233,6 @@ cglobal butterflies_float_interleave, 4,4,3, dst, src0, src1, len
%endif
add lenq, mmsize
jl .loop
-%if mmsize == 32
- vzeroupper
- RET
-%endif
.end:
REP_RET
%endmacro
diff --git a/libavcodec/x86/fft_mmx.asm b/libavcodec/x86/fft_mmx.asm
index 1a430b9..527e215 100644
--- a/libavcodec/x86/fft_mmx.asm
+++ b/libavcodec/x86/fft_mmx.asm
@@ -749,9 +749,6 @@ section .text
; 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
@@ -957,9 +954,6 @@ cglobal imdct_half, 3,12,8; FFTContext *s, FFTSample *output, const FFTSample *i
%if ARCH_X86_64 == 0
add esp, 12
%endif
-%if mmsize == 32
- vzeroupper
-%endif
RET
%endmacro
diff --git a/libavresample/x86/audio_convert.asm b/libavresample/x86/audio_convert.asm
index 7b3cc22..244c4d1 100644
--- a/libavresample/x86/audio_convert.asm
+++ b/libavresample/x86/audio_convert.asm
@@ -145,12 +145,7 @@ cglobal conv_s32_to_flt, 3,3,3, dst, src, len
mova [dstq+lenq+mmsize], m2
add lenq, mmsize*2
jl .loop
-%if mmsize == 32
- vzeroupper
- RET
-%else
REP_RET
-%endif
%endmacro
INIT_XMM sse2
@@ -218,12 +213,7 @@ cglobal conv_flt_to_s32, 3,3,5, dst, src, len
mova [dstq+lenq+3*mmsize], m3
add lenq, mmsize*4
jl .loop
-%if mmsize == 32
- vzeroupper
- RET
-%else
REP_RET
-%endif
%endmacro
INIT_XMM sse2
diff --git a/libavresample/x86/audio_mix.asm b/libavresample/x86/audio_mix.asm
index 58a4ded..dbfaa69 100644
--- a/libavresample/x86/audio_mix.asm
+++ b/libavresample/x86/audio_mix.asm
@@ -51,12 +51,7 @@ cglobal mix_2_to_1_fltp_flt, 3,4,6, src, matrix, len, src1
add srcq, mmsize*2
sub lend, mmsize*2/4
jg .loop
-%if mmsize == 32
- vzeroupper
- RET
-%else
REP_RET
-%endif
%endmacro
INIT_XMM sse
@@ -175,12 +170,7 @@ cglobal mix_1_to_2_fltp_flt, 3,5,4, src0, matrix0, len, src1, matrix1
add src0q, mmsize
sub lend, mmsize/4
jg .loop
-%if mmsize == 32
- vzeroupper
- RET
-%else
REP_RET
-%endif
%endmacro
INIT_XMM sse
diff --git a/libavutil/x86/float_dsp.asm b/libavutil/x86/float_dsp.asm
index 66ef093..c4e0c66 100644
--- a/libavutil/x86/float_dsp.asm
+++ b/libavutil/x86/float_dsp.asm
@@ -40,12 +40,7 @@ ALIGN 16
sub lenq, 2*mmsize
jge .loop
-%if mmsize == 32
- vzeroupper
- RET
-%else
REP_RET
-%endif
%endmacro
INIT_XMM sse
@@ -86,12 +81,7 @@ cglobal vector_fmac_scalar, 4,4,3, dst, src, mul, len
mova [dstq+lenq+mmsize], m2
sub lenq, 2*mmsize
jge .loop
-%if mmsize == 32
- vzeroupper
- RET
-%else
REP_RET
-%endif
%endmacro
INIT_XMM sse
diff --git a/libavutil/x86/x86inc.asm b/libavutil/x86/x86inc.asm
index 42ba97a..b76a10c 100644
--- a/libavutil/x86/x86inc.asm
+++ b/libavutil/x86/x86inc.asm
@@ -369,11 +369,14 @@ DECLARE_REG 14, R15, R15D, R15W, R15B, 120
%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
@@ -410,11 +413,14 @@ DECLARE_REG 14, R15, R15D, R15W, R15B, 72
%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
@@ -456,11 +462,14 @@ DECLARE_ARG 7, 8, 9, 10, 11, 12, 13, 14
%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
More information about the ffmpeg-cvslog
mailing list