<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><div> </div>
<div></div>
<div id="divNeteaseMailCard"></div>
<div><br></div>ÔÚ 2015-04-28 12:13:54£¬dave <dtyx265@gmail.com> Ð´µÀ£º<br>
<blockquote id="isReplyContent" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<div class="moz-cite-prefix">On 04/27/2015 08:42 PM, chen wrote:<br></div>
<blockquote cite="mid:9235748.1406.14cfe1e7020.Coremail.chenm003@163.com" type="cite">
<div style="FONT-SIZE: 14px; COLOR: #000000; LINE-HEIGHT: 1.7; FONT-FAMILY: arial">
<div><br></div><pre>At 2015-04-28 09:05:06,<a class="moz-txt-link-abbreviated" href="mailto:dtyx265@gmail.com">dtyx265@gmail.com</a> wrote:
># HG changeset patch
># User David T Yuen <a href="mailto:dtyx265@gmail.com%3E%3E#%A0Date%A01430182995%A025200%3E#%A0Node%A0ID%A031b76bd430a47411f7b2ebaa7cfbb44e25c5ff60%3E#%A0Parent%A0%A068a13226d586b335c02cade9311e093f0149c42a%3Easm:%A0interp_8tap_horiz%A0pp%A0and%A0ps%A0sse2%3E%3EThis%A0replaces%A0c%A0code%A0and%A0covers%3E" moz-do-not-send="true">dtyx265@gmail.com>
># Date 1430182995 25200
># Node ID 31b76bd430a47411f7b2ebaa7cfbb44e25c5ff60
># Parent  68a13226d586b335c02cade9311e093f0149c42a
>asm: interp_8tap_horiz pp and ps sse2
>
>This replaces c code and covers
>
</a>
>diff -r 68a13226d586 -r 31b76bd430a4 source/common/x86/asm-primitives.cpp
>--- a/source/common/x86/asm-primitives.cpp     Sat Apr 25 01:39:55 2015 -0500
>+++ b/source/common/x86/asm-primitives.cpp     Mon Apr 27 18:03:15 2015 -0700
>@@ -1340,6 +1340,10 @@
>         CHROMA_420_VSP_FILTERS(_sse2);
>         CHROMA_422_VSP_FILTERS(_sse2);
>         CHROMA_444_VSP_FILTERS(_sse2);
>+        ALL_LUMA_PU(luma_hpp, interp_8tap_horiz_pp, sse2);
>+        p.pu[LUMA_4x4].luma_hpp = x265_interp_8tap_horiz_pp_4x4_sse2;
>+        ALL_LUMA_PU(luma_hps, interp_8tap_horiz_ps, sse2);
>+        p.pu[LUMA_4x4].luma_hps = x265_interp_8tap_horiz_ps_4x4_sse2;

>         //p.frameInitLowres = x265_frame_init_lowres_core_mmx2;
>         p.frameInitLowres = x265_frame_init_lowres_core_sse2;
>diff -r 68a13226d586 -r 31b76bd430a4 source/common/x86/ipfilter8.asm
>--- a/source/common/x86/ipfilter8.asm  Sat Apr 25 01:39:55 2015 -0500
>+++ b/source/common/x86/ipfilter8.asm  Mon Apr 27 18:03:15 2015 -0700
>@@ -160,6 +160,11 @@
>                  db  -1, 4, -11, 40,  40, -11, 4, -1
>                  db   0, 1, -5,  17,  58, -10, 4, -1

>+tabw_LumaCoeff:  dw   0, 0,  0,  64,  0,   0,  0,  0
>+                 dw  -1, 4, -10, 58,  17, -5,  1,  0
>+                 dw  -1, 4, -11, 40,  40, -11, 4, -1
>+                 dw   0, 1, -5,  17,  58, -10, 4, -1
>+
> tab_LumaCoeffV: times 4 dw 0, 0
>                 times 4 dw 0, 64
>                 times 4 dw 0, 0
>@@ -825,6 +830,230 @@
>     IPFILTER_CHROMA_W_sse3 48, 64
>     IPFILTER_CHROMA_W_sse3 64, 16

