[Pixman] [PATCH 07/12] ARMv6: Macro to permit testing for early returns or alternate implementations
Tomeu Vizoso
tomeu at tomeuvizoso.net
Wed Mar 12 01:25:02 PDT 2014
From: Ben Avison <bavison at riscosopen.org>
When the source or mask is solid (as opposed to a bitmap) there is the
possibility of an immediate exit, or a branch to an alternate, more optimal
implementation in some cases. This is best achieved with a brief prologue to
the function; to permit this, the necessary boilerplate for setting up a
function entry is now available in the "startfunc" macro.
This feature was first included in my over_n_8888 fast path, but since that's
still sitting in the submission queue at the time of writing, I'm posting it
again as an independent patch.
---
pixman/pixman-arm-simd-asm.h | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/pixman/pixman-arm-simd-asm.h b/pixman/pixman-arm-simd-asm.h
index c7e5ca7..a41e1e0 100644
--- a/pixman/pixman-arm-simd-asm.h
+++ b/pixman/pixman-arm-simd-asm.h
@@ -107,6 +107,20 @@
.set PREFETCH_TYPE_NONE, 0
.set PREFETCH_TYPE_STANDARD, 1
+.macro startfunc fname
+#ifdef PROFILING
+ .p2align 9
+#endif
+ .func fname
+ .global fname
+ /* For ELF format also set function visibility to hidden */
+#ifdef __ELF__
+ .hidden fname
+ .type fname, %function
+#endif
+fname:
+.endm
+
/*
* Definitions of macros for load/store of pixel data.
*/
@@ -596,16 +610,7 @@
process_tail, \
process_inner_loop
-#ifdef PROFILING
- .p2align 9
-#endif
- .func fname
- .global fname
- /* For ELF format also set function visibility to hidden */
-#ifdef __ELF__
- .hidden fname
- .type fname, %function
-#endif
+startfunc fname
/*
* Make some macro arguments globally visible and accessible
@@ -717,7 +722,6 @@
SCRATCH .req r12
ORIG_W .req r14 /* width (pixels) */
-fname:
push {r4-r11, lr} /* save all registers */
subs Y, Y, #1
--
1.8.5.3
More information about the Pixman
mailing list