[x265] [PATCH] asm: avx2 code for intra_ang_16 mode 15, improved over 60% than SSE asm
rajesh at multicorewareinc.com
rajesh at multicorewareinc.com
Fri Aug 21 14:48:17 CEST 2015
# HG changeset patch
# User Rajesh Paulraj<rajesh at multicorewareinc.com>
# Date 1440160356 -19800
# Fri Aug 21 18:02:36 2015 +0530
# Node ID 61ff378a924c6b6c70fc180a2d02d67c535435a4
# Parent 6e8a47ea76867245443b51651f77945b3e1e2cae
asm: avx2 code for intra_ang_16 mode 15, improved over 60% than SSE asm
diff -r 6e8a47ea7686 -r 61ff378a924c source/common/x86/asm-primitives.cpp
--- a/source/common/x86/asm-primitives.cpp Fri Aug 21 17:50:42 2015 +0530
+++ b/source/common/x86/asm-primitives.cpp Fri Aug 21 18:02:36 2015 +0530
@@ -3036,6 +3036,7 @@
p.cu[BLOCK_16x16].intra_pred[11] = PFX(intra_pred_ang16_11_avx2);
p.cu[BLOCK_16x16].intra_pred[13] = PFX(intra_pred_ang16_13_avx2);
p.cu[BLOCK_16x16].intra_pred[14] = PFX(intra_pred_ang16_14_avx2);
+ p.cu[BLOCK_16x16].intra_pred[15] = PFX(intra_pred_ang16_15_avx2);
p.cu[BLOCK_16x16].intra_pred[25] = PFX(intra_pred_ang16_25_avx2);
p.cu[BLOCK_16x16].intra_pred[28] = PFX(intra_pred_ang16_28_avx2);
p.cu[BLOCK_16x16].intra_pred[27] = PFX(intra_pred_ang16_27_avx2);
diff -r 6e8a47ea7686 -r 61ff378a924c source/common/x86/intrapred8.asm
--- a/source/common/x86/intrapred8.asm Fri Aug 21 17:50:42 2015 +0530
+++ b/source/common/x86/intrapred8.asm Fri Aug 21 18:02:36 2015 +0530
@@ -486,6 +486,13 @@
const angHor_tab_14, db (32-19), 19, (32-6), 6, (32-25), 25, (32-12), 12, (32-31), 31, (32-18), 18, (32-5), 5, (32-24), 24
db (32-11), 11, (32-30), 30, (32-17), 17, (32-4), 4, (32-23), 23, (32-10), 10, (32-29), 29, (32-16), 16
+const ang16_shuf_mode15, db 8, 9, 7, 8, 7, 8, 6, 7, 6, 7, 5, 6, 5, 6, 4, 5, 9, 10, 8, 9, 8, 9, 7, 8, 7, 8, 6, 7, 6, 7, 5, 6
+ db 4, 5, 3, 4, 3, 4, 2, 3, 2, 3, 1, 2, 1, 2, 0, 1, 5, 6, 4, 5, 4, 5, 3, 4, 3, 4, 2, 3, 2, 3, 1, 2
+ db 0, 0, 0, 0, 0, 0, 0, 15, 13, 11, 9, 8, 6, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 15, 13, 11, 9, 8, 6, 4, 2, 0
+
+const angHor_tab_15, db (32-15), 15, (32-30), 30, (32-13), 13, (32-28), 28, (32-11), 11, (32-26), 26, (32-9), 9, (32-24), 24
+ db (32-7), 7, (32-22), 22, (32-5), 5, (32-20), 20, (32-3), 3, (32-18), 18, (32-1), 1, (32- 16), 16
+
const ang_table
%assign x 0
%rep 32
@@ -14955,6 +14962,119 @@
RET
INIT_YMM avx2
+cglobal intra_pred_ang16_15, 3,4,9
+ vbroadcasti128 m0, [angHor_tab_15]
+ vbroadcasti128 m1, [angHor_tab_15 + mmsize/2]
+ mova m2, [pw_1024]
+ mova m7, [ang16_shuf_mode15]
+ mova m8, [ang16_shuf_mode15 + mmsize]
+ lea r3, [r1 * 3]
+
+ vbroadcasti128 m3, [r2 + mmsize + 1]
+ vbroadcasti128 m4, [r2]
+ pshufb m4, [ang16_shuf_mode15 + mmsize * 2]
+ palignr m3, m3, m4, 7
+ vbroadcasti128 m6, [r2 + mmsize + 8]
+
+ pshufb m4, m3, m7
+ pshufb m5, m3, m8
+ pmaddubsw m4, m0
+ pmaddubsw m5, m1
+ pmulhrsw m4, m2
+ pmulhrsw m5, m2
+ packuswb m4, m5
+ movu [r0], xm4
+ vextracti128 [r0 + r1], m4, 1
+
+ palignr m5, m6, m3, 2
+ pshufb m4, m5, m7
+ pshufb m5, m8
+
+ pmaddubsw m4, m0
+ pmaddubsw m5, m1
+ pmulhrsw m4, m2
+ pmulhrsw m5, m2
+ packuswb m4, m5
+ movu [r0 + r1 * 2], xm4
+ vextracti128 [r0 + r3], m4, 1
+ lea r0, [r0 + r1 * 4]
+
+ palignr m5, m6, m3, 4
+ pshufb m4, m5, m7
+ pshufb m5, m8
+
+ pmaddubsw m4, m0
+ pmaddubsw m5, m1
+ pmulhrsw m4, m2
+ pmulhrsw m5, m2
+ packuswb m4, m5
+ movu [r0], xm4
+ vextracti128 [r0 + r1], m4, 1
+
+ palignr m5, m6, m3, 6
+ pshufb m4, m5, m7
+ pshufb m5, m8
+
+ pmaddubsw m4, m0
+ pmaddubsw m5, m1
+ pmulhrsw m4, m2
+ pmulhrsw m5, m2
+ packuswb m4, m5
+ movu [r0 + r1 * 2], xm4
+ vextracti128 [r0 + r3], m4, 1
+ lea r0, [r0 + r1 * 4]
+
+ palignr m5, m6, m3, 8
+ pshufb m4, m5, m7
+ pshufb m5, m8
+
+ pmaddubsw m4, m0
+ pmaddubsw m5, m1
+ pmulhrsw m4, m2
+ pmulhrsw m5, m2
+ packuswb m4, m5
+ movu [r0], xm4
+ vextracti128 [r0 + r1], m4, 1
+
+ palignr m5, m6, m3, 10
+ pshufb m4, m5, m7
+ pshufb m5, m8
+
+ pmaddubsw m4, m0
+ pmaddubsw m5, m1
+ pmulhrsw m4, m2
+ pmulhrsw m5, m2
+ packuswb m4, m5
+ movu [r0 + r1 * 2], xm4
+ vextracti128 [r0 + r3], m4, 1
+ lea r0, [r0 + r1 * 4]
+
+ palignr m5, m6, m3, 12
+ pshufb m4, m5, m7
+ pshufb m5, m8
+
+ pmaddubsw m4, m0
+ pmaddubsw m5, m1
+ pmulhrsw m4, m2
+ pmulhrsw m5, m2
+ packuswb m4, m5
+ movu [r0], xm4
+ vextracti128 [r0 + r1], m4, 1
+
+ palignr m5, m6, m3, 14
+ pshufb m4, m5, m7
+ pshufb m5, m8
+
+ pmaddubsw m4, m0
+ pmaddubsw m5, m1
+ pmulhrsw m4, m2
+ pmulhrsw m5, m2
+ packuswb m4, m5
+ movu [r0 + r1 * 2], xm4
+ vextracti128 [r0 + r3], m4, 1
+ RET
+
+INIT_YMM avx2
cglobal intra_pred_ang16_11, 3,4,5
mova m0, [angHor_tab_11]
mova m1, [pw_1024]
More information about the x265-devel
mailing list