imdct36: mark SSE functions as using all 16 XMM registers.
authorRonald S. Bultje <rsbultje@gmail.com>
Sun, 29 Jan 2012 16:14:05 +0000 (08:14 -0800)
committerRonald S. Bultje <rsbultje@gmail.com>
Sun, 29 Jan 2012 16:14:05 +0000 (08:14 -0800)
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

index abdd3af..937a2cc 100644 (file)
@@ -391,7 +391,7 @@ INIT_XMM sse
 %endif
 
 %macro DEFINE_FOUR_IMDCT 0
 %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]
     movlps  m0, [inq+64]
     movhps  m0, [inq+64 +   72]
     movlps  m3, [inq+64 + 2*72]