<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><DIV>right<BR><BR>At 2014-01-30 20:45:41,yuvaraj@multicorewareinc.com wrote:<BR>># HG changeset patch<BR>># User Yuvaraj Venkatesh <yuvaraj@multicorewareinc.com><BR>># Date 1391085902 -19800<BR>>#      Thu Jan 30 18:15:02 2014 +0530<BR>># Branch stable<BR>># Node ID 2fe27c68eb88f2acea4530aeb7e32a27a889bb0e<BR>># Parent  86743912a5b0459645e5aeccd1c35313e3f0af58<BR>>asm: modified pixel_sad asm function to avoid overflow<BR>><BR>>diff -r 86743912a5b0 -r 2fe27c68eb88 source/common/x86/sad-a.asm<BR>>--- a/source/common/x86/sad-a.asm   Wed Jan 29 18:44:49 2014 +0530<BR>>+++ b/source/common/x86/sad-a.asm     Thu Jan 30 18:15:02 2014 +0530<BR>>@@ -2503,9 +2503,9 @@<BR>>     psadbw   m3, m6<BR>>     psadbw   m4, m6<BR>>     psadbw   m5, m6<BR>>-    paddw    m0, m3<BR>>-    paddw    m1, m4<BR>>-    paddw    m2, m5<BR>>+    paddd    m0, m3<BR>>+    paddd    m1, m4<BR>>+    paddd    m2, m5<BR>> %endmacro<BR>> <BR>> %macro SAD_X4_START_2x8P_SSE2 0<BR>>@@ -2534,16 +2534,16 @@<BR>>     movhps   m5, [r2+%4]<BR>>     psadbw   m4, m6<BR>>     psadbw   m5, m6<BR>>-    paddw    m0, m4<BR>>-    paddw    m1, m5<BR>>+    paddd    m0, m4<BR>>+    paddd    m1, m5<BR>>     movq     m4, [r3+%2]<BR>>     movq     m5, [r4+%2]<BR>>     movhps   m4, [r3+%4]<BR>>     movhps   m5, [r4+%4]<BR>>     psadbw   m4, m6<BR>>     psadbw   m5, m6<BR>>-    paddw    m2, m4<BR>>-    paddw    m3, m5<BR>>+    paddd    m2, m4<BR>>+    paddd    m3, m5<BR>> %endmacro<BR>> <BR>> %macro SAD_X4_START_1x16P_SSE2 0<BR>>@@ -2651,21 +2651,6 @@<BR>> <BR>> %macro SAD_X3_END_SSE2 1<BR>>     movifnidn r5, r5mp<BR>>-%if cpuflag(ssse3)<BR>>-%if %1<BR>>-    pshufd     m3, m0, 8<BR>>-    pshufd     m4, m1, 8<BR>>-    pshufd     m5, m2, 8<BR>>-    punpcklqdq m3, m4<BR>>-    phaddd     m3, m5<BR>>-    mova     [r5], m3<BR>>-%else<BR>>-    packssdw   m0, m1<BR>>-    packssdw   m2, m2<BR>>-    phaddd     m0, m2<BR>>-    mova     [r5], m0<BR>>-%endif<BR>>-%else<BR>>     movhlps    m3, m0<BR>>     movhlps    m4, m1<BR>>     movhlps    m5, m2<BR>>@@ -2675,29 +2660,11 @@<BR>>     movd   [r5+0], m0<BR>>     movd   [r5+4], m1<BR>>     movd   [r5+8], m2<BR>>-%endif<BR>>     RET<BR>> %endmacro<BR>> <BR>> %macro SAD_X4_END_SSE2 1<BR>>     mov      r0, r6mp<BR>>-%if cpuflag(ssse3)<BR>>-%if %1<BR>>-    pshufd     m4, m0, 8<BR>>-    pshufd     m5, m1, 8<BR>>-    punpcklqdq m4, m5<BR>>-    pshufd     m0, m2, 8<BR>>-    pshufd     m5, m3, 8<BR>>-    punpcklqdq m0, m5<BR>>-    phaddd     m4, m0<BR>>-    mova     [r0], m4<BR>>-%else<BR>>-    packssdw   m0, m1<BR>>-    packssdw   m2, m3<BR>>-    phaddd     m0, m2<BR>>-    mova     [r0], m0<BR>>-%endif<BR>>-%else<BR>>     psllq      m1, 32<BR>>     psllq      m3, 32<BR>>     paddd      m0, m1<BR>>@@ -2708,73 +2675,6 @@<BR>>     paddd      m2, m3<BR>>     movq   [r0+0], m0<BR>>     movq   [r0+8], m2<BR>>-%endif<BR>>-    RET<BR>>-%endmacro<BR>>-<BR>>-%macro SAD_X4_START_2x8P_SSSE3 0<BR>>-    movddup  m4, [r0]<BR>>-    movq     m0, [r1]<BR>>-    movq     m1, [r3]<BR>>-    movhps   m0, [r2]<BR>>-    movhps   m1, [r4]<BR>>-    movddup  m5, [r0+FENC_STRIDE]<BR>>-    movq     m2, [r1+r5]<BR>>-    movq     m3, [r3+r5]<BR>>-    movhps   m2, [r2+r5]<BR>>-    movhps   m3, [r4+r5]<BR>>-    psadbw   m0, m4<BR>>-    psadbw   m1, m4<BR>>-    psadbw   m2, m5<BR>>-    psadbw   m3, m5<BR>>-    paddw    m0, m2<BR>>-    paddw    m1, m3<BR>>-%endmacro<BR>>-<BR>>-%macro SAD_X4_2x8P_SSSE3 4<BR>>-    movddup  m6, [r0+%1]<BR>>-    movq     m2, [r1+%2]<BR>>-    movq     m3, [r3+%2]<BR>>-    movhps   m2, [r2+%2]<BR>>-    movhps   m3, [r4+%2]<BR>>-    movddup  m7, [r0+%3]<BR>>-    movq     m4, [r1+%4]<BR>>-    movq     m5, [r3+%4]<BR>>-    movhps   m4, [r2+%4]<BR>>-    movhps   m5, [r4+%4]<BR>>-    psadbw   m2, m6<BR>>-    psadbw   m3, m6<BR>>-    psadbw   m4, m7<BR>>-    psadbw   m5, m7<BR>>-    paddw    m0, m2<BR>>-    paddw    m1, m3<BR>>-    paddw    m0, m4<BR>>-    paddw    m1, m5<BR>>-%endmacro<BR>>-<BR>>-%macro SAD_X4_4x8P_SSSE3 2<BR>>-%if %1==0<BR>>-    lea    r6, [r5*3]<BR>>-    SAD_X4_START_2x8P_SSSE3<BR>>-%else<BR>>-    SAD_X4_2x8P_SSSE3 FENC_STRIDE*(0+(%1&1)*4), r5*0, FENC_STRIDE*(1+(%1&1)*4), r5*1<BR>>-%endif<BR>>-    SAD_X4_2x8P_SSSE3 FENC_STRIDE*(2+(%1&1)*4), r5*2, FENC_STRIDE*(3+(%1&1)*4), r6<BR>>-%if %1 != %2-1<BR>>-%if (%1&1) != 0<BR>>-    add  r0, 8*FENC_STRIDE<BR>>-%endif<BR>>-    lea  r1, [r1+4*r5]<BR>>-    lea  r2, [r2+4*r5]<BR>>-    lea  r3, [r3+4*r5]<BR>>-    lea  r4, [r4+4*r5]<BR>>-%endif<BR>>-%endmacro<BR>>-<BR>>-%macro SAD_X4_END_SSSE3 0<BR>>-    mov      r0, r6mp<BR>>-    packssdw m0, m1<BR>>-    mova   [r0], m0<BR>>     RET<BR>> %endmacro<BR>> <BR>>@@ -3357,16 +3257,6 @@<BR>> SAD_X_SSE2 4, 16,  8, 7<BR>> SAD_X_SSE2 4, 16,  4, 7<BR>> <BR>>-%macro SAD_X_SSSE3 3<BR>>-cglobal pixel_sad_x%1_%2x%3, 2+%1,3+%1,8<BR>>-%assign x 0<BR>>-%rep %3/4<BR>>-    SAD_X%1_4x%2P_SSSE3 x, %3/4<BR>>-%assign x x+1<BR>>-%endrep<BR>>-    SAD_X%1_END_SSSE3<BR>>-%endmacro<BR>>-<BR>> INIT_XMM ssse3<BR>> SAD_X3_W12<BR>> SAD_X3_W32<BR>>@@ -3390,10 +3280,10 @@<BR>> SAD_X_SSE2  4, 16, 16, 7<BR>> SAD_X_SSE2  4, 16, 12, 7<BR>> SAD_X_SSE2  4, 16,  8, 7<BR>>-SAD_X_SSSE3 4,  8, 32<BR>>-SAD_X_SSSE3 4,  8, 16<BR>>-SAD_X_SSSE3 4,  8,  8<BR>>-SAD_X_SSSE3 4,  8,  4<BR>>+SAD_X_SSE2  4,  8, 32, 7<BR>>+SAD_X_SSE2  4,  8, 16, 7<BR>>+SAD_X_SSE2  4,  8,  8, 7<BR>>+SAD_X_SSE2  4,  8,  4, 7<BR>> <BR>> INIT_XMM avx<BR>> SAD_X3_W12<BR>>_______________________________________________<BR>>x265-devel mailing list<BR>>x265-devel@videolan.org<BR>>https://mailman.videolan.org/listinfo/x265-devel<BR></DIV></div>