[XviD-devel] Changes to colorspace_yuyv_mmx.asm
carlo.bramix
carlo.bramix at libero.it
Wed Aug 3 11:16:49 CEST 2005
Hello,
I did some changes to colorspace_yuyv_mmx.asm.
Here they are:
1) Into macro YUYV_TO_YV12, it shouldn't be required to mask with MM7 if we are working with YUYV colorspace.
The masking is actually done by PSRLW instruction, since it already clears the upper byte of the MMX register.
2) Into macro YV12_TO_YUYVI, I think it's better to recalculate expected value for ESI and EDI instead of doing PUSH/POP on them.
Sincerely,
Carlo Bramini.
Index: src/image/x86_asm/colorspace_yuyv_mmx.asm
===================================================================
RCS file: /xvid/xvidcore/src/image/x86_asm/colorspace_yuyv_mmx.asm,v
retrieving revision 1.6
diff -u -r1.6 colorspace_yuyv_mmx.asm
--- src/image/x86_asm/colorspace_yuyv_mmx.asm 29 Aug 2004 10:02:38 -0000 1.6
+++ src/image/x86_asm/colorspace_yuyv_mmx.asm 3 Aug 2005 08:50:32 -0000
@@ -94,9 +94,10 @@
%if %1 == 0 ; yuyv
psrlw mm4, 8
psrlw mm5, 8
-%endif
+%else
pand mm4, mm7
pand mm5, mm7
+%endif
paddw mm4, mm5
movq mm5, mm1
@@ -104,9 +105,10 @@
%if %1 == 0 ; yuyv
psrlw mm5, 8
psrlw mm6, 8
-%endif
+%else
pand mm5, mm7
pand mm6, mm7
+%endif
paddw mm5, mm6
paddw mm4, [mmx_one] ; +1 rounding
paddw mm5, [mmx_one] ;
@@ -129,10 +131,11 @@
%if %1 == 0 ; yuyv
psrlw mm4, 8
psrlw mm5, 8
-%endif
+%else
pand mm4, mm7
pand mm5, mm7
%endif
+%endif
;--------------------------------------------------------------------
; write y-component
@@ -141,11 +144,12 @@
psrlw mm1, 8
psrlw mm2, 8
psrlw mm3, 8
-%endif
+%else
pand mm0, mm7
pand mm1, mm7
pand mm2, mm7
pand mm3, mm7
+%endif
packuswb mm0, mm1
packuswb mm2, mm3
@@ -247,8 +251,6 @@
movq [edi+edx], mm6
movq [edi+edx+8], mm7
- push esi
- push edi
add esi, eax
add edi, edx
movq mm4, [esi+eax] ; [yyyy|yyyy] ; y row 2
@@ -263,8 +265,8 @@
movq [edi+edx+8], mm5
movq [edi+2*edx], mm6
movq [edi+2*edx+8], mm7
- pop edi
- pop esi
+ sub esi, eax
+ sub edi, edx
%else ; UYVY
movq mm2, [esi] ; [yyyy|yyyy] ; y row 0
movq mm3, [esi+eax] ; [yyyy|yyyy] ; y row 1
@@ -281,8 +283,6 @@
movq [edi+edx], mm6
movq [edi+edx+8], mm7
- push esi
- push edi
add esi, eax
add edi, edx
movq mm2, [esi+eax] ; [yyyy|yyyy] ; y row 2
@@ -299,8 +299,8 @@
movq [edi+edx+8], mm5
movq [edi+2*edx], mm6
movq [edi+2*edx+8], mm7
- pop edi
- pop esi
+ sub esi, eax
+ sub edi, edx
%endif
%endmacro
____________________________________________________________
Libero Flat, sempre a 4 Mega a 19,95 euro al mese!
Abbonati subito su http://www.libero.it
More information about the XviD-devel
mailing list