<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><div>right<br><br>At 2015-04-14 09:38:55,dtyx265@gmail.com wrote:<br>># HG changeset patch<br>># User David T Yuen <dtyx265@gmail.com><br>># Date 1428959599 25200<br>># Node ID f241399b3494455e4a40b8fcf693e4029b68c347<br>># Parent  4cccf22b00ee188a72c8dc3896d7dc1613d855ad<br>>asm: intra pred all_angs_pred_4x4 sse2<br>><br>>This replaces c code and is backported from sse4<br>>The processing of modes 10 and 26 were merged and moved to after mode 2<br>><br>>The new constants are declared with shortened names<br>><br>>64-bit<br>><br>>./test/TestBench --testbench intrapred | grep intra_allangs4x4<br>>intra_allangs4x4       9.89x       6434.99          63671.87<br>><br>>32-bit<br>><br>>./test/TestBench --testbench intrapred | grep intra_allangs4x4<br>>intra_allangs4x4       13.38x      6497.50          86943.55<br>><br>>diff -r 4cccf22b00ee -r f241399b3494 source/common/x86/asm-primitives.cpp<br>>--- a/source/common/x86/asm-primitives.cpp       Fri Apr 10 18:15:38 2015 -0500<br>>+++ b/source/common/x86/asm-primitives.cpp    Mon Apr 13 14:13:19 2015 -0700<br>>@@ -1259,6 +1259,8 @@<br>>         p.cu[BLOCK_4x4].intra_pred[32] = x265_intra_pred_ang4_4_sse2;<br>>         p.cu[BLOCK_4x4].intra_pred[33] = x265_intra_pred_ang4_3_sse2;<br>> <br>>+        p.cu[BLOCK_4x4].intra_pred_allangs = x265_all_angs_pred_4x4_sse2;<br>>+<br>>         p.cu[BLOCK_4x4].calcresidual = x265_getResidual4_sse2;<br>>         p.cu[BLOCK_8x8].calcresidual = x265_getResidual8_sse2;<br>> <br>>diff -r 4cccf22b00ee -r f241399b3494 source/common/x86/const-a.asm<br>>--- a/source/common/x86/const-a.asm Fri Apr 10 18:15:38 2015 -0500<br>>+++ b/source/common/x86/const-a.asm   Mon Apr 13 14:13:19 2015 -0700<br>>@@ -53,6 +53,10 @@<br>> const pb_shuf8x8c,          times  1 db   0,   0,   0,   0,   2,   2,   2,   2,   4,   4,   4,   4,   6,   6,   6,   6<br>> const pb_movemask,          times 16 db 0x00<br>>                             times 16 db 0xFF<br>>+const pb_0000000000000F0F,  times  2 db 0xff, 0x00<br>>+                            times 12 db 0x00<br>>+const pb_000000000000000F,           db 0xff<br>>+                            times 15 db 0x00<br>> <br>> ;; 16-bit constants<br>> <br>>@@ -94,6 +98,8 @@<br>> const multiH2,              times  1 dw  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32<br>> const pw_planar16_mul,      times  1 dw  15,  14,  13,  12,  11,  10,   9,   8,   7,   6,   5,   4,   3,   2,   1,   0<br>> const pw_planar32_mul,      times  1 dw  31,  30,  29,  28,  27,  26,  25,  24,  23,  22,  21,  20,  19,  18,  17,  16<br>>+const pw_FFFFFFFFFFFFFFF0,           dw 0x00<br>>+                            times 7  dw 0xff<br>> <br>> <br>> ;; 32-bit constants<br>>diff -r 4cccf22b00ee -r f241399b3494 source/common/x86/intrapred.h<br>>--- a/source/common/x86/intrapred.h    Fri Apr 10 18:15:38 2015 -0500<br>>+++ b/source/common/x86/intrapred.h   Mon Apr 13 14:13:19 2015 -0700<br>>@@ -277,6 +277,7 @@<br>> void x265_intra_pred_ang32_23_avx2(pixel* dst, intptr_t dstStride, const pixel* srcPix, int dirMode, int bFilter);<br>> void x265_intra_pred_ang32_22_avx2(pixel* dst, intptr_t dstStride, const pixel* srcPix, int dirMode, int bFilter);<br>> void x265_intra_pred_ang32_21_avx2(pixel* dst, intptr_t dstStride, const pixel* srcPix, int dirMode, int bFilter);<br>>+void x265_all_angs_pred_4x4_sse2(pixel *dest, pixel *refPix, pixel *filtPix, int bLuma);<br>> void x265_all_angs_pred_4x4_sse4(pixel *dest, pixel *refPix, pixel *filtPix, int bLuma);<br>> void x265_all_angs_pred_8x8_sse4(pixel *dest, pixel *refPix, pixel *filtPix, int bLuma);<br>> void x265_all_angs_pred_16x16_sse4(pixel *dest, pixel *refPix, pixel *filtPix, int bLuma);<br>>diff -r 4cccf22b00ee -r f241399b3494 source/common/x86/intrapred8_allangs.asm<br>>--- a/source/common/x86/intrapred8_allangs.asm        Fri Apr 10 18:15:38 2015 -0500<br>>+++ b/source/common/x86/intrapred8_allangs.asm        Mon Apr 13 14:13:19 2015 -0700<br>>@@ -34,9 +34,14 @@<br>> <br>> ; common constant with intrapred8.asm<br>> cextern ang_table<br>>+cextern pw_ang_table<br>> cextern tab_S1<br>> cextern tab_S2<br>> cextern tab_Si<br>>+cextern pw_16<br>>+cextern pb_000000000000000F<br>>+cextern pb_0000000000000F0F<br>>+cextern pw_FFFFFFFFFFFFFFF0<br>> <br>> <br>> ;-----------------------------------------------------------------------------<br>>@@ -23006,3 +23011,780 @@<br>>     palignr    m4,              m2,       m1,    14<br>>     movu       [r0 + 2111 * 16],   m4<br>>     RET<br>>+<br>>+;-----------------------------------------------------------------------------<br>>+; void all_angs_pred_4x4(pixel *dest, pixel *refPix, pixel *filtPix, int bLuma)<br>>+;-----------------------------------------------------------------------------<br>>+INIT_XMM sse2<br>>+cglobal all_angs_pred_4x4, 4, 4, 8<br>>+<br>>+; mode 2<br>>+<br>>+    movh        m6,             [r1 + 9]<br>>+    mova        m2,             m6<br>>+    psrldq      m2,             1<br>>+    movd        [r0],           m2              ;byte[A, B, C, D]<br>>+    psrldq      m2,             1<br>>+    movd        [r0 + 4],       m2              ;byte[B, C, D, E]<br>>+    psrldq      m2,             1<br>>+    movd        [r0 + 8],       m2              ;byte[C, D, E, F]<br>>+    psrldq      m2,             1<br>>+    movd        [r0 + 12],      m2              ;byte[D, E, F, G]<br>>+<br>>+; mode 10/26<br>>+<br>>+    pxor        m7,             m7<br>>+    pshufd      m5,             m6,        0<br>>+    mova        [r0 + 128],     m5              ;mode 10 byte[9, A, B, C, 9, A, B, C, 9, A, B, C, 9, A, B, C]<br>>+<br>>+    movd        m4,             [r1 + 1]<br>>+    pshufd      m4,             m4,        0<br>>+    mova        [r0 + 384],     m4              ;mode 26 byte[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]<br>>+<br>>+    movd        m1,             [r1]<br>>+    punpcklbw   m1,             m7<br>>+    pshuflw     m1,             m1,     0x00<br>>+    punpcklqdq  m1,             m1              ;m1 = byte[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]<br>>+<br>>+    punpckldq   m4,             m5<br>>+    punpcklbw   m4,             m7              ;m4 = word[1, 2, 3, 4, 9, A, B, C]<br>>+    pshuflw     m2,             m4,     0x00<br>>+    pshufhw     m2,             m2,     0x00    ;m2 = word[1, 1, 1, 1, 9, 9, 9, 9]<br>>+<br>>+    psubw       m4,             m1<br>>+    psraw       m4,             1<br>>+<br>>+    pshufd      m2,             m2,     q1032   ;m2 = word[9, 9, 9, 9, 1, 1, 1, 1]<br>>+    paddw       m4,             m2<br>>+    packuswb    m4,             m4<br>>+<br>>+%if ARCH_X86_64<br>>+    movq        r2,             m4<br>>+<br>>+    mov         [r0 + 128],     r2b              ;mode 10<br>>+    shr         r2,             8<br>>+    mov         [r0 + 132],     r2b<br>>+    shr         r2,             8<br>>+    mov         [r0 + 136],     r2b<br>>+    shr         r2,             8<br>>+    mov         [r0 + 140],     r2b<br>>+    shr         r2,             8<br>>+    mov         [r0 + 384],     r2b              ;mode 26<br>>+    shr         r2d,            8<br>>+    mov         [r0 + 388],     r2b<br>>+    shr         r2d,            8<br>>+    mov         [r0 + 392],     r2b<br>>+    shr         r2d,            8<br>>+    mov         [r0 + 396],     r2b<br>>+<br>>+%else<br>>+    movd        r2d,             m4<br>>+<br>>+    mov         [r0 + 128],     r2b              ;mode 10<br>>+    shr         r2d,             8<br>>+    mov         [r0 + 132],     r2b<br>>+    shr         r2d,             8<br>>+    mov         [r0 + 136],     r2b<br>>+    shr         r2d,             8<br>>+    mov         [r0 + 140],     r2b<br>>+<br>>+    psrldq      m4,             4<br>>+    movd        r2d,            m4<br>>+<br>>+    mov         [r0 + 384],     r2b              ;mode 26<br>>+    shr         r2d,            8<br>>+    mov         [r0 + 388],     r2b<br>>+    shr         r2d,            8<br>>+    mov         [r0 + 392],     r2b<br>>+    shr         r2d,            8<br>>+    mov         [r0 + 396],     r2b<br>>+%endif<br>>+<br>>+; mode 3<br>>+<br>>+    mova        m2,             [pw_16]<br>>+    lea         r3,             [pw_ang_table + 7 * 16]<br>>+    lea         r2,             [pw_ang_table + 23 * 16]<br>>+    punpcklbw   m6,             m6<br>>+    psrldq      m6,             1<br>>+    movh        m1,             m6<br>>+    psrldq      m6,             2<br>>+    movh        m0,             m6<br>>+    psrldq      m6,             2<br>>+    movh        m3,             m6<br>>+    psrldq      m6,             2<br>>+    punpcklbw   m1,             m7              ;m1 = word[9, A, A, B, B, C, C, D]<br>>+    punpcklbw   m0,             m7              ;m0 = word[A, B, B, C, C, D, D, E]<br>>+    punpcklbw   m3,             m7              ;m3 = word[B, C, C, D, D, E, E, F]<br>>+    punpcklbw   m6,             m7              ;m6 = word[C, D, D, E, E, F, F, G]<br>>+<br>>+    mova        m7,             [r2 - 3 * 16]<br>>+<br>>+    pmaddwd     m5,             m1,     [r2 + 3 * 16]<br>>+    pmaddwd     m4,             m0,     m7<br>>+<br>>+    packssdw    m5,             m4<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    pmaddwd     m4,             m3,     [r3 + 7 * 16]<br>>+    pmaddwd     m6,             [r3 + 1 * 16]<br>>+<br>>+    packssdw    m4,             m6<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m5,             m4<br>>+    mova        [r0 + 16],      m5<br>>+    movd        [r0 + 68],      m5              ;mode 6 row 1<br>>+    psrldq      m5,             4<br>>+    movd        [r0 + 76],      m5              ;mode 6 row 3<br>>+<br>>+; mode 4<br>>+<br>>+    pmaddwd     m4,             m0,     [r2 + 8 * 16]<br>>+    pmaddwd     m6,             m3,     m7<br>>+<br>>+    packssdw    m4,             m6<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    pmaddwd     m5,             m1,     [r2 - 2 * 16]<br>>+    pmaddwd     m6,             m0,     [r3 + 3 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    packuswb    m5,             m4<br>>+    mova        [r0 + 32],      m5<br>>+<br>>+; mode 5<br>>+<br>>+    pmaddwd     m5,             m1,     [r2 - 6 * 16]<br>>+    pmaddwd     m6,             m0,     [r3 - 5 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    pmaddwd     m4,             m0,     [r2 - 4 * 16]<br>>+    pmaddwd     m3,             [r3 - 3 * 16]<br>>+<br>>+    packssdw    m4,             m3<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m5,             m4<br>>+    mova        [r0 + 48],      m5<br>>+<br>>+; mode 6<br>>+<br>>+    pmaddwd     m5,             m1,     [r3 + 6 * 16]<br>>+    pmaddwd     m6,             m0,     [r3 + 0 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    packuswb    m5,             m6<br>>+    movd        [r0 + 64],      m5<br>>+    psrldq      m5,             4<br>>+    movd        [r0 + 72],      m5<br>>+<br>>+; mode 7<br>>+<br>>+    pmaddwd     m5,             m1,     [r3 + 2 * 16]<br>>+    pmaddwd     m6,             m1,     [r2 - 5 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    mova        m3,             [r2 + 4 * 16]<br>>+    pmaddwd     m4,             m1,     m3<br>>+    pmaddwd     m0,             [r3 - 3 * 16]<br>>+<br>>+    packssdw    m4,             m0<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m5,             m4<br>>+    mova        [r0 + 80],      m5<br>>+<br>>+; mode 8<br>>+<br>>+    mova        m0,             [r3 - 2 * 16]<br>>+    pmaddwd     m5,             m1,     m0<br>>+    pmaddwd     m6,             m1,     [r3 + 3 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    pmaddwd     m4,             m1,     [r3 + 8 * 16]<br>>+    pmaddwd     m7,             m1<br>>+<br>>+    packssdw    m4,             m7<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m5,             m4<br>>+    mova        [r0 + 96],      m5<br>>+<br>>+; mode 9<br>>+<br>>+    pmaddwd     m5,             m1,     [r3 - 5 * 16]<br>>+    pmaddwd     m6,             m1,     [r3 - 3 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    pmaddwd     m4,             m1,     [r3 - 1 * 16]<br>>+    pmaddwd     m6,             m1,     [r3 + 1 * 16]<br>>+<br>>+    packssdw    m4,             m6<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m5,             m4<br>>+    mova        [r0 + 112],     m5<br>>+<br>>+; mode 11<br>>+<br>>+    movd        m5,             [r1]<br>>+    punpcklwd   m5,             m1<br>>+    pand        m5,             [pb_0000000000000F0F]<br>>+    pslldq      m1,             4<br>>+    por         m1,             m5              ;m1 = word[0, 9, 9, A, A, B, B, C]<br>>+<br>>+    pmaddwd     m5,             m1,     [r2 + 7 * 16]<br>>+    pmaddwd     m6,             m1,     [r2 + 5 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    pmaddwd     m4,             m1,     [r2 + 3 * 16]<br>>+    pmaddwd     m6,             m1,     [r2 + 1 * 16]<br>>+<br>>+    packssdw    m4,             m6<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m5,             m4<br>>+    mova        [r0 + 144],     m5<br>>+<br>>+; mode 12<br>>+<br>>+    pmaddwd     m3,             m1<br>>+    pmaddwd     m6,             m1,     [r2 - 1 * 16]<br>>+<br>>+    packssdw    m3,             m6<br>>+    paddw       m3,             m2<br>>+    psraw       m3,             5<br>>+<br>>+    pmaddwd     m4,             m1,     [r2 - 6 * 16]<br>>+    pmaddwd     m6,             m1,     [r3 + 5 * 16]<br>>+<br>>+    packssdw    m4,             m6<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m3,             m4<br>>+    mova        [r0 + 160],     m3<br>>+<br>>+; mode 13<br>>+<br>>+    mova        m3,             m1<br>>+    movd        m7,             [r1 + 4]<br>>+    punpcklwd   m7,             m1<br>>+    pand        m7,             [pb_0000000000000F0F]<br>>+    pslldq      m3,             4<br>>+    por         m3,             m7              ;m3 = word[4, 0, 0, 9, 9, A, A, B]<br>>+<br>>+    pmaddwd     m5,             m1,     [r2 + 0 * 16]<br>>+    pmaddwd     m6,             m1,     [r3 + 7 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    pmaddwd     m4,             m1,     m0<br>>+    pmaddwd     m6,             m3,     [r2 + 5 * 16]<br>>+<br>>+    packssdw    m4,             m6<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m5,             m4<br>>+    mova        [r0 + 176],     m5<br>>+<br>>+; mode 14<br>>+<br>>+    pmaddwd     m5,             m1,     [r2 - 4 * 16]<br>>+    pmaddwd     m6,             m1,     [r3 - 1 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    movd        m6,             [r1 + 2]<br>>+    pand        m3,             [pw_FFFFFFFFFFFFFFF0]<br>>+    pand        m6,             [pb_000000000000000F]<br>>+    por         m3,             m6              ;m3 = word[2, 0, 0, 9, 9, A, A, B]<br>>+<br>>+    pmaddwd     m4,             m3,     [r2 + 2 * 16]<br>>+    pmaddwd     m6,             m3,     [r3 + 5 * 16]<br>>+<br>>+    packssdw    m4,             m6<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m5,             m4<br>>+    mova        [r0 + 192],     m5<br>>+    psrldq      m5,             4<br>>+    movd        [r0 + 240],     m5              ;mode 17 row 0<br>>+<br>>+; mode 15<br>>+<br>>+    pmaddwd     m5,             m1,     [r3 + 8 * 16]<br>>+    pmaddwd     m6,             m3,     [r2 + 7 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    pmaddwd     m6,             m3,     [r3 + 6 * 16]<br>>+<br>>+    mova        m0,             m3<br>>+    punpcklwd   m7,             m3<br>>+    pslldq      m0,             4<br>>+    pand        m7,             [pb_0000000000000F0F]<br>>+    por         m0,             m7              ;m0 = word[4, 2, 2, 0, 0, 9, 9, A]<br>>+<br>>+    pmaddwd     m4,             m0,     [r2 + 5 * 16]<br>>+<br>>+    packssdw    m6,             m4<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    packuswb    m5,             m6<br>>+    mova        [r0 + 208],     m5<br>>+<br>>+; mode 16<br>>+<br>>+    pmaddwd     m5,             m1,     [r3 + 4 * 16]<br>>+    pmaddwd     m6,             m3,     [r2 - 1 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    pmaddwd     m3,             [r3 - 6 * 16]<br>>+<br>>+    movd        m6,             [r1 + 3]<br>>+    pand        m0,             [pw_FFFFFFFFFFFFFFF0]<br>>+    pand        m6,             [pb_000000000000000F]<br>>+    por         m0,             m6              ;m0 = word[3, 2, 2, 0, 0, 9, 9, A]<br>>+<br>>+    pmaddwd     m0,             [r3 + 5 * 16]<br>>+    packssdw    m3,             m0<br>>+    paddw       m3,             m2<br>>+    psraw       m3,             5<br>>+<br>>+    packuswb    m5,             m3<br>>+    mova        [r0 + 224],     m5<br>>+<br>>+; mode 17<br>>+<br>>+    movd        m4,             [r1 + 1]<br>>+    punpcklwd   m4,             m1<br>>+    pand        m4,             [pb_0000000000000F0F]<br>>+    pslldq      m1,             4<br>>+    por         m1,             m4              ;m1 = word[1, 0, 0, 9, 9, A, A, B]<br>>+<br>>+    pmaddwd     m6,             m1,     [r3 + 5 * 16]<br>>+<br>>+    packssdw    m6,             m6<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    movd        m5,             [r1 + 2]<br>>+    punpcklwd   m5,             m1<br>>+    pand        m5,             [pb_0000000000000F0F]<br>>+    pslldq      m1,             4<br>>+    por         m1,             m5              ;m1 = word[2, 1, 1, 0, 0, 9, 9, A]<br>>+<br>>+    pmaddwd     m4,             m1,     [r2 - 5 * 16]<br>>+<br>>+    punpcklwd   m7,             m1<br>>+    pand        m7,             [pb_0000000000000F0F]<br>>+    pslldq      m1,             4<br>>+    por         m1,             m7              ;m1 = word[4, 2, 2, 1, 1, 0, 0, 9]<br>>+<br>>+    pmaddwd     m1,             [r2 + 1 * 16]<br>>+    packssdw    m4,             m1<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m6,             m4<br>>+    movd        [r0 + 244],     m6<br>>+    psrldq      m6,             8<br>>+    movh        [r0 + 248],     m6<br>>+<br>>+; mode 18<br>>+<br>>+    movh        m1,             [r1]<br>>+    movd        [r0 + 256],     m1              ;byte[0, 1, 2, 3]<br>>+<br>>+    movh        m3,             [r1 + 2]<br>>+    punpcklqdq  m3,             m1<br>>+    psrldq      m3,             7<br>>+    movd        [r0 + 260],     m3              ;byte[2, 1, 0, 9]<br>>+<br>>+    movh        m4,             [r1 + 3]<br>>+    punpcklqdq  m4,             m3<br>>+    psrldq      m4,             7<br>>+    movd        [r0 + 264],     m4              ;byte[1, 0, 9, A]<br>>+<br>>+    movh        m0,             [r1 + 4]<br>>+    punpcklqdq  m0,             m4<br>>+    psrldq      m0,             7<br>>+    movd        [r0 + 268],     m0              ;byte[0, 9, A, B]<br>>+<br>>+; mode 19<br>>+<br>>+    pxor        m7,             m7<br>>+    punpcklbw   m4,             m3<br>>+    punpcklbw   m3,             m1<br>>+    punpcklbw   m1,             m1<br>>+    punpcklbw   m4,             m7              ;m4 = word[A, 9, 9, 0, 0, 1, 1, 2]<br>>+    punpcklbw   m3,             m7              ;m3 = word[9, 0, 0, 1, 1, 2, 2, 3]<br>>+    psrldq      m1,             1<br>>+    punpcklbw   m1,             m7              ;m1 = word[0, 1, 1, 2, 2, 3, 3, 4]<br>>+<br>>+    pmaddwd     m6,             m1,     [r3 - 1 * 16]<br>>+    pmaddwd     m7,             m3,     [r3 + 5 * 16]<br>>+<br>>+    packssdw    m6,             m7<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    pmaddwd     m5,             m4,     [r2 - 5 * 16]<br>>+<br>>+    movd        m7,             [r1 + 12]<br>>+    punpcklwd   m7,             m4<br>>+    pand        m7,             [pb_0000000000000F0F]<br>>+    pslldq      m4,             4<br>>+    por         m4,             m7              ;m4 = word[C, A, A, 9, 9, 0, 0, 1]<br>>+<br>>+    pmaddwd     m4,             [r2 + 1 * 16]<br>>+    packssdw    m5,             m4<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    packuswb    m6,             m5<br>>+    mova        [r0 + 272],     m6<br>>+    movd        [r0 + 324],     m6              ;mode 22 row 1<br>>+<br>>+; mode 20<br>>+<br>>+    pmaddwd     m5,             m1,     [r3 + 4 * 16]<br>>+<br>>+    movd        m4,             [r1 + 10]<br>>+    pand        m3,             [pw_FFFFFFFFFFFFFFF0]<br>>+    pand        m4,             [pb_000000000000000F]<br>>+    por         m3,             m4              ;m3 = word[A, 0, 0, 1, 1, 2, 2, 3]<br>>+<br>>+    pmaddwd     m6,             m3,     [r2 - 1 * 16]<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    pmaddwd     m4,             m3,     [r3 - 6 * 16]<br>>+<br>>+    punpcklwd   m0,             m3<br>>+    pand        m0,             [pb_0000000000000F0F]<br>>+    mova        m6,             m3<br>>+    pslldq      m6,             4<br>>+    por         m0,             m6              ;m0 = word[B, A, A, 0, 0, 1, 1, 2]<br>>+<br>>+    pmaddwd     m6,             m0,     [r3 + 5 * 16]<br>>+<br>>+    packssdw    m4,             m6<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    packuswb    m5,             m4<br>>+    mova        [r0 + 288],     m5<br>>+<br>>+; mode 21<br>>+<br>>+    pmaddwd     m4,             m1,     [r3 + 8 * 16]<br>>+    pmaddwd     m6,             m3,     [r2 + 7 * 16]<br>>+<br>>+    packssdw    m4,             m6<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    pmaddwd     m5,             m3,     [r3 + 6 * 16]<br>>+<br>>+    pand        m0,             [pw_FFFFFFFFFFFFFFF0]<br>>+    pand        m7,             [pb_000000000000000F]<br>>+    por         m0,             m7              ;m0 = word[C, A, A, 0, 0, 1, 1, 2]<br>>+<br>>+    pmaddwd     m0,             [r2 + 5 * 16]<br>>+    packssdw    m5,             m0<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    packuswb    m4,             m5<br>>+    mova        [r0 + 304],     m4<br>>+<br>>+; mode 22<br>>+<br>>+    pmaddwd     m4,             m1,     [r2 - 4 * 16]<br>>+    packssdw    m4,             m4<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    mova        m0,             [r3 + 5 * 16]<br>>+    pmaddwd     m5,             m3,     [r2 + 2 * 16]<br>>+    pmaddwd     m6,             m3,     m0<br>>+<br>>+    packssdw    m5,             m6<br>>+    paddw       m5,             m2<br>>+    psraw       m5,             5<br>>+<br>>+    packuswb    m4,             m5<br>>+    movd        [r0 + 320],     m4<br>>+    psrldq      m4,             8<br>>+    movh        [r0 + 328],     m4<br>>+<br>>+; mode 23<br>>+<br>>+    pmaddwd     m4,             m1,     [r2 + 0 * 16]<br>>+    pmaddwd     m5,             m1,     [r3 + 7 * 16]<br>>+<br>>+    packssdw    m4,             m5<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    pmaddwd     m6,             m1,     [r3 - 2 * 16]<br>>+<br>>+    pand        m3,             [pw_FFFFFFFFFFFFFFF0]<br>>+    por         m3,             m7              ;m3 = word[C, 0, 0, 1, 1, 2, 2, 3]<br>>+<br>>+    pmaddwd     m3,             [r2 + 5 * 16]<br>>+    packssdw    m6,             m3<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    packuswb    m4,             m6<br>>+    mova        [r0 + 336],     m4<br>>+<br>>+; mode 24<br>>+<br>>+    pmaddwd     m4,             m1,     [r2 + 4 * 16]<br>>+    pmaddwd     m5,             m1,     [r2 - 1 * 16]<br>>+<br>>+    packssdw    m4,             m5<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    pmaddwd     m6,             m1,     [r2 - 6 * 16]<br>>+    pmaddwd     m0,             m1<br>>+<br>>+    packssdw    m6,             m0<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    packuswb    m4,             m6<br>>+    mova        [r0 + 352],     m4<br>>+<br>>+; mode 25<br>>+<br>>+    pmaddwd     m4,             m1,     [r2 + 7 * 16]<br>>+    pmaddwd     m5,             m1,     [r2 + 5 * 16]<br>>+<br>>+    packssdw    m4,             m5<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    pmaddwd     m6,             m1,     [r2 + 3 * 16]<br>>+    pmaddwd     m1,             [r2 + 1 * 16]<br>>+<br>>+    packssdw    m6,             m1<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    packuswb    m4,             m6<br>>+    mova        [r0 + 368],     m4<br>>+<br>>+; mode 27<br>>+<br>>+    movh        m0,             [r1 + 1]<br>>+    pxor        m7,             m7<br>>+    punpcklbw   m0,             m0<br>>+    psrldq      m0,             1<br>>+    movh        m1,             m0<br>>+    psrldq      m0,             2<br>>+    movh        m3,             m0<br>>+    psrldq      m0,             2<br>>+    punpcklbw   m1,             m7              ;m1 = word[1, 2, 2, 3, 3, 4, 4, 5]<br>>+    punpcklbw   m3,             m7              ;m3 = word[2, 3, 3, 4, 4, 5, 5, 6]<br>>+    punpcklbw   m0,             m7              ;m0 = word[3, 4, 4, 5, 5, 6, 6, 7]<br>>+<br>>+    mova        m7,             [r3 - 3 * 16]<br>>+<br>>+    pmaddwd     m4,             m1,     [r3 - 5 * 16]<br>>+    pmaddwd     m5,             m1,     m7<br>>+<br>>+    packssdw    m4,             m5<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    pmaddwd     m6,             m1,     [r3 - 1 * 16]<br>>+    pmaddwd     m5,             m1,     [r3 + 1 * 16]<br>>+<br>>+    packssdw    m6,             m5<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    packuswb    m4,             m6<br>>+    mova        [r0 + 400],     m4<br>>+<br>>+; mode 28<br>>+<br>>+    pmaddwd     m4,             m1,     [r3 - 2 * 16]<br>>+    pmaddwd     m5,             m1,     [r3 + 3 * 16]<br>>+<br>>+    packssdw    m4,             m5<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    pmaddwd     m6,             m1,     [r3 + 8 * 16]<br>>+    pmaddwd     m5,             m1,     [r2 - 3 * 16]<br>>+<br>>+    packssdw    m6,             m5<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    packuswb    m4,             m6<br>>+    mova        [r0 + 416],     m4<br>>+<br>>+; mode 29<br>>+<br>>+    pmaddwd     m4,             m1,     [r3 + 2 * 16]<br>>+    pmaddwd     m6,             m1,     [r2 - 5 * 16]<br>>+<br>>+    packssdw    m4,             m6<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    pmaddwd     m6,             m1,     [r2 + 4 * 16]<br>>+    pmaddwd     m5,             m3,     m7<br>>+<br>>+    packssdw    m6,             m5<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    packuswb    m4,             m6<br>>+    mova        [r0 + 432],     m4<br>>+<br>>+; mode 30<br>>+<br>>+    pmaddwd     m4,             m1,     [r3 + 6 * 16]<br>>+    pmaddwd     m5,             m1,     [r2 + 3 * 16]<br>>+<br>>+    packssdw    m4,             m5<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    pmaddwd     m6,             m3,     [r3 + 0 * 16]<br>>+    pmaddwd     m5,             m3,     [r2 - 3 * 16]<br>>+<br>>+    packssdw    m6,             m5<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    packuswb    m4,             m6<br>>+    mova        [r0 + 448],     m4<br>>+    psrldq      m4,             4<br>>+    movh        [r0 + 496],     m4              ;mode 33 row 0<br>>+    psrldq      m4,             8<br>>+    movd        [r0 + 500],     m4              ;mode 33 row 1<br>>+<br>>+; mode 31<br>>+<br>>+    pmaddwd     m4,             m1,     [r2 - 6 * 16]<br>>+    pmaddwd     m5,             m3,     [r3 - 5 * 16]<br>>+<br>>+    packssdw    m4,             m5<br>>+    paddw       m4,             m2<br>>+    psraw       m4,             5<br>>+<br>>+    pmaddwd     m6,             m3,     [r2 - 4 * 16]<br>>+    pmaddwd     m7,             m0<br>>+<br>>+    packssdw    m6,             m7<br>>+    paddw       m6,             m2<br>>+    psraw       m6,             5<br>>+<br>>+    packuswb    m4,             m6<br>>+    mova        [r0 + 464],     m4<br>>+<br>>+; mode 32<br>>+<br>>+    pmaddwd     m1,             [r2 - 2 * 16]<br>>+    pmaddwd     m5,             m3,     [r3 + 3 * 16]<br>>+<br>>+    packssdw    m1,             m5<br>>+    paddw       m1,             m2<br>>+    psraw       m1,             5<br>>+<br>>+    pmaddwd     m3,             [r2 + 8 * 16]<br>>+    pmaddwd     m5,             m0,     [r2 - 3 * 16]<br>>+    packssdw    m3,             m5<br>>+    paddw       m3,             m2<br>>+    psraw       m3,             5<br>>+<br>>+    packuswb    m1,             m3<br>>+    mova        [r0 + 480],     m1<br>>+<br>>+; mode 33<br>>+<br>>+    pmaddwd     m0,             [r3 + 7 * 16]<br>>+    pxor        m7,             m7<br>>+    movh        m4,             [r1 + 4]<br>>+    punpcklbw   m4,             m4<br>>+    psrldq      m4,             1<br>>+    punpcklbw   m4,             m7<br>>+<br>>+    pmaddwd     m4,             [r3 + 1 * 16]<br>>+<br>>+    packssdw    m0,             m4<br>>+    paddw       m0,             m2<br>>+    psraw       m0,             5<br>>+<br>>+    packuswb    m0,             m0<br>>+    movh        [r0 + 504],     m0<br>>+<br>>+; mode 34<br>>+<br>>+    movh        m7,             [r1 + 2]<br>>+    movd        [r0 + 512],     m7              ;byte[2, 3, 4, 5]<br>>+<br>>+    psrldq      m7,             1<br>>+    movd        [r0 + 516],     m7              ;byte[3, 4, 5, 6]<br>>+<br>>+    psrldq      m7,             1<br>>+    movd        [r0 + 520],     m7              ;byte[4, 5, 6, 7]<br>>+<br>>+    psrldq      m7,             1<br>>+    movd        [r0 + 524],     m7              ;byte[5, 6, 7, 8]<br>>+<br>>+RET<br>>_______________________________________________<br>>x265-devel mailing list<br>>x265-devel@videolan.org<br>>https://mailman.videolan.org/listinfo/x265-devel<br></div></div>