diff options
author | Reinhard Tartler <siretart@tauware.de> | 2011-07-25 09:38:48 +0200 |
---|---|---|
committer | Reinhard Tartler <siretart@tauware.de> | 2011-07-25 09:38:48 +0200 |
commit | 03ef9828b551fa9e91898d0f3c156d7c3fa11c92 (patch) | |
tree | 9cf142309760bd787ae19de978bbde44c68571f2 | |
parent | 2ad6e144573f5ac2c8d4d0e9a2772a1bb45487cb (diff) | |
download | ffmpeg-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.c | 7 |
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) ); } |