x86inc: automatically insert vzeroupper for YMM functions.
[ffmpeg.git] / libavutil / x86 / x86inc.asm
index 42ba97a..b76a10c 100644 (file)
@@ -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