[svn] / trunk / xvidcore / src / bitstream / x86_asm / cbp_mmx.asm Repository:
ViewVC logotype

Diff of /trunk/xvidcore/src/bitstream/x86_asm/cbp_mmx.asm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 53, Fri Mar 22 04:37:03 2002 UTC revision 262, Sun Jul 7 09:45:40 2002 UTC
# Line 32  Line 32 
32  ; *  ; *
33  ; *     History:  ; *     History:
34  ; *  ; *
35  ; *     22.03.2002      0.01          ; Min Chen <chenm001@163.com>  ; *     14.06.2002      some further tweaks by -Skal-
 ; *                                   ; use 386 cpu's 'BTS' to replace 'cbp |= 1 << (edx-1)'  
36  ; *     24.11.2001      inital version; (c)2001 peter ross <pross@cs.rmit.edu.au>  ; *     24.11.2001      inital version; (c)2001 peter ross <pross@cs.rmit.edu.au>
37  ; *  ; *
38  ; *************************************************************************/  ; *************************************************************************/
# Line 52  Line 51 
51  %endif  %endif
52  %endmacro  %endmacro
53    
54  ignore_dc       dw              0, -1, -1, -1  align 16
55    
56    ignore_dc       dw              0, -1, -1, -1, -1, -1, -1, -1
57    
58  section .text  section .text
59    
60    cglobal calc_cbp_mmx
61    
62  ;===========================================================================  ;===========================================================================
63  ;  ;
# Line 65  Line 66 
66  ;===========================================================================  ;===========================================================================
67    
68  align 16  align 16
69  cglobal calc_cbp_mmx  calc_cbp_mmx:
 calc_cbp_mmx  
70                                  push    ebx                                  push    ebx
                                 push    ecx  
                                 push    edx  
71                                  push    esi                                  push    esi
72    
73                  mov     esi, [esp + 16 + 4]              ; coeff    mov       esi, [esp + 8 + 4]  ; coeff
74      xor           eax, eax                        ; cbp = 0
75      mov           edx, (1 << 5)
76    
77                                  movq    mm7, [ignore_dc]                                  movq    mm7, [ignore_dc]
78    
                                 xor             eax, eax                ; cbp = 0  
                                 mov             edx, 6  
79  .loop  .loop
80                  movq    mm0, [esi]                  movq    mm0, [esi]
                                 pand    mm0, mm7  
81                  movq    mm1, [esi+8]                  movq    mm1, [esi+8]
82      pand          mm0, mm7
83    
84                  por     mm0, [esi+16]                  por     mm0, [esi+16]
85                  por     mm1, [esi+24]                  por     mm1, [esi+24]
# Line 106  Line 105 
105                  por     mm0, mm1                  por     mm0, mm1
106                  movq    mm1, mm0                  movq    mm1, mm0
107                  psrlq   mm1, 32                  psrlq   mm1, 32
108      lea           esi, [esi + 128]
109    
110                  por     mm0, mm1                  por     mm0, mm1
111                                  movd    ebx, mm0                                  movd    ebx, mm0
112    
113                                  add             esi, 128    test          ebx, ebx
114      jz            .next
115                                  or              ebx, ebx    or            eax, edx     ; cbp |= 1 << (5-i)
116                                  jz              .iterate  
117    .next
118                                  ; cbp |= 1 << (edx-1)    shr           edx,1
119      jnc           .loop
                                 ; Change by Chenm001 <chenm001@163.com>  
                                 ;mov             ecx, edx  
                                 ;dec             ecx  
                                 ;mov             ebx, 1  
                                 ;shl             ebx, cl  
                                 ;or              eax, ebx  
                                 lea             ebx,[edx-1]  
                                 bts             eax,ebx  
   
 .iterate                dec     edx  
                                 jnz             .loop  
120    
121                                  pop     esi                                  pop     esi
                                 pop     edx  
                                 pop     ecx  
122                                  pop     ebx                                  pop     ebx
123    
124                                  ret                                  ret

Legend:
Removed from v.53  
changed lines
  Added in v.262

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4