diff options
author | Loren Merritt <lorenm@u.washington.edu> | 2008-02-09 05:29:47 +0000 |
---|---|---|
committer | Loren Merritt <lorenm@u.washington.edu> | 2008-02-09 05:29:47 +0000 |
commit | 2c70770e331b7e397c1a2a038b0f95043ed48676 (patch) | |
tree | ffc98e333b55a33b87f3ed0a65ec79dcc78d0f38 | |
parent | fa4ed8c10af49ca22ead46ee6fa4e51c8327a7ff (diff) | |
download | ffmpeg-2c70770e331b7e397c1a2a038b0f95043ed48676.tar.gz |
use fewer registers in apply_welch_window_sse2
Originally committed as revision 11882 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/i386/flacdsp_mmx.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/libavcodec/i386/flacdsp_mmx.c b/libavcodec/i386/flacdsp_mmx.c index a5d0a30e94..e799ce421d 100644 --- a/libavcodec/i386/flacdsp_mmx.c +++ b/libavcodec/i386/flacdsp_mmx.c @@ -36,7 +36,7 @@ static void apply_welch_window_sse2(const int32_t *data, int len, double *w_data "addsd %%xmm6, %%xmm7 \n\t" ::"m"(c), "m"(*ff_pd_1), "m"(*ff_pd_2) ); -#define WELCH(MOVPD)\ +#define WELCH(MOVPD, offset)\ asm volatile(\ "1: \n\t"\ "movapd %%xmm7, %%xmm1 \n\t"\ @@ -44,24 +44,23 @@ static void apply_welch_window_sse2(const int32_t *data, int len, double *w_data "movapd %%xmm6, %%xmm0 \n\t"\ "subpd %%xmm1, %%xmm0 \n\t"\ "pshufd $0x4e, %%xmm0, %%xmm1 \n\t"\ - "cvtpi2pd (%4,%0), %%xmm2 \n\t"\ - "cvtpi2pd (%5,%1), %%xmm3 \n\t"\ + "cvtpi2pd (%3,%0), %%xmm2 \n\t"\ + "cvtpi2pd "#offset"*4(%3,%1), %%xmm3 \n\t"\ "mulpd %%xmm0, %%xmm2 \n\t"\ "mulpd %%xmm1, %%xmm3 \n\t"\ "movapd %%xmm2, (%2,%0,2) \n\t"\ - MOVPD" %%xmm3, (%3,%1,2) \n\t"\ + MOVPD" %%xmm3, "#offset"*8(%2,%1,2) \n\t"\ "subpd %%xmm5, %%xmm7 \n\t"\ "sub $8, %1 \n\t"\ "add $8, %0 \n\t"\ "jl 1b \n\t"\ :"+&r"(i), "+&r"(j)\ - :"r"(w_data+n2), "r"(w_data+len-2-n2),\ - "r"(data+n2), "r"(data+len-2-n2)\ + :"r"(w_data+n2), "r"(data+n2)\ ); if(len&1) - WELCH("movupd") + WELCH("movupd", -1) else - WELCH("movapd") + WELCH("movapd", -2) #undef WELCH } |