[patch] Accelerate CAIRO_BITSWAP8 on 64 bit machines
"Xing, Dongsheng" <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <720BD6C0640BA94687C456A78160D41D12D443@SHSMSX101.ccr.corp.intel.com> |
Hi, CAIRO_BITSWAP8 costs seven operations on a 32 bit machine, but it can be
done with only four operations on 64 bit machines.
This patch accelerates CAIRO_BITSWAP8 on 64 bit machines.
diff --git a/src/cairoint.h b/src/cairoint.h
index 2c9f2dd..7e62d86 100644
--- a/src/cairoint.h
+++ b/src/cairoint.h
@@ -169,7 +169,11 @@ do { \
* Devised by Sean Anderson, July 13, 2001.
* Source:
http://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith32Bits
*/
+#if (SIZEOF_VOID_P >= 8)
+#define CAIRO_BITSWAP8(c) ((((c) * 0x80200802LLU & 0x884422110LLU) *
0x101010101LLU) >> 32)
+#else
#define CAIRO_BITSWAP8(c) ((((c) * 0x0802LU & 0x22110LU) | ((c) * 0x8020LU &
0x88440LU)) * 0x10101LU >> 16)
+#endif
/* Return the number of 1 bits in mask.
*
--
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo