Re: [patch] Accelerate CAIRO_BITSWAP8 on 64 bit machines
Chris Wilson <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <1338276334_328232@CP5-2952> |
On Tue, 29 May 2012 02:03:58 +0000, "Xing, Dongsheng" <[email protected]> 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 -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo