From 13764867feabae242e5a21d4ceee38d3648d1b62 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 30 May 2012 14:13:18 -0700 Subject: [PATCH] Use x86-64 bits/byteswap.h for both i386 and x86_64 --- ChangeLog | 12 +++ sysdeps/i386/Implies | 1 + sysdeps/i386/bits/byteswap.h | 126 ----------------------- sysdeps/{i386 => x86}/bits/byteswap-16.h | 0 sysdeps/{x86_64 => x86}/bits/byteswap.h | 0 sysdeps/x86_64/Implies | 1 + sysdeps/x86_64/bits/byteswap-16.h | 49 --------- 7 files changed, 14 insertions(+), 175 deletions(-) delete mode 100644 sysdeps/i386/bits/byteswap.h rename sysdeps/{i386 => x86}/bits/byteswap-16.h (100%) rename sysdeps/{x86_64 => x86}/bits/byteswap.h (100%) delete mode 100644 sysdeps/x86_64/bits/byteswap-16.h diff --git a/ChangeLog b/ChangeLog index 4adb73a8c8..5b1346e188 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2012-05-30 H.J. Lu + + [BZ #14117] + * sysdeps/i386/bits/byteswap.h: Removed. + * sysdeps/i386/bits/byteswap-16.h: Likewise. + * sysdeps/x86_64/bits/byteswap.h: Renamed to ... + * sysdeps/x86/bits/byteswap.h: This. + * sysdeps/x86_64/bits/byteswap-16.h: Renamed to ... + * sysdeps/x86/bits/byteswap-16.h: This. + * sysdeps/i386/Implies: Add x86. + * sysdeps/x86_64/Implies: Likewise. + 2012-05-30 David S. Miller * soft-fp/soft-fp.h (FP_CUR_EXCEPTIONS): Define. diff --git a/sysdeps/i386/Implies b/sysdeps/i386/Implies index 3a32442d63..20b2dffc29 100644 --- a/sysdeps/i386/Implies +++ b/sysdeps/i386/Implies @@ -1,3 +1,4 @@ +x86 wordsize-32 ieee754/ldbl-96 ieee754/dbl-64 diff --git a/sysdeps/i386/bits/byteswap.h b/sysdeps/i386/bits/byteswap.h deleted file mode 100644 index 3542816385..0000000000 --- a/sysdeps/i386/bits/byteswap.h +++ /dev/null @@ -1,126 +0,0 @@ -/* Macros to swap the order of bytes in integer values. - Copyright (C) 1997-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H -# error "Never use directly; include instead." -#endif - -#ifndef _BITS_BYTESWAP_H -#define _BITS_BYTESWAP_H 1 - -/* Swap bytes in 16 bit value. */ -#define __bswap_constant_16(x) \ - ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) - -/* Get __bswap_16. */ -#include - -/* Swap bytes in 32 bit value. */ -#define __bswap_constant_32(x) \ - ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ - (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) - -#ifdef __GNUC__ -# if __GNUC__ >= 2 -/* To swap the bytes in a word the i486 processors and up provide the - `bswap' opcode. On i386 we have to use three instructions. */ -# if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__ \ - && !defined __pentium4__ && !defined __k8__ && !defined __athlon__ \ - && !defined __k6__ && !defined __nocona__ && !defined __core2__ \ - && !defined __geode__ && !defined __amdfam10__ -# define __bswap_32(x) \ - (__extension__ \ - ({ register unsigned int __v, __x = (x); \ - if (__builtin_constant_p (__x)) \ - __v = __bswap_constant_32 (__x); \ - else \ - __asm__ ("rorw $8, %w0;" \ - "rorl $16, %0;" \ - "rorw $8, %w0" \ - : "=r" (__v) \ - : "0" (__x) \ - : "cc"); \ - __v; })) -# else -# define __bswap_32(x) \ - (__extension__ \ - ({ register unsigned int __v, __x = (x); \ - if (__builtin_constant_p (__x)) \ - __v = __bswap_constant_32 (__x); \ - else \ - __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); \ - __v; })) -# endif -# else -# define __bswap_32(x) \ - (__extension__ \ - ({ register unsigned int __x = (x); __bswap_constant_32 (__x); })) -# endif -#else -static __inline unsigned int -__bswap_32 (unsigned int __bsx) -{ - return __bswap_constant_32 (__bsx); -} -#endif - - -#if defined __GNUC__ && __GNUC__ >= 2 -/* Swap bytes in 64 bit value. */ -# define __bswap_constant_64(x) \ - (__extension__ ((((x) & 0xff00000000000000ull) >> 56) \ - | (((x) & 0x00ff000000000000ull) >> 40) \ - | (((x) & 0x0000ff0000000000ull) >> 24) \ - | (((x) & 0x000000ff00000000ull) >> 8) \ - | (((x) & 0x00000000ff000000ull) << 8) \ - | (((x) & 0x0000000000ff0000ull) << 24) \ - | (((x) & 0x000000000000ff00ull) << 40) \ - | (((x) & 0x00000000000000ffull) << 56))) - -# define __bswap_64(x) \ - (__extension__ \ - ({ union { __extension__ unsigned long long int __ll; \ - unsigned long int __l[2]; } __w, __r; \ - if (__builtin_constant_p (x)) \ - __r.__ll = __bswap_constant_64 (x); \ - else \ - { \ - __w.__ll = (x); \ - __r.__l[0] = __bswap_32 (__w.__l[1]); \ - __r.__l[1] = __bswap_32 (__w.__l[0]); \ - } \ - __r.__ll; })) -#elif __GLIBC_HAVE_LONG_LONG -# define __bswap_constant_64(x) \ - ((((x) & 0xff00000000000000ull) >> 56) \ - | (((x) & 0x00ff000000000000ull) >> 40) \ - | (((x) & 0x0000ff0000000000ull) >> 24) \ - | (((x) & 0x000000ff00000000ull) >> 8) \ - | (((x) & 0x00000000ff000000ull) << 8) \ - | (((x) & 0x0000000000ff0000ull) << 24) \ - | (((x) & 0x000000000000ff00ull) << 40) \ - | (((x) & 0x00000000000000ffull) << 56)) - -static __inline unsigned long long int -__bswap_64 (unsigned long long int __bsx) -{ - return __bswap_constant_64 (__bsx); -} -#endif - -#endif /* _BITS_BYTESWAP_H */ diff --git a/sysdeps/i386/bits/byteswap-16.h b/sysdeps/x86/bits/byteswap-16.h similarity index 100% rename from sysdeps/i386/bits/byteswap-16.h rename to sysdeps/x86/bits/byteswap-16.h diff --git a/sysdeps/x86_64/bits/byteswap.h b/sysdeps/x86/bits/byteswap.h similarity index 100% rename from sysdeps/x86_64/bits/byteswap.h rename to sysdeps/x86/bits/byteswap.h diff --git a/sysdeps/x86_64/Implies b/sysdeps/x86_64/Implies index c8d7d2d91a..811c19a8f2 100644 --- a/sysdeps/x86_64/Implies +++ b/sysdeps/x86_64/Implies @@ -1,3 +1,4 @@ +x86 ieee754/ldbl-96 ieee754/dbl-64/wordsize-64 ieee754/dbl-64 diff --git a/sysdeps/x86_64/bits/byteswap-16.h b/sysdeps/x86_64/bits/byteswap-16.h deleted file mode 100644 index 584eb86b74..0000000000 --- a/sysdeps/x86_64/bits/byteswap-16.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Macros to swap the order of bytes in 16-bit integer values. - Copyright (C) 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _BITS_BYTESWAP_H -# error "Never use directly; include instead." -#endif - -#ifdef __GNUC__ -# if __GNUC__ >= 2 -# define __bswap_16(x) \ - (__extension__ \ - ({ register unsigned short int __v, __x = (unsigned short int) (x); \ - if (__builtin_constant_p (__x)) \ - __v = __bswap_constant_16 (__x); \ - else \ - __asm__ ("rorw $8, %w0" \ - : "=r" (__v) \ - : "0" (__x) \ - : "cc"); \ - __v; })) -# else -/* This is better than nothing. */ -# define __bswap_16(x) \ - (__extension__ \ - ({ register unsigned short int __x = (unsigned short int) (x); \ - __bswap_constant_16 (__x); })) -# endif -#else -static __inline unsigned short int -__bswap_16 (unsigned short int __bsx) -{ - return __bswap_constant_16 (__bsx); -} -#endif