<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><DIV>The function is right.</DIV>
<DIV>I guess dynamic range is less than 16 bits, so we can analyze it and optimize with pmaddwd in future<BR><BR>At 2013-11-25 21:24:53,yuvaraj@multicorewareinc.com wrote:<BR>># HG changeset patch<BR>># User Yuvaraj Venkatesh <yuvaraj@multicorewareinc.com><BR>># Date 1385385872 -19800<BR>>#      Mon Nov 25 18:54:32 2013 +0530<BR>># Node ID fea660d227b842c411240ff17297ddfbb738b540<BR>># Parent  a69a8392ffeb32d5b136bd315b456b2067cceb29<BR>>asm: assembly code for pixel_sse_ss_12x16<BR>><BR>>diff -r a69a8392ffeb -r fea660d227b8 source/common/x86/asm-primitives.cpp<BR>>--- a/source/common/x86/asm-primitives.cpp  Mon Nov 25 18:30:49 2013 +0530<BR>>+++ b/source/common/x86/asm-primitives.cpp    Mon Nov 25 18:54:32 2013 +0530<BR>>@@ -95,6 +95,7 @@<BR>>     p.sse_ss[LUMA_8x8]   = x265_pixel_ssd_ss_8x8_ ## cpu; \<BR>>     p.sse_ss[LUMA_8x16]   = x265_pixel_ssd_ss_8x16_ ## cpu; \<BR>>     p.sse_ss[LUMA_8x32]   = x265_pixel_ssd_ss_8x32_ ## cpu; \<BR>>+    p.sse_ss[LUMA_12x16]   = x265_pixel_ssd_ss_12x16_ ## cpu; \<BR>>     p.sse_ss[LUMA_16x4]   = x265_pixel_ssd_ss_16x4_ ## cpu; \<BR>>     p.sse_ss[LUMA_16x8]   = x265_pixel_ssd_ss_16x8_ ## cpu; \<BR>>     p.sse_ss[LUMA_16x12]   = x265_pixel_ssd_ss_16x12_ ## cpu; \<BR>>diff -r a69a8392ffeb -r fea660d227b8 source/common/x86/pixel-a.asm<BR>>--- a/source/common/x86/pixel-a.asm       Mon Nov 25 18:30:49 2013 +0530<BR>>+++ b/source/common/x86/pixel-a.asm   Mon Nov 25 18:54:32 2013 +0530<BR>>@@ -378,12 +378,63 @@<BR>> SSD_SS    16, 64<BR>> %endmacro<BR>> <BR>>+%macro SSD_SS_12x16 0<BR>>+cglobal pixel_ssd_ss_12x16, 4,7,6<BR>>+    FIX_STRIDES r1, r3<BR>>+    mov    r4d, 8<BR>>+    pxor    m0, m0<BR>>+.loop<BR>>+    pmovsxwd  m1, [r0]<BR>>+    pmovsxwd  m2, [r2]<BR>>+    psubd     m1, m2<BR>>+    pmulld    m1, m1<BR>>+    paddd     m0, m1<BR>>+    pmovsxwd  m1, [r0 + 8]<BR>>+    pmovsxwd  m2, [r2 + 8]<BR>>+    psubd     m1, m2<BR>>+    pmulld    m1, m1<BR>>+    paddd     m0, m1<BR>>+    pmovsxwd  m1, [r0 + 16]<BR>>+    pmovsxwd  m2, [r2 + 16]<BR>>+    psubd     m1, m2<BR>>+    pmulld    m1, m1<BR>>+    paddd     m0, m1<BR>>+    lea       r0, [r0 + 2*r1]<BR>>+    lea       r2, [r2 + 2*r3]<BR>>+    pmovsxwd  m1, [r0]<BR>>+    pmovsxwd  m2, [r2]<BR>>+    psubd     m1, m2<BR>>+    pmulld    m1, m1<BR>>+    paddd     m0, m1<BR>>+    pmovsxwd  m1, [r0 + 8]<BR>>+    pmovsxwd  m2, [r2 + 8]<BR>>+    psubd     m1, m2<BR>>+    pmulld    m1, m1<BR>>+    paddd     m0, m1<BR>>+    pmovsxwd  m1, [r0 + 16]<BR>>+    pmovsxwd  m2, [r2 + 16]<BR>>+    psubd     m1, m2<BR>>+    pmulld    m1, m1<BR>>+    paddd     m0, m1<BR>>+    lea       r0, [r0 + 2*r1]<BR>>+    lea       r2, [r2 + 2*r3]<BR>>+    dec      r4d<BR>>+    jnz .loop<BR>>+    phaddd    m0, m0<BR>>+    phaddd    m0, m0<BR>>+    movd     eax, m0<BR>>+    RET<BR>>+%endmacro<BR>>+<BR>> INIT_XMM sse2<BR>> SSD_SS_ONE<BR>>+SSD_SS_12x16<BR>> INIT_XMM sse4<BR>> SSD_SS_ONE<BR>>+SSD_SS_12x16<BR>> INIT_XMM avx<BR>> SSD_SS_ONE<BR>>+SSD_SS_12x16<BR>> %endif ; !HIGH_BIT_DEPTH<BR>> <BR>> %if HIGH_BIT_DEPTH == 0<BR>>_______________________________________________<BR>>x265-devel mailing list<BR>>x265-devel@videolan.org<BR>>https://mailman.videolan.org/listinfo/x265-devel<BR></DIV></div>