From: Jochen Rollwagen <joro-2013-zqRNUXuvxA0b1SvskN2V4Q@public.gmane.org>
To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: [PATCH xf86-video-ati] Calculate log base 2 in radeon.h based on clz for all platforms
Date: Fri, 2 Dec 2016 11:07:02 +0100 [thread overview]
Message-ID: <584147C6.8000004@t-online.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 849 bytes --]
This commit replaces the inline assembler code (for x86 platforms) and
loop (for non-x86 platforms) in RADEONLog2 with a one-liner version
based on clz (count leading zeroes).
---
src/radeon.h | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/src/radeon.h b/src/radeon.h
index 5797bed..23ecfeb 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -935,18 +935,7 @@ enum {
static __inline__ int
RADEONLog2(int val)
{
- int bits;
-#if (defined __i386__ || defined __x86_64__) && (defined __GNUC__)
- __asm volatile("bsrl %1, %0"
- : "=r" (bits)
- : "c" (val)
- );
- return bits;
-#else
- for (bits = 0; val != 0; val >>= 1, ++bits)
- ;
- return bits - 1;
-#endif
+ return (31 - __builtin_clz(val));
}
#define RADEON_TILING_MASK 0xff
--
1.7.9.5
[-- Attachment #2: 0001-Calculate-log-base-2-in-radeon.h-based-on-clz-for-al.patch --]
[-- Type: text/x-patch, Size: 1054 bytes --]
>From 350d663a5ce85d51632a6fa56d28afa2447c6558 Mon Sep 17 00:00:00 2001
From: Jochen Rollwagen <joro-2013-zqRNUXuvxA0b1SvskN2V4Q@public.gmane.org>
Date: Fri, 2 Dec 2016 10:56:39 +0100
Subject: [PATCH] Calculate log base 2 in radeon.h based on clz for all
platforms
This commit replaces the inline assembler code (for x86 platforms) and loop (for non-x86 platforms) in RADEONLog2 with a one-liner version based on clz (count leading zeroes).
---
src/radeon.h | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/src/radeon.h b/src/radeon.h
index 5797bed..23ecfeb 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -935,18 +935,7 @@ enum {
static __inline__ int
RADEONLog2(int val)
{
- int bits;
-#if (defined __i386__ || defined __x86_64__) && (defined __GNUC__)
- __asm volatile("bsrl %1, %0"
- : "=r" (bits)
- : "c" (val)
- );
- return bits;
-#else
- for (bits = 0; val != 0; val >>= 1, ++bits)
- ;
- return bits - 1;
-#endif
+ return (31 - __builtin_clz(val));
}
#define RADEON_TILING_MASK 0xff
--
1.7.9.5
[-- Attachment #3: Type: text/plain, Size: 154 bytes --]
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
next reply other threads:[~2016-12-02 10:07 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-02 10:07 Jochen Rollwagen [this message]
[not found] ` <584147C6.8000004-zqRNUXuvxA0b1SvskN2V4Q@public.gmane.org>
2016-12-05 2:22 ` [PATCH xf86-video-ati] Calculate log base 2 in radeon.h based on clz for all platforms Michel Dänzer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=584147C6.8000004@t-online.de \
--to=joro-2013-zqrnuxuvxa0b1svskn2v4q@public.gmane.org \
--cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.