# HG changeset patch # User Praveen Tiwari # Date 1422870559 -19800 # Branch stable # Node ID 1501aa0e5bd97ab157f39ff86dc6451899bf9cb2 # Parent 2618352a21d5917ee8c1f79bcc159e858dd19daa blockfill_s_16x16 sse2 asm code optimization
eliminated branch instructions and optimized LEA instruction diff -r 2618352a21d5 -r 1501aa0e5bd9 source/common/x86/blockcopy8.asm --- a/source/common/x86/blockcopy8.asm Mon Feb 02 14:24:09 2015 +0530 +++ b/source/common/x86/blockcopy8.asm Mon Feb 02 15:19:19 2015 +0530 @@ -1771,57 +1771,58 @@ RET ;----------------------------------------------------------------------------- -; void blockfill_s_%1x%2(int16_t* dst, intptr_t dstride, int16_t val) +; void blockfill_s_16x16(int16_t* dst, intptr_t dstride, int16_t val) ;----------------------------------------------------------------------------- -%macro BLOCKFILL_S_W16_H8 2 INIT_XMM sse2 -cglobal blockfill_s_%1x%2, 3, 5, 1, dst, dstStride, val - -mov r3d, %2/8 +cglobal blockfill_s_16x16, 3, 4, 1, dst, dstStride, val add r1, r1 +lea r3, [3 * r1] movd m0, r2d -pshuflw m0, m0, 0 -pshufd m0, m0, 0 - -.loop: - movu [r0], m0 - movu [r0 + 16], m0 - - movu [r0 + r1], m0 - movu [r0 + r1 + 16], m0 - - movu [r0 + 2 * r1], m0 - movu [r0 + 2 * r1 + 16], m0 - - lea r4, [r0 + 2 * r1] - movu [r4 + r1], m0 - movu [r4 + r1 + 16], m0 - - movu [r0 + 4 * r1], m0 - movu [r0 + 4 * r1 + 16], m0 - - lea r4, [r0 + 4 * r1] - movu [r4 + r1], m0 - movu [r4 + r1 + 16], m0 - - movu [r4 + 2 * r1], m0 - movu [r4 + 2 * r1 + 16], m0 - - lea r4, [r4 + 2 * r1] - movu [r4 + r1], m0 - movu [r4 + r1 + 16], m0 - - lea r0, [r0 + 8 * r1] - - dec r3d - jnz .loop - +pshuflw m0, m0, 0 +pshufd m0, m0, 0 + +movu [r0], m0 +movu [r0 + 16], m0 +movu [r0 + r1], m0 +movu [r0 + r1 + 16], m0 +movu [r0 + 2 * r1], m0 +movu [r0 + 2 * r1 + 16], m0 + +movu [r0 + r3], m0 +movu [r0 + r3 + 16], m0 +movu [r0 + 4 * r1], m0 +movu [r0 + 4 * r1 + 16], m0 + +lea r0, [r0 + 4 * r1] +movu [r0 + r1], m0 +movu [r0 + r1 + 16], m0 +movu [r0 + 2 * r1], m0 +movu [r0 + 2 * r1 + 16], m0 +movu [r0 + r3], m0 +movu [r0 + r3 + 16], m0 +movu [r0 + 4 * r1], m0 +movu [r0 + 4 * r1 + 16], m0 + +lea r0, [r0 + 4 * r1] +movu [r0 + r1], m0 +movu [r0 + r1 + 16], m0 +movu [r0 + 2 * r1], m0 +movu [r0 + 2 * r1 + 16], m0 +movu [r0 + r3], m0 +movu [r0 + r3 + 16], m0 +movu [r0 + 4 * r1], m0 +movu [r0 + 4 * r1 + 16], m0 + +lea r0, [r0 + 4 * r1] +movu [r0 + r1], m0 +movu [r0 + r1 + 16], m0 +movu [r0 + 2 * r1], m0 +movu [r0 + 2 * r1 + 16], m0 +movu [r0 + r3], m0 +movu [r0 + r3 + 16], m0 RET -%endmacro - -BLOCKFILL_S_W16_H8 16, 16 INIT_YMM avx2 cglobal blockfill_s_16x16, 3, 4, 1 _______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
