changeset 13:07bace8425d9

Optimize the scaled RGBA alpha blit MMX version further.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 28 Sep 2012 10:25:38 +0300
parents 35b0c83af3ca
children a40c266a71a2
files dmblitfunc.h
diffstat 1 files changed, 9 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/dmblitfunc.h	Fri Sep 28 09:35:25 2012 +0300
+++ b/dmblitfunc.h	Fri Sep 28 10:25:38 2012 +0300
@@ -107,30 +107,22 @@
         "movd        %2,     %%mm1\n"		\
         \
         "movd        %3,     %%mm2\n"		\
-        "movq        %%mm1,  %%mm3\n"		\
-        "pand        %%mm2,  %%mm3\n"		\
-        "movq        %%mm3,  %%mm4\n"		\
-        "psrlq       $8,     %%mm3\n"		\
-        "por         %%mm3,  %%mm4\n"		\
-        "movq        %%mm4,  %%mm3\n"		\
-        "psrlq       $16,    %%mm4\n"		\
-        "por         %%mm3,  %%mm4\n"		\
-        "pxor        %%mm5,  %%mm5\n"		\
-        "movq        %%mm5,  %%mm2\n"		\
-        "punpcklbw   %%mm5,  %%mm4\n"		\
-        "movq        %%mm4,  %%mm5\n"		\
+        "movq        %%mm1,  %%mm5\n"		\
+        "pand        %%mm2,  %%mm5\n"		\
+        "psrlw       $8,     %%mm5\n"		\
+        "punpcklwd   %%mm5,  %%mm5\n"		\
+        "punpckhwd   %%mm5,  %%mm5\n"		\
         \
-        "movq        %%mm2,  %%mm4\n"		\
-        \
+        "pxor        %%mm2,  %%mm2\n"		\
         "movd        %1,     %%mm3\n"		\
         "punpcklbw   %%mm2,  %%mm1\n"		\
-        "punpcklbw   %%mm4,  %%mm3\n"		\
+        "punpcklbw   %%mm2,  %%mm3\n"		\
         \
         "psubw       %%mm3,  %%mm1\n"		\
         "pmullw      %%mm5,  %%mm1\n"		\
         "psraw       $8,     %%mm1\n"		\
         "paddw       %%mm3,  %%mm1\n"		\
-        "pand        %4,  %%mm1\n"		\
+        "pand        %4,     %%mm1\n"		\
         "packuswb    %%mm2,  %%mm1\n"		\
         "movd        %%mm1,  %0\n"		\
         : "=m" (*dp)				\
@@ -138,6 +130,7 @@
         : "memory" ); dp++;
 
 #define DM_SCALED_FINISH asm("emms\n");
+
 #else
 #define DM_SCALED_SRC_TYPE DMRGBA32
 #define DM_SCALED_DST_TYPE DMRGBA32