[MN-dev] [mndiff]: r60 - in trunk/2010: 2_all.h 2_all_a.asm 2_cryp_a.asm 2_cryp_a.h 2_nag_a.asm 2_vc.h 2_vc_a.asm
michael
subversion at mplayerhq.hu
Wed Jul 4 10:42:05 CEST 2007
Author: michael
Date: Wed Jul 4 10:42:04 2007
New Revision: 60
Log:
next version from unknown date
Modified:
trunk/2010/2_all.h
trunk/2010/2_all_a.asm
trunk/2010/2_cryp_a.asm
trunk/2010/2_cryp_a.h
trunk/2010/2_nag_a.asm
trunk/2010/2_vc.h
trunk/2010/2_vc_a.asm
Modified: trunk/2010/2_all.h
==============================================================================
--- trunk/2010/2_all.h (original)
+++ trunk/2010/2_all.h Wed Jul 4 10:42:04 2007
@@ -14,6 +14,8 @@
#define limit(a,b,c) if( (a)<(b) || (a)>(c) ) error(-201)
+#define ISTATES 3
+
#define u_char unsigned char
#define u_long unsigned long
Modified: trunk/2010/2_all_a.asm
==============================================================================
--- trunk/2010/2_all_a.asm (original)
+++ trunk/2010/2_all_a.asm Wed Jul 4 10:42:04 2007
@@ -35,6 +35,8 @@
times ge(($$-$)&3, 1) nop
%endmacro
+; lea 4 byte and 7 byte possible
+
%macro align8 0
times ge(($$-$)&7, 6) cmp ebx, 0
times ge(($$-$)&7, 5) cmp eax, 0
Modified: trunk/2010/2_cryp_a.asm
==============================================================================
--- trunk/2010/2_cryp_a.asm (original)
+++ trunk/2010/2_cryp_a.asm Wed Jul 4 10:42:04 2007
@@ -8,6 +8,7 @@ global _VSmooth1RGB1555__Fiii
global _VSmooth2RGB1555__Fiii
global _Decomb1__Fiii
global _Decomb2__Fiii
+global _SetDecombInc__Fi
%define pBuf1 par1
%define iVgaX21 par2
@@ -21,6 +22,16 @@ global _Decomb2__Fiii
%define nOp3 par2
%define pBuf3 par3
+_SetDecombInc__Fi:
+ push eax
+
+ mov eax, [par1 - 5*4]
+ mov [decombInc], eax
+ mov [decombInc+4], eax
+ pop eax
+
+ret
+
_Decomb1__Fiii:
push eax
push ebx
@@ -86,24 +97,29 @@ _Decomb2__Fiii:
movq mm7, [decombInc]
align16
Decomb2Loop:
- movq mm0, [esi + ecx] ;0p2 wMM0rESIECX 1
- movq mm1, mm0 ; p01wMM1rMM0 0 test mov mem
- pand mm1, mm6 ; p01wMM1rMM6MM1 1
- psllw mm0, 8 ;0p1 wMM0rMM0 0
- movq mm2, [edi + ecx] ; p2 wMM2rEDIECX 1
- psubsw mm0, mm2 ; p01wMM0rMM2MM0 0
- pcmpgtw mm2, mm0 ;0p01wMM2rMM0MM2 0
- pand mm2, mm7 ; p01wMM2rMM7MM2 1
- paddsw mm0, mm2 ; p01wMM0rMM2MM0 0
- movq [edi + ecx], mm0 ;0p3 rEDIECX 2 p4 rMM0 0
- psrlw mm0, 7 ; p1 wMM0rMM0 0
- por mm1, mm0 ; p01wMM1rMM0MM1 ?0
- movq [esi + ecx], mm1 ;0p3 rESIECX 2 p4 rMM1 0
- add ecx, byte 8 ; p01wECXrECX (1)
- jnc Decomb2Loop ; p1 rFLAG 0
+ movq mm0, [esi + ecx] ;4 p2 MM0 ESIECX F 0
+ movq mm1, mm0 ;3 p01 MM1 MM0 F 1
+ pand mm1, mm6 ;3 p01 MM1 MM6MM1 F 2
+ psllw mm0, 8 ;4 p1 MM0 MM0 F 0
+ movq mm2, [edi + ecx] ;4 p2 MM2 EDIECX f 0
+ psubsw mm0, mm2 ;3 p01 MM0 MM2MM0 f 1
+ pcmpgtw mm2, mm0 ;3 p01 MM2 MM0MM2 f 2
+ pand mm2, mm7 ;3 p01 MM2 MM7MM2 f 0
+ paddsw mm0, mm2 ;3 p01 MM0 MM2MM0 f 1
+ movq [edi + ecx], mm0 ;4 p3 EDIECX F 0
+ ;0 p4 MM0 F 0
+ psrlw mm0, 7 ;4 p1 MM0 MM0 F 1
+ por mm1, mm0 ;3 p01 MM1 MM0MM1 F 2
+ movq [esi + ecx], mm1 ;4 p3 ESIECX F 0
+ ;0 p4 MM1 F 0
+ add ecx, byte 8 ;3 p01 ECX ECX f 0
+ jnc Decomb2Loop ;2 p1 FLAG f 1
- ; 8 0 3 2 2 2 -> exec 6 cyc
- ; deco 5 cyc
+ ; 8 0 3 2 2 2 ->
+ ; exe 5.5
+ ; RAT 5.6...
+ ; Ret 6
+ ; Deco 7
Modified: trunk/2010/2_cryp_a.h
==============================================================================
--- trunk/2010/2_cryp_a.h (original)
+++ trunk/2010/2_cryp_a.h Wed Jul 4 10:42:04 2007
@@ -8,4 +8,6 @@ void VSmooth2RGB1555(int, int, int);
void Decomb1(int, int, int);
void Decomb2(int, int, int);
+void SetDecombInc(int);
+
#endif
Modified: trunk/2010/2_nag_a.asm
==============================================================================
--- trunk/2010/2_nag_a.asm (original)
+++ trunk/2010/2_nag_a.asm Wed Jul 4 10:42:04 2007
@@ -70,24 +70,26 @@ _nagraCorr__Fiiiii:
align16
MMXloop:
- psubusb mm2, mm1 ; p01wMM2rMM1MM2 0
- psubusb mm1, mm0 ; p01wMM1rMM0MM1 1
- por mm2, mm1 ; p01wMM2rMM1MM2 0
- movq mm0, [esp + esi + 8] ; p2 wMM0rESPESI 1
- paddusb mm2, mm6 ; p01wMM2rMM6MM2 1
- movq mm4, mm2 ; p01wMM4rMM2 0
- punpcklbw mm2, mm3 ; p1 wMM2rMM3MM2 1
- punpckhbw mm4, mm3 ; p1 wMM4rMM3MM4 (1)
- paddusw mm5, mm2 ; p01wMM5rMM2MM5 1
- paddusw mm5, mm4 ; p01wMM5rMM4MM5 (1)
- movq mm2, mm0 ; p01wMM2rMM0 0
- movq mm1, [esp + edi + 8] ; p2 wMM1rESPEDI 2
- add esp, byte 8 ; p01wESPrESP 1
- jnc MMXloop ; p1 rFLAG
- ; 5+ cyc deco
+;int3
+ psubusb mm2, mm1 ; 3p01wMM2rMM1MM2 FD0
+ psubusb mm1, mm0 ; 3p01wMM1rMM0MM1 FD1
+ por mm2, mm1 ; 3p01wMM2rMM1MM2 FD2
+ movq mm0, [esp + esi + 8] ; 5p2 wMM0rESPESI F D0
+ paddusb mm2, mm6 ; 3p01wMM2rMM6MM2 fF D0
+ movq mm4, mm2 ; 3p01wMM4rMM2 F D1
+ punpcklbw mm2, mm3 ; 3p1 wMM2rMM3MM2 F D2
+ punpckhbw mm4, mm3 ; 3p1 wMM4rMM3MM4 F D0
+ paddusw mm5, mm2 ; 3p01wMM5rMM2MM5 F D1
+ paddusw mm5, mm4 ; 3p01wMM5rMM4MM5 fF D0
+ movq mm2, mm0 ; 3p01wMM2rMM0 F D1
+ movq mm1, [esp + edi + 8] ; 5p2 wMM1rESPEDI F D2
+ add esp, byte 8 ; 3p01wESPrESP F D0
+ jnc MMXloop ; 2p1 rFLAG F D1
+ ; 6 cyc deco
; 5- cyc rat
- ; 6 cyc exec (0/1 satur)
-
+ ; 6 cyc exec (0/1 satur) 9 0 3 2 0 0
+ ; 5 cyc ret
+ ; -> 6 cyc
psubusb mm2, mm1
psubusb mm1, mm0
Modified: trunk/2010/2_vc.h
==============================================================================
--- trunk/2010/2_vc.h (original)
+++ trunk/2010/2_vc.h Wed Jul 4 10:42:04 2007
@@ -3,5 +3,20 @@
#define n2_vc_h
void vc_decrypt(void);
+void saveVCCache(void);
+
+struct CutPCache{
+ byte *pbCCutP;
+ CutPCache *pNext;
+ CutPCache *pPrev;
+ int iScore;
+ int nUsed;
+ int nbCCutP;
+};
+
+struct CutPLut{
+ CutPCache *pCutPCache;
+ CutPLut *pNext;
+};
#endif
Modified: trunk/2010/2_vc_a.asm
==============================================================================
--- trunk/2010/2_vc_a.asm (original)
+++ trunk/2010/2_vc_a.asm Wed Jul 4 10:42:04 2007
@@ -198,26 +198,32 @@ _vc_corr_mmx__Fiiiiii:
align16
MMXLoop:
- movq mm2, [ecx + esi ] ;0p2 wMM0rECXESI 1
- psubusb mm0, mm1 ; p01wMM0rMM1MM0 0
- psubusb mm1, mm2 ; p01wMM1rMM2MM1 0
- movq mm3, [ecx + edi + 8 ] ;0p2 wMM3rECXEDI 1
- por mm1, mm0 ; p01wMM1rMM0MM1 0
- movq mm0, [ecx + esi + 8 ] ; p2 wMM0rECXESI 1
- psrlq mm3, mm6 ;0p0 wMM3rMM6 1
- movq mm2, mm1 ; p01wMM2rMM1 0
- punpcklbw mm1, mm4 ; p0 wMM1rMM4MM1 1
- punpckhbw mm2, mm4 ;0p0 wMM2rMM4MM2 10
- paddusw mm7, mm1 ; p01wMM7rMM1MM7 1
- paddusw mm7, mm2 ; p01wMM7rMM2MM7 10
- movq mm1, [ecx + edi + 16] ;0p2 wMM1rECXEDI 2
- psllq mm1, mm5 ; p0 wMM1rMM5 1
- por mm1, mm3 ; p01wMM1rMM3MM1 1?
- add ecx, byte 8 ;0p01wECXrECX 1
- jnc MMXLoop ; p1 rFLAG
-; 8 4 1 4 7 cyc asy
-; 6+ cyc deco
-; 7 cyc rat
+ movq mm2, [ecx + esi ] ;4p2 wMM2rECXESI FD0 FD0
+; db 0x3E
+; dd 0x31946F0F
+; dd 0x00000000
+; db 0x3E
+
+ psubusb mm0, mm1 ;3p01wMM0rMM1MM0 FD1 FD1
+ psubusb mm1, mm2 ;3p01wMM1rMM2MM1 FD2 FD2
+ movq mm3, [ecx + edi + 8 ] ;5p2 wMM3rECXEDI F D0 FD0
+ por mm1, mm0 ;3p01wMM1rMM0MM1 fF D0 FD1
+ movq mm0, [ecx + esi + 8 ] ;5p2 wMM0rECXESI F D1 FD2
+ psrlq mm3, mm6 ;3p1 wMM3rMM6 F D2 F D0
+ movq mm2, mm1 ;3p01wMM2rMM1 F D0 F D0
+ punpcklbw mm1, mm4 ;3p1 wMM1rMM4MM1 fF D0 F D1
+ punpckhbw mm2, mm4 ;3p1 wMM2rMM4MM2 F D1 F D2
+ paddusw mm7, mm1 ;3p01wMM7rMM1MM7r F D2 F D0
+ paddusw mm7, mm2 ;3p01wMM7rMM2MM7r F D0 F D1
+ movq mm1, [ecx + edi + 16] ;5p2 wMM1rECXEDIr fF D0 fF D0
+ psllq mm1, mm5 ;3p1 wMM1rMM5 F D1 F D1
+ por mm1, mm3 ;3p01wMM1rMM3MM1 F D2 F D2
+ add ecx, byte 8 ;3p01wECXrECX F D0 F D0
+ jnc MMXLoop ;2p1 rFLAG F D1 F D1
+; 6.5 cyc exe 8 0 5 4 0 0
+; 6.7 cyc RAT
+; 8->7 cyc Deco
+; 6 cyc Ret
skipMMX1:
@@ -262,23 +268,32 @@ skipMMX1:
align16
MMXLoop2:
- movq mm2, [ecx + esi ] ;0p2 wMM0rECXESI 1
- psubusb mm0, mm1 ; p01wMM0rMM1MM0 0
- psubusb mm1, mm2 ; p01wMM1rMM2MM1 0
- movq mm3, [ecx + edi + 8 ] ;0p2 wMM3rECXEDI 1
- por mm1, mm0 ; p01wMM1rMM0MM1 0
- movq mm0, [ecx + esi + 8 ] ; p2 wMM0rECXESI 1
- psrlq mm3, mm6 ;0p0 wMM3rMM6 1
- movq mm2, mm1 ; p01wMM2rMM1 0
- punpcklbw mm1, mm4 ; p0 wMM1rMM4MM1 1
- punpckhbw mm2, mm4 ;0p0 wMM2rMM4MM2 10
- paddusw mm7, mm1 ; p01wMM7rMM1MM7 1
- paddusw mm7, mm2 ; p01wMM7rMM2MM7 10
- movq mm1, [ecx + edi + 16] ;0p2 wMM1rECXEDI 2
- psllq mm1, mm5 ; p0 wMM1rMM5 1
- por mm1, mm3 ; p01wMM1rMM3MM1 1?
- add ecx, byte 8 ;0p01wECXrECX 1
- jnc MMXLoop2 ; p1 rFLAG
+ movq mm2, [ecx + esi ] ;4p2 wMM2rECXESI FD0 FD0
+; db 0x3E
+; dd 0x31946F0F
+; dd 0x00000000
+; db 0x3E
+
+ psubusb mm0, mm1 ;3p01wMM0rMM1MM0 FD1 FD1
+ psubusb mm1, mm2 ;3p01wMM1rMM2MM1 FD2 FD2
+ movq mm3, [ecx + edi + 8 ] ;5p2 wMM3rECXEDI F D0 FD0
+ por mm1, mm0 ;3p01wMM1rMM0MM1 fF D0 FD1
+ movq mm0, [ecx + esi + 8 ] ;5p2 wMM0rECXESI F D1 FD2
+ psrlq mm3, mm6 ;3p1 wMM3rMM6 F D2 F D0
+ movq mm2, mm1 ;3p01wMM2rMM1 F D0 F D0
+ punpcklbw mm1, mm4 ;3p1 wMM1rMM4MM1 fF D0 F D1
+ punpckhbw mm2, mm4 ;3p1 wMM2rMM4MM2 F D1 F D2
+ paddusw mm7, mm1 ;3p01wMM7rMM1MM7r F D2 F D0
+ paddusw mm7, mm2 ;3p01wMM7rMM2MM7r F D0 F D1
+ movq mm1, [ecx + edi + 16] ;5p2 wMM1rECXEDIr fF D0 fF D0
+ psllq mm1, mm5 ;3p1 wMM1rMM5 F D1 F D1
+ por mm1, mm3 ;3p01wMM1rMM3MM1 F D2 F D2
+ add ecx, byte 8 ;3p01wECXrECX F D0 F D0
+ jnc MMXLoop2 ;2p1 rFLAG F D1 F D1
+; 6.5 cyc exe 8 0 5 4 0 0
+; 6.7 cyc RAT
+; 8->7 cyc Deco
+; 6 cyc Ret
skipMMX2:
More information about the Mndiff-dev
mailing list