x86: Remove <bits/select.h> and use the generic version

Message ID 87h800nj6u.fsf@mid.deneb.enyo.de
State Committed
Headers

Commit Message

Florian Weimer Feb. 9, 2020, 10:34 a.m. UTC
  Particularly on CPUs without ERMS, the string instructions are slow,
so it is unclear whether this architecture-specific implementation is
in fact an optimization.

Tested on x86_64-linux-gnu.

---
 sysdeps/x86/bits/select.h | 63 ---------------------------------------
 1 file changed, 63 deletions(-)
 delete mode 100644 sysdeps/x86/bits/select.h
  

Comments

H.J. Lu Feb. 9, 2020, 12:59 p.m. UTC | #1
On Sun, Feb 9, 2020 at 2:35 AM Florian Weimer <fw@deneb.enyo.de> wrote:
>
> Particularly on CPUs without ERMS, the string instructions are slow,
> so it is unclear whether this architecture-specific implementation is
> in fact an optimization.
>
> Tested on x86_64-linux-gnu.
>
> ---
>  sysdeps/x86/bits/select.h | 63 ---------------------------------------
>  1 file changed, 63 deletions(-)
>  delete mode 100644 sysdeps/x86/bits/select.h
>

LGTM.

Thanks.
  

Patch

diff --git a/sysdeps/x86/bits/select.h b/sysdeps/x86/bits/select.h
deleted file mode 100644
index b2e3ac800a..0000000000
--- a/sysdeps/x86/bits/select.h
+++ /dev/null
@@ -1,63 +0,0 @@ 
-/* Copyright (C) 1997-2020 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
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _SYS_SELECT_H
-# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
-#endif
-
-#include <bits/wordsize.h>
-
-
-#if defined __GNUC__ && __GNUC__ >= 2
-
-# if __WORDSIZE == 64
-#  define __FD_ZERO_STOS "stosq"
-# else
-#  define __FD_ZERO_STOS "stosl"
-# endif
-
-# define __FD_ZERO(fdsp) \
-  do {									      \
-    int __d0, __d1;							      \
-    __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS			      \
-			  : "=c" (__d0), "=D" (__d1)			      \
-			  : "a" (0), "0" (sizeof (fd_set)		      \
-					  / sizeof (__fd_mask)),	      \
-			    "1" (&__FDS_BITS (fdsp)[0])			      \
-			  : "memory");					      \
-  } while (0)
-
-#else	/* ! GNU CC */
-
-/* We don't use `memset' because this would require a prototype and
-   the array isn't too big.  */
-# define __FD_ZERO(set)  \
-  do {									      \
-    unsigned int __i;							      \
-    fd_set *__arr = (set);						      \
-    for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i)	      \
-      __FDS_BITS (__arr)[__i] = 0;					      \
-  } while (0)
-
-#endif	/* GNU CC */
-
-#define __FD_SET(d, set) \
-  ((void) (__FDS_BITS (set)[__FD_ELT (d)] |= __FD_MASK (d)))
-#define __FD_CLR(d, set) \
-  ((void) (__FDS_BITS (set)[__FD_ELT (d)] &= ~__FD_MASK (d)))
-#define __FD_ISSET(d, set) \
-  ((__FDS_BITS (set)[__FD_ELT (d)] & __FD_MASK (d)) != 0)