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

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

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

revision 1838, Mon Dec 1 17:27:03 2008 UTC revision 1839, Tue Dec 2 13:44:55 2008 UTC
# Line 20  Line 20 
20  ; *  along with this program; if not, write to the Free Software  ; *  along with this program; if not, write to the Free Software
21  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
22  ; *  ; *
23  ; * $Id: sad_sse2.asm,v 1.17 2008-12-01 14:45:45 Isibaar Exp $  ; * $Id: sad_sse2.asm,v 1.18 2008-12-02 13:44:55 Isibaar Exp $
24  ; *  ; *
25  ; ***************************************************************************/  ; ***************************************************************************/
26    
# Line 63  Line 63 
63    movdqa  xmm3, [_EAX+TMP0]    movdqa  xmm3, [_EAX+TMP0]
64    lea _EAX,[_EAX+2*TMP0]    lea _EAX,[_EAX+2*TMP0]
65    psadbw  xmm0, xmm2    psadbw  xmm0, xmm2
66    paddusw xmm6,xmm0    paddusw xmm4,xmm0
67    psadbw  xmm1, xmm3    psadbw  xmm1, xmm3
68    paddusw xmm6,xmm1    paddusw xmm4,xmm1
69  %endmacro  %endmacro
70    
71  %macro SAD16_SSE2_SSE3 1  %macro SAD16_SSE2_SSE3 1
   PUSH_XMM6_XMM7  
72    mov _EAX, prm1 ; cur (assumed aligned)    mov _EAX, prm1 ; cur (assumed aligned)
73    mov TMP1, prm2 ; ref    mov TMP1, prm2 ; ref
74    mov TMP0, prm3 ; stride    mov TMP0, prm3 ; stride
75    
76    pxor xmm6, xmm6 ; accum    pxor xmm4, xmm4 ; accum
77    
78    SAD_16x16_SSE2 %1    SAD_16x16_SSE2 %1
79    SAD_16x16_SSE2 %1    SAD_16x16_SSE2 %1
# Line 85  Line 84 
84    SAD_16x16_SSE2 %1    SAD_16x16_SSE2 %1
85    SAD_16x16_SSE2 %1    SAD_16x16_SSE2 %1
86    
87    pshufd  xmm5, xmm6, 00000010b    pshufd  xmm5, xmm4, 00000010b
88    paddusw xmm6, xmm5    paddusw xmm4, xmm5
89    pextrw  eax, xmm6, 0    pextrw  eax, xmm4, 0
90    
   POP_XMM6_XMM7  
91    ret    ret
92  %endmacro  %endmacro
93    
# Line 113  Line 111 
111    %1 xmm0, [_EAX]    %1 xmm0, [_EAX]
112    %1 xmm1, [_EAX+TMP0]    %1 xmm1, [_EAX+TMP0]
113    lea _EAX, [_EAX+2*TMP0]    ; + 2*stride    lea _EAX, [_EAX+2*TMP0]    ; + 2*stride
114    psadbw xmm0, xmm7    psadbw xmm0, xmm5
115    paddusw xmm6, xmm0    paddusw xmm4, xmm0
116    psadbw xmm1, xmm7    psadbw xmm1, xmm5
117    paddusw xmm6, xmm1    paddusw xmm4, xmm1
118  %endmacro  %endmacro
119    
120    
121  %macro MEAN16_SSE2_SSE3 1  %macro MEAN16_SSE2_SSE3 1
   PUSH_XMM6_XMM7  
122    mov _EAX, prm1   ; src    mov _EAX, prm1   ; src
123    mov TMP0, prm2   ; stride    mov TMP0, prm2   ; stride
124    
125    pxor xmm6, xmm6     ; accum    pxor xmm4, xmm4     ; accum
126    pxor xmm7, xmm7     ; zero    pxor xmm5, xmm5     ; zero
127    
128    MEAN_16x16_SSE2 %1    MEAN_16x16_SSE2 %1
129    MEAN_16x16_SSE2 %1    MEAN_16x16_SSE2 %1
# Line 140  Line 137 
137    
138    mov _EAX, prm1       ; src again    mov _EAX, prm1       ; src again
139    
140    pshufd   xmm7, xmm6, 10b    pshufd   xmm5, xmm4, 10b
141    paddusw  xmm7, xmm6    paddusw  xmm5, xmm4
142    pxor     xmm6, xmm6     ; zero accum    pxor     xmm4, xmm4     ; zero accum
143    psrlw    xmm7, 8        ; => Mean    psrlw    xmm5, 8        ; => Mean
144    pshuflw  xmm7, xmm7, 0  ; replicate Mean    pshuflw  xmm5, xmm5, 0  ; replicate Mean
145    packuswb xmm7, xmm7    packuswb xmm5, xmm5
146    pshufd   xmm7, xmm7, 00000000b    pshufd   xmm5, xmm5, 00000000b
147    
148    MEAN_16x16_SSE2 %1    MEAN_16x16_SSE2 %1
149    MEAN_16x16_SSE2 %1    MEAN_16x16_SSE2 %1
# Line 158  Line 155 
155    MEAN_16x16_SSE2 %1    MEAN_16x16_SSE2 %1
156    MEAN_16x16_SSE2 %1    MEAN_16x16_SSE2 %1
157    
158    pshufd   xmm7, xmm6, 10b    pshufd   xmm5, xmm4, 10b
159    paddusw  xmm7, xmm6    paddusw  xmm5, xmm4
160    pextrw eax, xmm7, 0    pextrw eax, xmm5, 0
161    
   POP_XMM6_XMM7  
162    ret    ret
163  %endmacro  %endmacro
164    

Legend:
Removed from v.1838  
changed lines
  Added in v.1839

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