diff mbox

PATCH [7/n]: Prepare x32: Use Use long long builtin for x86-64

Message ID 20110614160407.GA19465@intel.com
State New
Headers show

Commit Message

H.J. Lu June 14, 2011, 4:04 p.m. UTC
Hi,

long may be 32bit for x86-64. But long long is always 64bit.  This
patch uses long long builtin for 64bit.  OK for trunk?

Thanks.


H.J.
---
2011-06-14  H.J. Lu  <hongjiu.lu@intel.com>

	* longlong.h (count_leading_zeros): Use long long builtin for
	x86-64.
	(count_trailing_zeros): Likewise.

Comments

Uros Bizjak June 14, 2011, 5:37 p.m. UTC | #1
On Tue, Jun 14, 2011 at 6:04 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:

> long may be 32bit for x86-64. But long long is always 64bit.  This
> patch uses long long builtin for 64bit.  OK for trunk?
>
> Thanks.
>
>
> H.J.
> ---
> 2011-06-14  H.J. Lu  <hongjiu.lu@intel.com>
>
>        * longlong.h (count_leading_zeros): Use long long builtin for
>        x86-64.
>        (count_trailing_zeros): Likewise.
>
> diff --git a/gcc/longlong.h b/gcc/longlong.h
> index 1bab76d..d5c0cd9 100644
> --- a/gcc/longlong.h
> +++ b/gcc/longlong.h
> @@ -430,8 +430,8 @@ UDItype __umulsidi3 (USItype, USItype);
>           : "0" ((UDItype) (n0)),                                      \
>             "1" ((UDItype) (n1)),                                      \
>             "rm" ((UDItype) (dv)))
> -#define count_leading_zeros(count, x)  ((count) = __builtin_clzl (x))
> -#define count_trailing_zeros(count, x) ((count) = __builtin_ctzl (x))
> +#define count_leading_zeros(count, x)  ((count) = __builtin_clzll (x))
> +#define count_trailing_zeros(count, x) ((count) = __builtin_ctzll (x))
>  #define UMUL_TIME 40
>  #define UDIV_TIME 40
>  #endif /* x86_64 */

Uh, this is also needed for MingW (LLP64 target).

The patch is OK for SVN and release branches, but please also wait for
approval from MingW maintainer.

Do we need to updata glibc as well?

Thanks,
Uros.
H.J. Lu June 14, 2011, 5:51 p.m. UTC | #2
On Tue, Jun 14, 2011 at 10:37 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
> On Tue, Jun 14, 2011 at 6:04 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:
>
>> long may be 32bit for x86-64. But long long is always 64bit.  This
>> patch uses long long builtin for 64bit.  OK for trunk?
>>
>> Thanks.
>>
>>
>> H.J.
>> ---
>> 2011-06-14  H.J. Lu  <hongjiu.lu@intel.com>
>>
>>        * longlong.h (count_leading_zeros): Use long long builtin for
>>        x86-64.
>>        (count_trailing_zeros): Likewise.
>>
>> diff --git a/gcc/longlong.h b/gcc/longlong.h
>> index 1bab76d..d5c0cd9 100644
>> --- a/gcc/longlong.h
>> +++ b/gcc/longlong.h
>> @@ -430,8 +430,8 @@ UDItype __umulsidi3 (USItype, USItype);
>>           : "0" ((UDItype) (n0)),                                      \
>>             "1" ((UDItype) (n1)),                                      \
>>             "rm" ((UDItype) (dv)))
>> -#define count_leading_zeros(count, x)  ((count) = __builtin_clzl (x))
>> -#define count_trailing_zeros(count, x) ((count) = __builtin_ctzl (x))
>> +#define count_leading_zeros(count, x)  ((count) = __builtin_clzll (x))
>> +#define count_trailing_zeros(count, x) ((count) = __builtin_ctzll (x))
>>  #define UMUL_TIME 40
>>  #define UDIV_TIME 40
>>  #endif /* x86_64 */
>
> Uh, this is also needed for MingW (LLP64 target).
>
> The patch is OK for SVN and release branches, but please also wait for
> approval from MingW maintainer.
>
> Do we need to updata glibc as well?
>

Yes:

http://git.kernel.org/?p=devel/glibc/hjl/x86.git;a=commit;h=196911a6e77bbe851caff25ba260a25ceb9cf376
H.J. Lu June 18, 2011, 3:33 p.m. UTC | #3
On Tue, Jun 14, 2011 at 10:37 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
> On Tue, Jun 14, 2011 at 6:04 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:
>
>> long may be 32bit for x86-64. But long long is always 64bit.  This
>> patch uses long long builtin for 64bit.  OK for trunk?
>>
>> Thanks.
>>
>>
>> H.J.
>> ---
>> 2011-06-14  H.J. Lu  <hongjiu.lu@intel.com>
>>
>>        * longlong.h (count_leading_zeros): Use long long builtin for
>>        x86-64.
>>        (count_trailing_zeros): Likewise.
>>
>> diff --git a/gcc/longlong.h b/gcc/longlong.h
>> index 1bab76d..d5c0cd9 100644
>> --- a/gcc/longlong.h
>> +++ b/gcc/longlong.h
>> @@ -430,8 +430,8 @@ UDItype __umulsidi3 (USItype, USItype);
>>           : "0" ((UDItype) (n0)),                                      \
>>             "1" ((UDItype) (n1)),                                      \
>>             "rm" ((UDItype) (dv)))
>> -#define count_leading_zeros(count, x)  ((count) = __builtin_clzl (x))
>> -#define count_trailing_zeros(count, x) ((count) = __builtin_ctzl (x))
>> +#define count_leading_zeros(count, x)  ((count) = __builtin_clzll (x))
>> +#define count_trailing_zeros(count, x) ((count) = __builtin_ctzll (x))
>>  #define UMUL_TIME 40
>>  #define UDIV_TIME 40
>>  #endif /* x86_64 */
>
> Uh, this is also needed for MingW (LLP64 target).
>
> The patch is OK for SVN and release branches, but please also wait for
> approval from MingW maintainer.
>

I am checking it in.  I will investigate if there is any issue.
diff mbox

Patch

diff --git a/gcc/longlong.h b/gcc/longlong.h
index 1bab76d..d5c0cd9 100644
--- a/gcc/longlong.h
+++ b/gcc/longlong.h
@@ -430,8 +430,8 @@  UDItype __umulsidi3 (USItype, USItype);
 	   : "0" ((UDItype) (n0)),					\
 	     "1" ((UDItype) (n1)),					\
 	     "rm" ((UDItype) (dv)))
-#define count_leading_zeros(count, x)	((count) = __builtin_clzl (x))
-#define count_trailing_zeros(count, x)	((count) = __builtin_ctzl (x))
+#define count_leading_zeros(count, x)	((count) = __builtin_clzll (x))
+#define count_trailing_zeros(count, x)	((count) = __builtin_ctzll (x))
 #define UMUL_TIME 40
 #define UDIV_TIME 40
 #endif /* x86_64 */