<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><DIV>right<BR><BR>At 2013-11-07 19:12:33,yuvaraj@multicorewareinc.com wrote:<BR>># HG changeset patch<BR>># User Yuvaraj Venkatesh <yuvaraj@multicorewareinc.com><BR>># Date 1383822620 -19800<BR>>#      Thu Nov 07 16:40:20 2013 +0530<BR>># Node ID 519267d0fce9bf4b2f5ec52fe6ddc08a274f16bd<BR>># Parent  a8b449fb406d60fa674cfc71d7207bf0d2162175<BR>>asm: assembly code for pixel_sad_x3_64xN<BR>><BR>>diff -r a8b449fb406d -r 519267d0fce9 source/common/x86/asm-primitives.cpp<BR>>--- a/source/common/x86/asm-primitives.cpp     Thu Nov 07 13:07:18 2013 +0530<BR>>+++ b/source/common/x86/asm-primitives.cpp    Thu Nov 07 16:40:20 2013 +0530<BR>>@@ -416,6 +416,10 @@<BR>>         p.sad_x4[LUMA_32x64] = x265_pixel_sad_x4_32x64_ssse3;<BR>>         p.sad_x3[LUMA_48x64] = x265_pixel_sad_x3_48x64_ssse3;<BR>>         p.sad_x4[LUMA_48x64] = x265_pixel_sad_x4_48x64_ssse3;<BR>>+        p.sad_x3[LUMA_64x16] = x265_pixel_sad_x3_64x16_ssse3;<BR>>+        p.sad_x3[LUMA_64x32] = x265_pixel_sad_x3_64x32_ssse3;<BR>>+        p.sad_x3[LUMA_64x48] = x265_pixel_sad_x3_64x48_ssse3;<BR>>+        p.sad_x3[LUMA_64x64] = x265_pixel_sad_x3_64x64_ssse3;<BR>> <BR>>         p.luma_hvpp[LUMA_8x8] = x265_interp_8tap_hv_pp_8x8_ssse3;<BR>>         p.ipfilter_sp[FILTER_V_S_P_8] = x265_interp_8tap_v_sp_ssse3;<BR>>@@ -472,6 +476,10 @@<BR>>         p.sad_x4[LUMA_32x64] = x265_pixel_sad_x4_32x64_avx;<BR>>         p.sad_x3[LUMA_48x64] = x265_pixel_sad_x3_48x64_avx;<BR>>         p.sad_x4[LUMA_48x64] = x265_pixel_sad_x4_48x64_avx;<BR>>+        p.sad_x3[LUMA_64x16] = x265_pixel_sad_x3_64x16_avx;<BR>>+        p.sad_x3[LUMA_64x32] = x265_pixel_sad_x3_64x32_avx;<BR>>+        p.sad_x3[LUMA_64x48] = x265_pixel_sad_x3_64x48_avx;<BR>>+        p.sad_x3[LUMA_64x64] = x265_pixel_sad_x3_64x64_avx;<BR>>     }<BR>>     if (cpuMask & X265_CPU_XOP)<BR>>     {<BR>>diff -r a8b449fb406d -r 519267d0fce9 source/common/x86/sad-a.asm<BR>>--- a/source/common/x86/sad-a.asm       Thu Nov 07 13:07:18 2013 +0530<BR>>+++ b/source/common/x86/sad-a.asm     Thu Nov 07 16:40:20 2013 +0530<BR>>@@ -2536,6 +2536,180 @@<BR>>     lea     r4,  [r4 + r5 * 2]<BR>> %endmacro<BR>> <BR>>+%macro SAD_X3_64x4 0<BR>>+    mova    m3,  [r0]<BR>>+    mova    m4,  [r0 + 16]<BR>>+    movu    m5,  [r1]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r1 + 16]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r2]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r2 + 16]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r3]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m2,  m5<BR>>+    movu    m5,  [r3 + 16]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m2,  m5<BR>>+    mova    m3,  [r0 + 32]<BR>>+    mova    m4,  [r0 + 48]<BR>>+    movu    m5,  [r1 + 32]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r1 + 48]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r2 + 32]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r2 + 48]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r3 + 32]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m2,  m5<BR>>+    movu    m5,  [r3 + 48]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m2,  m5<BR>>+<BR>>+    mova    m3,  [r0 + FENC_STRIDE]<BR>>+    mova    m4,  [r0 + 16 + FENC_STRIDE]<BR>>+    movu    m5,  [r1 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r1 + 16 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r2 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r2 + 16 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r3 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m2,  m5<BR>>+    movu    m5,  [r3 + 16 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m2,  m5<BR>>+    mova    m3,  [r0 + 32 + FENC_STRIDE]<BR>>+    mova    m4,  [r0 + 48 + FENC_STRIDE]<BR>>+    movu    m5,  [r1 + 32 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r1 + 48 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r2 + 32 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r2 + 48 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r3 + 32 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m2,  m5<BR>>+    movu    m5,  [r3 + 48 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m2,  m5<BR>>+<BR>>+    mova    m3,  [r0 + FENC_STRIDE * 2]<BR>>+    mova    m4,  [r0 + 16 + FENC_STRIDE * 2]<BR>>+    movu    m5,  [r1 + r4 * 2]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r1 + 16 + r4 * 2]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r2 + r4 * 2]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r2 + 16 + r4 * 2]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r3 + r4 * 2]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m2,  m5<BR>>+    movu    m5,  [r3 + 16 + r4 * 2]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m2,  m5<BR>>+    mova    m3,  [r0 + 32 + FENC_STRIDE * 2]<BR>>+    mova    m4,  [r0 + 48 + FENC_STRIDE * 2]<BR>>+    movu    m5,  [r1 + 32 + r4 * 2]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r1 + 48 + r4 * 2]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r2 + 32 + r4 * 2]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r2 + 48 + r4 * 2]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r3 + 32 + r4 * 2]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m2,  m5<BR>>+    movu    m5,  [r3 + 48 + r4 * 2]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m2,  m5<BR>>+<BR>>+    lea     r0,  [r0 + FENC_STRIDE * 2]<BR>>+    lea     r1,  [r1 + r4 * 2]<BR>>+    lea     r2,  [r2 + r4 * 2]<BR>>+    lea     r3,  [r3 + r4 * 2]<BR>>+    mova    m3,  [r0 + FENC_STRIDE]<BR>>+    mova    m4,  [r0 + 16 + FENC_STRIDE]<BR>>+    movu    m5,  [r1 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r1 + 16 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r2 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r2 + 16 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r3 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m2,  m5<BR>>+    movu    m5,  [r3 + 16 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m2,  m5<BR>>+    mova    m3,  [r0 + 32 + FENC_STRIDE]<BR>>+    mova    m4,  [r0 + 48 + FENC_STRIDE]<BR>>+    movu    m5,  [r1 + 32 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r1 + 48 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m0,  m5<BR>>+    movu    m5,  [r2 + 32 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r2 + 48 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m1,  m5<BR>>+    movu    m5,  [r3 + 32 + r4]<BR>>+    psadbw  m5,  m3<BR>>+    paddd   m2,  m5<BR>>+    movu    m5,  [r3 + 48 + r4]<BR>>+    psadbw  m5,  m4<BR>>+    paddd   m2,  m5<BR>>+    lea     r0,  [r0 + FENC_STRIDE * 2]<BR>>+    lea     r1,  [r1 + r4 * 2]<BR>>+    lea     r2,  [r2 + r4 * 2]<BR>>+    lea     r3,  [r3 + r4 * 2]<BR>>+%endmacro<BR>>+<BR>> ;-----------------------------------------------------------------------------<BR>> ; void pixel_sad_x3_16x16( uint8_t *fenc, uint8_t *pix0, uint8_t *pix1,<BR>> ;                          uint8_t *pix2, intptr_t i_stride, int scores[3] )<BR>>@@ -3350,6 +3524,64 @@<BR>>     SAD_X4_END_SSE2 1<BR>> %endmacro<BR>> <BR>>+%macro SAD_X3_W64 0<BR>>+cglobal pixel_sad_x3_64x16, 5, 7, 7<BR>>+    pxor  m0, m0<BR>>+    pxor  m1, m1<BR>>+    pxor  m2, m2<BR>>+    mov   r6, 16<BR>>+<BR>>+.loop<BR>>+    SAD_X3_64x4<BR>>+    SAD_X3_64x4<BR>>+<BR>>+    sub r6,  8<BR>>+    jnz .loop<BR>>+    SAD_X3_END_SSE2 1<BR>>+<BR>>+cglobal pixel_sad_x3_64x32, 5, 7, 7<BR>>+    pxor  m0, m0<BR>>+    pxor  m1, m1<BR>>+    pxor  m2, m2<BR>>+    mov   r6, 32<BR>>+<BR>>+.loop<BR>>+    SAD_X3_64x4<BR>>+    SAD_X3_64x4<BR>>+<BR>>+    sub r6,  8<BR>>+    jnz .loop<BR>>+    SAD_X3_END_SSE2 1<BR>>+<BR>>+cglobal pixel_sad_x3_64x48, 5, 7, 7<BR>>+    pxor  m0, m0<BR>>+    pxor  m1, m1<BR>>+    pxor  m2, m2<BR>>+    mov   r6, 48<BR>>+<BR>>+.loop<BR>>+    SAD_X3_64x4<BR>>+    SAD_X3_64x4<BR>>+<BR>>+    sub r6,  8<BR>>+    jnz .loop<BR>>+    SAD_X3_END_SSE2 1<BR>>+<BR>>+cglobal pixel_sad_x3_64x64, 5, 7, 7<BR>>+    pxor  m0, m0<BR>>+    pxor  m1, m1<BR>>+    pxor  m2, m2<BR>>+    mov   r6, 64<BR>>+<BR>>+.loop<BR>>+    SAD_X3_64x4<BR>>+    SAD_X3_64x4<BR>>+<BR>>+    sub r6,  8<BR>>+    jnz .loop<BR>>+    SAD_X3_END_SSE2 1<BR>>+%endmacro<BR>>+<BR>> INIT_XMM sse2<BR>> SAD_X_SSE2 3, 16, 16, 7<BR>> SAD_X_SSE2 3, 16,  8, 7<BR>>@@ -3385,6 +3617,7 @@<BR>> SAD_X3_W32<BR>> SAD_X3_W24<BR>> SAD_X3_W48<BR>>+SAD_X3_W64<BR>> SAD_X_SSE2  3, 16, 64, 7<BR>> SAD_X_SSE2  3, 16, 32, 7<BR>> SAD_X_SSE2  3, 16, 16, 7<BR>>@@ -3411,6 +3644,7 @@<BR>> SAD_X3_W32<BR>> SAD_X3_W24<BR>> SAD_X3_W48<BR>>+SAD_X3_W64<BR>> SAD_X_SSE2 3, 16, 64, 7<BR>> SAD_X_SSE2 3, 16, 32, 6<BR>> SAD_X_SSE2 3, 16, 16, 6<BR>>_______________________________________________<BR>>x265-devel mailing list<BR>>x265-devel@videolan.org<BR>>https://mailman.videolan.org/listinfo/x265-devel<BR></DIV></div>