<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><DIV>I guess this function have some problem, I am not sure he verify this function with testbench before upload<BR>the problem is "j" and "l" miss a pixel, in some time, it make a mistake<BR><BR>At 2013-11-18 15:06:07,murugan@multicorewareinc.com wrote:<BR>># HG changeset patch<BR>># User Murugan Vairavel <murugan@multicorewareinc.com><BR>># Date 1384757077 -19800<BR>>#      Mon Nov 18 12:14:37 2013 +0530<BR>># Node ID d756003f63691b7677b4cf4c98fbb2a1d67dbb02<BR>># Parent  e2895ce7bbeb2c3d845fee2578758d0012fa2cb4<BR>>asm: code for scale2D_64to32 routine<BR>><BR>>diff -r e2895ce7bbeb -r d756003f6369 source/common/x86/asm-primitives.cpp<BR>>--- a/source/common/x86/asm-primitives.cpp      Sun Nov 17 11:24:13 2013 -0600<BR>>+++ b/source/common/x86/asm-primitives.cpp    Mon Nov 18 12:14:37 2013 +0530<BR>>@@ -529,6 +529,7 @@<BR>>         PIXEL_AVG_W4(ssse3);<BR>> <BR>>         p.scale1D_128to64 = x265_scale1D_128to64_ssse3;<BR>>+        p.scale2D_64to32 = x265_scale2D_64to32_ssse3;<BR>> <BR>>         p.sad_x4[LUMA_8x4] = x265_pixel_sad_x4_8x4_ssse3;<BR>>         p.sad_x4[LUMA_8x8] = x265_pixel_sad_x4_8x8_ssse3;<BR>>diff -r e2895ce7bbeb -r d756003f6369 source/common/x86/pixel-a.asm<BR>>--- a/source/common/x86/pixel-a.asm Sun Nov 17 11:24:13 2013 -0600<BR>>+++ b/source/common/x86/pixel-a.asm   Mon Nov 18 12:14:37 2013 +0530<BR>>@@ -8230,3 +8230,113 @@<BR>>     movu          [r0 + 48],    m4<BR>> <BR>> RET<BR>>+<BR>>+;-----------------------------------------------------------------<BR>>+; void scale2D_64to32(pixel *dst, pixel *src, intptr_t stride)<BR>>+;-----------------------------------------------------------------<BR>>+INIT_XMM ssse3<BR>>+cglobal scale2D_64to32, 3, 4, 8, dest, src, stride<BR>>+<BR>>+    mova        m7,      [deinterleave_shuf]<BR>>+    mov         r3d,     32<BR>>+.loop<BR>>+<BR>>+    movu        m0,      [r1]              ;i<BR>>+    palignr     m1,      m0,    1          ;j<BR>>+    movu        m2,      [r1 + r2]         ;k<BR>>+    palignr     m3,      m2,    1          ;l<BR>>+    movu        m4,      m0<BR>>+    movu        m5,      m2<BR>>+<BR>>+    pxor        m4,      m1                ;i^j<BR>>+    pxor        m5,      m3                ;k^l<BR>>+    por         m4,      m5                ;ij|kl<BR>>+<BR>>+    pavgb       m0,      m1                ;s<BR>>+    pavgb       m2,      m3                ;t<BR>>+    movu        m5,      m0<BR>>+    pavgb       m0,      m2                ;(s+t+1)/2<BR>>+    pxor        m5,      m2                ;s^t<BR>>+    pand        m4,      m5                ;(ij|kl)&st<BR>>+    pand        m4,      [hmul_16p]<BR>>+    psubb       m0,      m4                ;Result<BR>>+<BR>>+    movu        m1,      [r1 + 16]         ;i<BR>>+    palignr     m2,      m1,    1          ;j<BR>>+    movu        m3,      [r1 + r2 + 16]    ;k<BR>>+    palignr     m4,      m3,    1          ;l<BR>>+    movu        m5,      m1<BR>>+    movu        m6,      m3<BR>>+<BR>>+    pxor        m5,      m2                ;i^j<BR>>+    pxor        m6,      m4                ;k^l<BR>>+    por         m5,      m6                ;ij|kl<BR>>+<BR>>+    pavgb       m1,      m2                ;s<BR>>+    pavgb       m3,      m4                ;t<BR>>+    movu        m6,      m1<BR>>+    pavgb       m1,      m3                ;(s+t+1)/2<BR>>+    pxor        m6,      m3                ;s^t<BR>>+    pand        m5,      m6                ;(ij|kl)&st<BR>>+    pand        m5,      [hmul_16p]<BR>>+    psubb       m1,      m5                ;Result<BR>>+<BR>>+    pshufb      m0,      m0,    m7<BR>>+    pshufb      m1,      m1,    m7<BR>>+<BR>>+    punpcklqdq    m0,           m1<BR>>+    movu          [r0],         m0<BR>>+<BR>>+    movu        m0,      [r1 + 32]         ;i<BR>>+    palignr     m1,      m0,    1          ;j<BR>>+    movu        m2,      [r1 + r2 + 32]    ;k<BR>>+    palignr     m3,      m2,    1          ;l<BR>>+    movu        m4,      m0<BR>>+    movu        m5,      m2<BR>>+<BR>>+    pxor        m4,      m1                ;i^j<BR>>+    pxor        m5,      m3                ;k^l<BR>>+    por         m4,      m5                ;ij|kl<BR>>+<BR>>+    pavgb       m0,      m1                ;s<BR>>+    pavgb       m2,      m3                ;t<BR>>+    movu        m5,      m0<BR>>+    pavgb       m0,      m2                ;(s+t+1)/2<BR>>+    pxor        m5,      m2                ;s^t<BR>>+    pand        m4,      m5                ;(ij|kl)&st<BR>>+    pand        m4,      [hmul_16p]<BR>>+    psubb       m0,      m4                ;Result<BR>>+<BR>>+    movu        m1,      [r1 + 48]         ;i<BR>>+    palignr     m2,      m1,    1          ;j<BR>>+    movu        m3,      [r1 + r2 + 48]    ;k<BR>>+    palignr     m4,      m3,    1          ;l<BR>>+    movu        m5,      m1<BR>>+    movu        m6,      m3<BR>>+<BR>>+    pxor        m5,      m2                ;i^j<BR>>+    pxor        m6,      m4                ;k^l<BR>>+    por         m5,      m6                ;ij|kl<BR>>+<BR>>+    pavgb       m1,      m2                ;s<BR>>+    pavgb       m3,      m4                ;t<BR>>+    movu        m6,      m1<BR>>+    pavgb       m1,      m3                ;(s+t+1)/2<BR>>+    pxor        m6,      m3                ;s^t<BR>>+    pand        m5,      m6                ;(ij|kl)&st<BR>>+    pand        m5,      [hmul_16p]<BR>>+    psubb       m1,      m5                ;Result<BR>>+<BR>>+    pshufb      m0,      m0,    m7<BR>>+    pshufb      m1,      m1,    m7<BR>>+<BR>>+    punpcklqdq    m0,           m1<BR>>+    movu          [r0 + 16],    m0<BR>>+<BR>>+    lea    r0,    [r0 + 32]<BR>>+    lea    r1,    [r1 + 2 * r2]<BR>>+    dec    r3d<BR>>+<BR>>+    jnz    .loop<BR>>+<BR>>+RET<BR>>diff -r e2895ce7bbeb -r d756003f6369 source/common/x86/pixel.h<BR>>--- a/source/common/x86/pixel.h  Sun Nov 17 11:24:13 2013 -0600<BR>>+++ b/source/common/x86/pixel.h       Mon Nov 18 12:14:37 2013 +0530<BR>>@@ -117,6 +117,7 @@<BR>> int x265_pixel_satd_16x32_sse2(pixel *, intptr_t, pixel *, intptr_t);<BR>> int x265_pixel_satd_16x64_sse2(pixel *, intptr_t, pixel *, intptr_t);<BR>> void x265_scale1D_128to64_ssse3(pixel *, pixel *, intptr_t);<BR>>+void x265_scale2D_64to32_ssse3(pixel *, pixel *, intptr_t);<BR>> <BR>> DECL_PIXELS(uint64_t, var, mmx2, (pixel * pix, intptr_t i_stride))<BR>> DECL_PIXELS(uint64_t, var, sse2, (pixel * pix, intptr_t i_stride))<BR>>_______________________________________________<BR>>x265-devel mailing list<BR>>x265-devel@videolan.org<BR>>https://mailman.videolan.org/listinfo/x265-devel<BR></DIV></div>