<div dir="ltr"><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Oct 10, 2013 at 10:52 PM, Steve Borho <span dir="ltr"><<a href="mailto:steve@borho.org" target="_blank">steve@borho.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">
<div class="im">On Thu, Oct 10, 2013 at 6:08 AM,  <span dir="ltr"><<a href="mailto:nabajit@multicorewareinc.com" target="_blank">nabajit@multicorewareinc.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"># HG changeset patch<br>
# User Nabajit Deka<br>
# Date 1381403296 -19800<br>
#      Thu Oct 10 16:38:16 2013 +0530<br>
# Node ID 638f17a6d2de628566ac51d1461d8f94ee33ceeb<br>
# Parent  a79ecf3a787577a2e557659c7a8d226d7d41ce00<br>
ASM routine for luma filter for 13xN block size.<br></blockquote><div><br></div></div><div>I thought we had decided to only write assembly for the "real" luma inter block sizes and to use the existing intrinsic primitive that takes width/height arguments for these odd sizes used by subpel refine; until we can figure out if that ME optimization is still useful.</div>
</div></div></div></blockquote><div> </div><div>--> Oh, I misunderstood your point. But extending the luma filter beyond the real luma inter block sizes wasn't much of an effort and coding has been finished for all the sizes.The current functions takes height as an  argument and the width is hard coded to fit the block sizes.</div>
<div>      </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div><div class="h5">
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
<br>
diff -r a79ecf3a7875 -r 638f17a6d2de source/common/x86/ipfilter8.asm<br>
--- a/source/common/x86/ipfilter8.asm   Thu Oct 10 12:29:41 2013 +0530<br>
+++ b/source/common/x86/ipfilter8.asm   Thu Oct 10 16:38:16 2013 +0530<br>
@@ -130,3 +130,71 @@<br>
     RET<br>
<br>
 %endif  ; ARCH_X86_64 == 0<br>
+<br>
+SECTION_RODATA 32<br>
+<br>
+tab_Tm8:    db 0, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8<br>
+            db 2, 3, 4, 5, 6, 7, 8, 9, 3, 4, 5, 6, 7, 8, 9, 10<br>
+            db 4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11, 12<br>
+            db 6, 7, 8, 9, 10, 11, 12, 13, 7, 8, 9, 10, 11, 12, 13, 14<br>
+<br>
+tab_c_512:  times 8 dw 512<br>
+<br>
+SECTION .text<br>
+<br>
+%macro FILTER_H8 3<br>
+    movu        %1, [srcq - 3]<br>
+    pshufb      %2, %1, [tab_Tm8]<br>
+    pmaddubsw   %2, m3<br>
+    pshufb      m7, %1, [tab_Tm8 + 16]<br>
+    pmaddubsw   m7, m3<br>
+    phaddw      %2, m7<br>
+    pshufb      m7, %1, [tab_Tm8 + 32]<br>
+    pmaddubsw   m7, m3<br>
+    pshufb      %1, %1, [tab_Tm8 + 48]<br>
+    pmaddubsw   %1, m3<br>
+    phaddw      m7, %1<br>
+    phaddw      %2, m7<br>
+    pmulhrsw    %2, %3<br>
+    packuswb    %2, %2<br>
+    movh        [r2], %2<br>
+    movu        %1, [srcq - 3 + 8]<br>
+    pshufb      %2, %1, [tab_Tm8]<br>
+    pmaddubsw   %2, m3<br>
+    pshufb      m7, %1, [tab_Tm8 + 16]<br>
+    pmaddubsw   m7, m3<br>
+    phaddw      %2, m7<br>
+    pshufb      m7, %1, [tab_Tm8 + 32]<br>
+    pmaddubsw   m7, m3<br>
+    phaddw      m7, m7<br>
+    phaddw      %2, m7<br>
+    pmulhrsw    %2, %3<br>
+    packuswb    %2, %2<br>
+    pextrd      [r2 + 8], %2, 0<br>
+    pextrb      [r2 + 12], %2, 4<br>
+%endmacro<br>
+<br>
+;-----------------------------------------------------------------------------<br>
+; void filterHorizontal_p_p_8(pixel *src, intptr_t srcStride, pixel *dst, intptr_t dstStride, int width, int height, short const *coeff)<br>
+;-----------------------------------------------------------------------------<br>
+INIT_XMM sse4<br>
+cglobal filterHorizontal_p_p_8, 4, 5, 5, src, srcStride, dst, dstStride<br></blockquote><div><br></div></div></div><div>the function name implies 8xN?</div></div></div></div></blockquote><div> </div><div>--> The "8" in the function name was meant for 8-tap filter. We can add the block size as suffix to the function name.</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div class="im">

+<br>
+    mov       r4, r6m<br>
+    movu      m3, [r4]<br>
+    packsswb  m3, m3<br>
+<br>
+    mova      m2, [tab_c_512]<br>
+<br>
+    mov r4,   r5m<br>
+<br>
+.loop<br>
+    FILTER_H8   m0, m1, m2<br>
+<br>
+    add         srcq, srcStrideq<br>
+    add         dstq, dstStrideq<br>
+<br>
+    dec r4d<br>
+    jnz .loop<br>
+<br>
+    RET<br></div>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org" target="_blank">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><span class="HOEnZb"><font color="#888888"><br>
</font></span></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br>Steve Borho
</font></span></div></div>
<br>_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
<br></blockquote></div><br></div></div>