[libav-commits] imdct36: mark SSE functions as using all 16 XMM registers.

Ronald S. Bultje git at libav.org
Sun Jan 29 21:29:44 CET 2012


Module: libav
Branch: master
Commit: 331e7c4cb34eb77451fbf84c604d717ed49abf15

Author:    Ronald S. Bultje <rsbultje at gmail.com>
Committer: Ronald S. Bultje <rsbultje at gmail.com>
Date:      Sun Jan 29 08:14:05 2012 -0800

imdct36: mark SSE functions as using all 16 XMM registers.

On x86-64, it indeed uses all 16 registers (and on x86-32, this gets
clipped to 8). Not marking it properly causes callers of this function
to fail randomly because of XMM register clobbering.

---

 libavcodec/x86/imdct36_sse.asm |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libavcodec/x86/imdct36_sse.asm b/libavcodec/x86/imdct36_sse.asm
index abdd3af..937a2cc 100644
--- a/libavcodec/x86/imdct36_sse.asm
+++ b/libavcodec/x86/imdct36_sse.asm
@@ -391,7 +391,7 @@ INIT_XMM sse
 %endif
 
 %macro DEFINE_FOUR_IMDCT 0
-cglobal four_imdct36_float, 5,5,8, out, buf, in, win, tmp
+cglobal four_imdct36_float, 5,5,16, out, buf, in, win, tmp
     movlps  m0, [inq+64]
     movhps  m0, [inq+64 +   72]
     movlps  m3, [inq+64 + 2*72]



More information about the libav-commits mailing list