summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Avison <bavison@riscosopen.org>2014-06-18 21:25:23 +0100
committerBen Avison <bavison@riscosopen.org>2015-10-15 13:52:05 +0100
commit350100bc41692946b9af828ed302a26ebac3865d (patch)
tree0fd046339c4cc9de088f976510173de8234ace5e
parentcb9bf2cb2c89fb5655cdcb0b1b2d2c61e0bc555b (diff)
armv6: Add src_1555_8888 fast path
lowlevel-blt-bench results, compared to using the armv6 1555 fetcher: Before After Mean StdDev Mean StdDev Confidence Change L1 57.0 1.1 70.1 0.6 100.0% +23.1% L2 41.4 1.0 44.1 1.4 100.0% +6.3% M 49.8 0.1 59.0 0.2 100.0% +18.5% HT 21.4 0.3 32.3 0.3 100.0% +50.9% VT 21.0 0.3 30.2 0.3 100.0% +43.8% R 19.7 0.2 27.0 0.2 100.0% +37.4% RT 7.0 0.2 10.9 0.3 100.0% +56.6%
-rw-r--r--pixman/pixman-arm-simd-asm.S10
-rw-r--r--pixman/pixman-arm-simd.c9
2 files changed, 19 insertions, 0 deletions
diff --git a/pixman/pixman-arm-simd-asm.S b/pixman/pixman-arm-simd-asm.S
index fcfdb60..208f0de 100644
--- a/pixman/pixman-arm-simd-asm.S
+++ b/pixman/pixman-arm-simd-asm.S
@@ -2301,6 +2301,16 @@ generate_composite_function_single_scanline \
.endif
.endm
+generate_composite_function \
+ pixman_composite_src_1555_8888_asm_armv6, 16, 0, 32, \
+ FLAG_DST_WRITEONLY | FLAG_BRANCH_OVER, \
+ 3, /* prefetch distance */ \
+ src_1555_8888_init, \
+ nop_macro, /* newline */ \
+ nop_macro, /* cleanup */ \
+ src_1555_8888_process_head, \
+ src_1555_8888_process_tail
+
generate_composite_function_single_scanline \
pixman_get_scanline_a1r5g5b5_asm_armv6, 16, 0, 32, \
FLAG_DST_WRITEONLY | FLAG_BRANCH_OVER, \
diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c
index ab3bb3c..c252d83 100644
--- a/pixman/pixman-arm-simd.c
+++ b/pixman/pixman-arm-simd.c
@@ -43,6 +43,8 @@ PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, src_0565_8888,
uint16_t, 1, uint32_t, 1)
PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, src_x888_0565,
uint32_t, 1, uint16_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, src_1555_8888,
+ uint16_t, 1, uint32_t, 1)
PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, add_8_8,
uint8_t, 1, uint8_t, 1)
@@ -274,6 +276,13 @@ static const pixman_fast_path_t arm_simd_fast_paths[] =
PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, b5g6r5, armv6_composite_src_x888_0565),
PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, b5g6r5, armv6_composite_src_x888_0565),
+ PIXMAN_STD_FAST_PATH (SRC, x1r5g5b5, null, x8r8g8b8, armv6_composite_src_1555_8888),
+ PIXMAN_STD_FAST_PATH (SRC, a1r5g5b5, null, x8r8g8b8, armv6_composite_src_1555_8888),
+ PIXMAN_STD_FAST_PATH (SRC, x1b5g5r5, null, x8b8g8r8, armv6_composite_src_1555_8888),
+ PIXMAN_STD_FAST_PATH (SRC, a1b5g5r5, null, x8b8g8r8, armv6_composite_src_1555_8888),
+ PIXMAN_STD_FAST_PATH (SRC, a1r5g5b5, null, a8r8g8b8, armv6_composite_src_1555_8888),
+ PIXMAN_STD_FAST_PATH (SRC, a1b5g5r5, null, a8b8g8r8, armv6_composite_src_1555_8888),
+
PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, armv6_composite_over_8888_8888),
PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, armv6_composite_over_8888_8888),
PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, armv6_composite_over_8888_8888),