[svn] / trunk / xvidcore / src / motion / x86_asm / sad_3dn.asm Repository:
ViewVC logotype

Diff of /trunk/xvidcore/src/motion/x86_asm/sad_3dn.asm

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

revision 1794, Fri Nov 14 15:43:28 2008 UTC revision 1795, Wed Nov 26 01:04:34 2008 UTC
# Line 19  Line 19 
19  ; *  along with this program; if not, write to the Free Software  ; *  along with this program; if not, write to the Free Software
20  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21  ; *  ; *
22  ; * $Id: sad_3dn.asm,v 1.11 2008-11-11 20:46:24 Isibaar Exp $  ; * $Id: sad_3dn.asm,v 1.12 2008-11-26 01:04:34 Isibaar Exp $
23  ; *  ; *
24  ; ***************************************************************************/  ; ***************************************************************************/
25    
26  BITS 32  %include "nasm.inc"
   
 %macro cglobal 1  
         %ifdef PREFIX  
                 %ifdef MARK_FUNCS  
                         global _%1:function %1.endfunc-%1  
                         %define %1 _%1:function %1.endfunc-%1  
                         %define ENDFUNC .endfunc  
                 %else  
                         global _%1  
                         %define %1 _%1  
                         %define ENDFUNC  
                 %endif  
         %else  
                 %ifdef MARK_FUNCS  
                         global %1:function %1.endfunc-%1  
                         %define ENDFUNC .endfunc  
                 %else  
                         global %1  
                         %define ENDFUNC  
                 %endif  
         %endif  
 %endmacro  
27    
28  ;=============================================================================  ;=============================================================================
29  ; Read only data  ; Read only data
30  ;=============================================================================  ;=============================================================================
31    
32  %ifdef FORMAT_COFF  DATA
 SECTION .rodata  
 %else  
 SECTION .rodata align=16  
 %endif  
33    
34  ALIGN 16  ALIGN SECTION_ALIGN
35  mmx_one:  mmx_one:
36          times 4 dw 1          times 4 dw 1
37    
# Line 65  Line 39 
39  ; Helper macros  ; Helper macros
40  ;=============================================================================  ;=============================================================================
41  %macro SADBI_16x16_3DN 0  %macro SADBI_16x16_3DN 0
42    movq mm0, [eax] ; src    movq mm0, [_EAX] ; src
43    movq mm2, [eax+8]    movq mm2, [_EAX+8]
44    
45    movq mm1, [edx] ; ref1    movq mm1, [TMP1] ; ref1
46    movq mm3, [edx+8]    movq mm3, [TMP1+8]
47    pavgusb mm1, [ebx] ; ref2    pavgusb mm1, [_EBX] ; ref2
48    lea edx, [edx+ecx]    lea TMP1, [TMP1+TMP0]
49    pavgusb mm3, [ebx+8]    pavgusb mm3, [_EBX+8]
50    lea ebx, [ebx+ecx]    lea _EBX, [_EBX+TMP0]
51    
52    movq mm4, mm0    movq mm4, mm0
53    lea eax, [eax+ecx]    lea _EAX, [_EAX+TMP0]
54    psubusb mm0, mm1    psubusb mm0, mm1
55    movq mm5, mm2    movq mm5, mm2
56    psubusb mm2, mm3    psubusb mm2, mm3
# Line 101  Line 75 
75  %endmacro  %endmacro
76    
77  %macro SADBI_8x8_3DN 0  %macro SADBI_8x8_3DN 0
78    movq mm0, [eax] ; src    movq mm0, [_EAX] ; src
79    movq mm2, [eax+ecx]    movq mm2, [_EAX+TMP0]
80    
81    movq mm1, [edx] ; ref1    movq mm1, [TMP1] ; ref1
82    movq mm3, [edx+ecx]    movq mm3, [TMP1+TMP0]
83    pavgusb mm1, [ebx] ; ref2    pavgusb mm1, [_EBX] ; ref2
84    lea edx, [edx+2*ecx]    lea TMP1, [TMP1+2*TMP0]
85    pavgusb mm3, [ebx+ecx]    pavgusb mm3, [_EBX+TMP0]
86    lea ebx, [ebx+2*ecx]    lea _EBX, [_EBX+2*TMP0]
87    
88    movq mm4, mm0    movq mm4, mm0
89    lea eax, [eax+2*ecx]    lea _EAX, [_EAX+2*TMP0]
90    psubusb mm0, mm1    psubusb mm0, mm1
91    movq mm5, mm2    movq mm5, mm2
92    psubusb mm2, mm3    psubusb mm2, mm3
# Line 140  Line 114 
114  ; Code  ; Code
115  ;=============================================================================  ;=============================================================================
116    
117  SECTION .text  SECTION .rotext align=SECTION_ALIGN
118    
119  cglobal  sad16bi_3dn  cglobal  sad16bi_3dn
120  cglobal  sad8bi_3dn  cglobal  sad8bi_3dn
# Line 154  Line 128 
128  ;  ;
129  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
130    
131  ALIGN 16  ALIGN SECTION_ALIGN
132  sad16bi_3dn:  sad16bi_3dn:
133    push ebx    mov _EAX, prm1 ; Src
134    mov eax, [esp+4+ 4] ; Src    mov TMP1, prm2 ; Ref1
135    mov edx, [esp+4+ 8] ; Ref1    mov TMP0, prm4 ; Stride
136    mov ebx, [esp+4+12] ; Ref2  
137    mov ecx, [esp+4+16] ; Stride    push _EBX
138    %ifdef ARCH_IS_X86_64
139      mov _EBX, prm3
140    %else
141      mov _EBX, [_ESP+4+12] ; Ref2
142    %endif
143    
144    pxor mm6, mm6 ; accum2    pxor mm6, mm6 ; accum2
145    pxor mm7, mm7    pxor mm7, mm7
# Line 190  Line 169 
169    
170    movd eax, mm6    movd eax, mm6
171    
172    pop ebx    pop _EBX
173    
174    ret    ret
175  ENDFUNC  ENDFUNC
# Line 204  Line 183 
183  ;  ;
184  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
185    
186  ALIGN 16  ALIGN SECTION_ALIGN
187  sad8bi_3dn:  sad8bi_3dn:
188    push ebx    mov _EAX, prm1 ; Src
189    mov eax, [esp+4+ 4] ; Src    mov TMP1, prm2 ; Ref1
190    mov edx, [esp+4+ 8] ; Ref1    mov TMP0, prm4 ; Stride
191    mov ebx, [esp+4+12] ; Ref2  
192    mov ecx, [esp+4+16] ; Stride    push _EBX
193    %ifdef ARCH_IS_X86_64
194      mov _EBX, prm3
195    %else
196      mov _EBX, [_ESP+4+12] ; Ref2
197    %endif
198    
199    pxor mm6, mm6 ; accum2    pxor mm6, mm6 ; accum2
200    pxor mm7, mm7    pxor mm7, mm7
# Line 227  Line 211 
211    
212    movd eax, mm6    movd eax, mm6
213    
214    pop ebx    pop _EBX
215    
216    ret    ret
217  ENDFUNC  ENDFUNC

Legend:
Removed from v.1794  
changed lines
  Added in v.1795

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