[cairo] [patch] Accelerate CAIRO_BITSWAP8 on 64 bit machines

Chris Wilson chris at chris-wilson.co.uk
Tue May 29 00:25:07 PDT 2012


On Tue, 29 May 2012 02:03:58 +0000, "Xing, Dongsheng" <dongsheng.xing at intel.com> wrote:
> 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.

This doesn't apply to master. Care to resend?

> 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)

A more appropriate test here would be that "SIZEOF_LONG_LONG >= 8" as
that is the condition used in the macro.

> +#define CAIRO_BITSWAP8(c) ((((c) * 0x80200802LLU & 0x884422110LLU) *
> 0x101010101LLU) >> 32)
> +#else
>  #define CAIRO_BITSWAP8(c) ((((c) * 0x0802LU & 0x22110LU) | ((c) * 0x8020LU &
> 0x88440LU)) * 0x10101LU >> 16)
> +#endif

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the cairo mailing list