[FFmpeg-cvslog] r11882 - trunk/libavcodec/i386/flacdsp_mmx.c

lorenm subversion
Sat Feb 9 06:29:48 CET 2008


Author: lorenm
Date: Sat Feb  9 06:29:47 2008
New Revision: 11882

Log:
use fewer registers in apply_welch_window_sse2


Modified:
   trunk/libavcodec/i386/flacdsp_mmx.c

Modified: trunk/libavcodec/i386/flacdsp_mmx.c
==============================================================================
--- trunk/libavcodec/i386/flacdsp_mmx.c	(original)
+++ trunk/libavcodec/i386/flacdsp_mmx.c	Sat Feb  9 06:29:47 2008
@@ -36,7 +36,7 @@ static void apply_welch_window_sse2(cons
         "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(cons
         "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
 }
 




More information about the ffmpeg-cvslog mailing list