aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinhard Tartler <siretart@tauware.de>2011-07-25 09:38:48 +0200
committerReinhard Tartler <siretart@tauware.de>2011-07-25 09:38:48 +0200
commit03ef9828b551fa9e91898d0f3c156d7c3fa11c92 (patch)
tree9cf142309760bd787ae19de978bbde44c68571f2
parent2ad6e144573f5ac2c8d4d0e9a2772a1bb45487cb (diff)
downloadffmpeg-03ef9828b551fa9e91898d0f3c156d7c3fa11c92.tar.gz
Fix ff_imdct_calc_sse() on gcc-4.6
Gcc 4.6 only preserves the first value when using an array with an "m" constraint. Signed-off-by: Mans Rullgard <mans@mansr.com> (cherry picked from commit 770c410fbb8e1b87ce8ad7f3d7eddaa55e2b8295) References: http://bugs.debian.org/635324 Conflicts: libavcodec/x86/fft_sse.c
-rw-r--r--libavcodec/x86/fft_sse.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/libavcodec/x86/fft_sse.c b/libavcodec/x86/fft_sse.c
index a4cce69db1..eaca44a34f 100644
--- a/libavcodec/x86/fft_sse.c
+++ b/libavcodec/x86/fft_sse.c
@@ -23,7 +23,7 @@
#include "libavcodec/dsputil.h"
#include "fft.h"
-DECLARE_ALIGNED(16, static const int, m1m1m1m1)[4] =
+DECLARE_ASM_CONST(16, int, ff_m1m1m1m1)[4] =
{ 1 << 31, 1 << 31, 1 << 31, 1 << 31 };
void ff_fft_dispatch_sse(FFTComplex *z, int nbits);
@@ -183,7 +183,7 @@ void ff_imdct_calc_sse(FFTContext *s, FFTSample *output, const FFTSample *input)
j = -n;
k = n-16;
__asm__ volatile(
- "movaps %4, %%xmm7 \n"
+ "movaps "MANGLE(ff_m1m1m1m1)", %%xmm7 \n"
"1: \n"
"movaps (%2,%1), %%xmm0 \n"
"movaps (%3,%0), %%xmm1 \n"
@@ -196,8 +196,7 @@ void ff_imdct_calc_sse(FFTContext *s, FFTSample *output, const FFTSample *input)
"add $16, %0 \n"
"jl 1b \n"
:"+r"(j), "+r"(k)
- :"r"(output+n4), "r"(output+n4*3),
- "m"(*m1m1m1m1)
+ :"r"(output+n4), "r"(output+n4*3)
);
}