Re: [patch] Accelerate CAIRO_BITSWAP8 on 64 bit machines

"Xing, Dongsheng" <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <720BD6C0640BA94687C456A78160D41D12D503@SHSMSX101.ccr.corp.intel.com>
> -----Original Message-----
> From: Chris Wilson  
> Sent: Tuesday, May 29, 2012 4:00 PM
> To: Xing, Dongsheng; [email protected]
> Subject: Re: [cairo] [patch] Accelerate CAIRO_BITSWAP8 on 64 bit machines
> > From: Chris Wilson
> > Sent: Tuesday, May 29, 2012 3:25 PM
> > To: Xing, Dongsheng; [email protected]
> > Subject: Re: [cairo] [patch] Accelerate CAIRO_BITSWAP8 on 64 bit 
> > machines
> > 
> > > On Tue, 29 May 2012 02:03:58 +0000, "Xing, Dongsheng" 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?
> 
> It justs means that the parent of this patch is not known upstream and by my repository so git can not reconstruct the right patch for me.
> > > A more appropriate test here would be that "SIZEOF_LONG_LONG >= 8" as that is the condition used in the macro.
> 
> > I think SIZEOF_LONG >= 8 is better. Because sizeof(long long)==8 on a 32 bit machine. And SIZEOF_LONG is the length of a native processor word.
> Ok, if we can use SIZEOF_LONG here, wouuld 0x80200802LU suffice?
> -Chris

Yes, 0x80200802LU is suffice. The patch has been modified accordingly. The patch is now known upstream.
Best regards,
Dongsheng

From 3ed3ecbc03435f79369e1d840b488d5a8add1983 Mon Sep 17 00:00:00 2001
From: Dongsheng Xing <[email protected]>
Date: Tue, 29 May 2012 16:14:19 +0800
Subject: [PATCH] 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.

---
 src/cairoint.h |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/cairoint.h b/src/cairoint.h
index 2c9f2dd..96e2c1f 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_LONG >= 8)
+#define CAIRO_BITSWAP8(c) ((((c) * 0x80200802LU & 0x884422110LU) * 0x101010101LU) >> 32)
+#else
 #define CAIRO_BITSWAP8(c) ((((c) * 0x0802LU & 0x22110LU) | ((c) * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16)
+#endif
 
 /* Return the number of 1 bits in mask.
  *
-- 
1.7.9.5


--
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.