[x265] [PATCH] blockfill_s_16x16 sse2 asm code optimization
praveen at multicorewareinc.com
praveen at multicorewareinc.com
Mon Feb 2 10:50:05 CET 2015
# 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
More information about the x265-devel
mailing list