On Wed, 16 Jul 2014, David Wohlferd wrote: >>> 2014-07-09 David Wohlferd <d...@limegreensocks.com> >>> >>> PR target/61662 >>> * config/i386/ia32intrin.h: Use __LP64__ to determine size of >>> long >> This is OK for mainline and 4.9 backport. > Thank you for reviewing and approving this. However while I have a > release on file with FSF, I don't have SVN write permissions, so I > cannot check this in.
I applied this to trunk with minor tweaks to the ChangeLog and the comment in the patch itself. (Both should end with a full stop, we use 64-bit as an adjective, and the line was getting long.) Gerald 2014-07-16 David Wohlferd <d...@limegreensocks.com> PR target/61662 * config/i386/ia32intrin.h: Use __LP64__ to determine size of long. Index: config/i386/ia32intrin.h =================================================================== --- config/i386/ia32intrin.h (revision 212698) +++ config/i386/ia32intrin.h (working copy) @@ -256,11 +256,7 @@ #define _bswap64(a) __bswapq(a) #define _popcnt64(a) __popcntq(a) -#define _lrotl(a,b) __rolq((a), (b)) -#define _lrotr(a,b) __rorq((a), (b)) #else -#define _lrotl(a,b) __rold((a), (b)) -#define _lrotr(a,b) __rord((a), (b)) /* Read flags register */ extern __inline unsigned int @@ -280,6 +276,16 @@ #endif +/* On LP64 systems, longs are 64-bit. Use the appropriate rotate + * function. */ +#ifdef __LP64__ +#define _lrotl(a,b) __rolq((a), (b)) +#define _lrotr(a,b) __rorq((a), (b)) +#else +#define _lrotl(a,b) __rold((a), (b)) +#define _lrotr(a,b) __rord((a), (b)) +#endif + #define _bit_scan_forward(a) __bsfd(a) #define _bit_scan_reverse(a) __bsrd(a) #define _bswap(a) __bswapd(a)