>+%macro FILTER_H8_W8_sse2 0
>+    movh        m1, [r0 + r5 - 3]
offset field (-3) can avoid by preare on r0
</pre></div></blockquote>I could also use r5 - 3, r5 - 2, r5 - 1... instead of r5 - 3 + n.<br>
<blockquote cite="mid:9235748.1406.14cfe1e7020.Coremail.chenm003@163.com" type="cite">
<div style="FONT-SIZE: 14px; COLOR: #000000; LINE-HEIGHT: 1.7; FONT-FAMILY: arial"><pre>>+    movh        m4, [r0 + r5 - 3 + 1]
>+    punpcklbw   m1, m6
>+    punpcklbw   m4, m6
>+    movh        m5, [r0 + r5 - 3 + 2]
>+    movh        m0, [r0 + r5 - 3 + 3]
>+    punpcklbw   m5, m6
>+    punpcklbw   m0, m6
>+    pmaddwd     m1, m3
>+    pmaddwd     m4, m3
>+    pmaddwd     m5, m3
>+    pmaddwd     m0, m3
>+    packssdw    m1, m4
>+    packssdw    m5, m0
>+    pshuflw     m4, m1, q2301
>+    pshufhw     m4, m4, q2301
>+    pshuflw     m0, m5, q2301
>+    pshufhw     m0, m0, q2301
>+    paddw       m1, m4
>+    paddw       m5, m0
>+    psrldq      m1, 2
>+    psrldq      m5, 2
>+    pshufd      m1, m1, q3120
>+    pshufd      m5, m5, q3120
>+    punpcklqdq  m1, m5
m1 valid in here
</pre></div></blockquote>
<blockquote cite="mid:9235748.1406.14cfe1e7020.Coremail.chenm003@163.com" type="cite">
<div style="FONT-SIZE: 14px; COLOR: #000000; LINE-HEIGHT: 1.7; FONT-FAMILY: arial"><pre>>+    movh        m7, [r0 + r5 - 3 + 4]
>+    movh        m4, [r0 + r5 - 3 + 5]
>+    punpcklbw   m7, m6
>+    punpcklbw   m4, m6
>+    movh        m5, [r0 + r5 - 3 + 6]
>+    movh        m0, [r0 + r5 - 3 + 7]
>+    punpcklbw   m5, m6
>+    punpcklbw   m0, m6
>+    pmaddwd     m7, m3
>+    pmaddwd     m4, m3
>+    pmaddwd     m5, m3
>+    pmaddwd     m0, m3
>+    packssdw    m7, m4
>+    packssdw    m5, m0
>+    pshuflw     m4, m7, q2301
>+    pshufhw     m4, m4, q2301
>+    pshuflw     m0, m5, q2301
>+    pshufhw     m0, m0, q2301
>+    paddw       m7, m4
>+    paddw       m5, m0
>+    psrldq      m7, 2
>+    psrldq      m5, 2
>+    pshufd      m7, m7, q3120
>+    pshufd      m5, m5, q3120
>+    punpcklqdq  m7, m5
>+    pshuflw     m4, m1, q2301
m1 used in here, long distance
</pre></div></blockquote>I am not sure what is wrong with this.<br><br>this is right instruction, just use value in long distance, we may improve it in future<br><br>
<blockquote cite="mid:9235748.1406.14cfe1e7020.Coremail.chenm003@163.com" type="cite">
<div style="FONT-SIZE: 14px; COLOR: #000000; LINE-HEIGHT: 1.7; FONT-FAMILY: arial"><pre>>+    pshufhw     m4, m4, q2301
>+    pshuflw     m0, m7, q2301
>+    pshufhw     m0, m0, q2301
>+    paddw       m1, m4
>+    paddw       m7, m0
>+    psrldq      m1, 2
>+    psrldq      m7, 2
>+    pshufd      m1, m1, q3120
>+    pshufd      m7, m7, q3120
>+    punpcklqdq  m1, m7
>+%endmacro
>+

>+;----------------------------------------------------------------------------------------------------------------------------
>+; void interp_8tap_horiz_%3_%1x%2(pixel *src, intptr_t srcStride, pixel *dst, intptr_t dstStride, int coeffIdx, int isRowExt)
>+;----------------------------------------------------------------------------------------------------------------------------
>+%macro IPFILTER_LUMA_sse2 3
>+INIT_XMM sse2
>+cglobal interp_8tap_horiz_%3_%1x%2, 4,7,8
>+
>+    mov       r4d, r4m
>+    add       r4d, r4d
>+    pxor      m6, m6
>+%ifdef PIC
>+    lea       r6, [tabw_LumaCoeff]
>+    mova      m3, [r6 + r4 * 8]
>+%else
>+    mova      m3, [tabw_LumaCoeff + r4 * 8]
>+%endif
>+
>+    mov       r4d, %2
>+%ifidn %3, pp
>+    mova      m2, [pw_32]
>+%else
>+    mova      m2, [pw_2000]
>+    add       r3d, r3d
>+    cmp       r5m, byte 0
>+    je        .loopH
>+    lea       r6, [r1 + 2 * r1]
>+    sub       r0d, r6d
>+    add       r4d, 7
>+%endif
>+
>+.loopH:
>+    xor       r5d, r5d
>+%rep %1 / 8
use %rep here, why you need physical register r5?
</pre></div></blockquote>Each iteration of the loop completes a row.  r5 is the index across the row and must be reset at the beginning of each loop iteration.<br><br>use '%assign x', some function have example<br>
<blockquote cite="mid:9235748.1406.14cfe1e7020.Coremail.chenm003@163.com" type="cite">
<div style="FONT-SIZE: 14px; COLOR: #000000; LINE-HEIGHT: 1.7; FONT-FAMILY: arial"><pre>>+    FILTER_H8_W8_sse2
>+  %ifidn %3, pp
>+    paddw     m1, m2
>+    psraw     m1, 6
>+    packuswb  m1, m1
>+    movh      [r2 + r5], m1
>+  %else
>+    psubw     m1, m2
>+    movu      [r2 + 2 * r5], m1
>+  %endif
>+    add       r5d, 8
>+%endrep
>+
>+%rep (%1 % 8) / 4
>+    FILTER_H8_W4_sse2
>+  %ifidn %3, pp
>+    paddw     m1, m2
>+    psraw     m1, 6
>+    packuswb  m1, m1
>+    movd      [r2 + r5], m1
>+  %else
>+    psubw     m1, m2
>+    movh      [r2 + 2 * r5], m1
>+  %endif
>+%endrep
>+
>+    add       r0d, r1d
>+    add       r2d, r3d
>+
>+    dec       r4d
>+    jnz       .loopH
>+
no extra blank line here
will remove...
>+    RET
>+
>+%endmacro
</pre></div><br>
<fieldset class="mimeAttachmentHeader"></fieldset> <br><pre wrap="">_______________________________________________
x265-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a>
<a class="moz-txt-link-freetext" href="https://mailman.videolan.org/listinfo/x265-devel">https://mailman.videolan.org/listinfo/x265-devel</a>
</pre></blockquote><br></blockquote></div>