Message ID | 20110614160407.GA19465@intel.com |
---|---|
State | New |
Headers | show |
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.
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
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 --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 */