This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.28.9000-198-g72771e5


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  72771e53753647111d31c5c4bf43d8901e6baf7e (commit)
      from  c2b7ccad93d6361eba91755e8f0c92e97c76e854 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=72771e53753647111d31c5c4bf43d8901e6baf7e

commit 72771e53753647111d31c5c4bf43d8901e6baf7e
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Oct 17 15:16:38 2018 -0700

    x86: Use _rdtsc intrinsic for HP_TIMING_NOW
    
    Since _rdtsc intrinsic is supported in GCC 4.9, we can use it for
    HP_TIMING_NOW.  This patch
    
    1. Create x86 hp-timing.h to replace i686 and x86_64 hp-timing.h.
    2. Move MINIMUM_ISA from init-arch.h to isa.h so that x86 hp-timing.h
    can check minimum x86 ISA to decide if _rdtsc can be used.
    
    NB: Checking if __i686__ isn't sufficient since __i686__ may not be
    defined when building for i686 class processors.
    
    	* sysdeps/i386/init-arch.h: Removed.
    	* sysdeps/i386/i586/init-arch.h: Likewise.
    	* sysdeps/i386/i686/init-arch.h: Likewise.
    	* sysdeps/i386/i686/hp-timing.h: Likewise.
    	* sysdeps/x86_64/hp-timing.h: Likewise.
    	* sysdeps/i386/isa.h: New file.
    	* sysdeps/i386/i586/isa.h: Likewise.
    	* sysdeps/i386/i686/isa.h: Likewise.
    	* sysdeps/x86_64/isa.h: Likewise.
    	* sysdeps/x86/hp-timing.h: New file.
    	* sysdeps/x86/init-arch.h: Include <isa.h>.

diff --git a/ChangeLog b/ChangeLog
index 450732e..e8f2dbb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2018-10-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* sysdeps/i386/init-arch.h: Removed.
+	* sysdeps/i386/i586/init-arch.h: Likewise.
+	* sysdeps/i386/i686/init-arch.h: Likewise.
+	* sysdeps/i386/i686/hp-timing.h: Likewise.
+	* sysdeps/x86_64/hp-timing.h: Likewise.
+	* sysdeps/i386/isa.h: New file.
+	* sysdeps/i386/i586/isa.h: Likewise.
+	* sysdeps/i386/i686/isa.h: Likewise.
+	* sysdeps/x86_64/isa.h: Likewise.
+	* sysdeps/x86/hp-timing.h: New file.
+	* sysdeps/x86/init-arch.h: Include <isa.h>.
+
 2018-10-17  Joseph Myers  <joseph@codesourcery.com>
 
 	* math/libm-test-pow.inc (pow_test_data): Do not allow
diff --git a/sysdeps/i386/i586/init-arch.h b/sysdeps/i386/i586/isa.h
similarity index 85%
rename from sysdeps/i386/i586/init-arch.h
rename to sysdeps/i386/i586/isa.h
index 72fb46c..79481ce 100644
--- a/sysdeps/i386/i586/init-arch.h
+++ b/sysdeps/i386/i586/isa.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 2015-2018 Free Software Foundation, Inc.
+/* x86 ISA info.  i586 version.
+   Copyright (C) 2018 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
@@ -15,5 +16,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#ifndef _ISA_H
+#define _ISA_H
+
 #define MINIMUM_ISA 586
-#include <sysdeps/x86/init-arch.h>
+
+#endif
diff --git a/sysdeps/i386/i686/init-arch.h b/sysdeps/i386/i686/isa.h
similarity index 85%
rename from sysdeps/i386/i686/init-arch.h
rename to sysdeps/i386/i686/isa.h
index ab99392..584e26b 100644
--- a/sysdeps/i386/i686/init-arch.h
+++ b/sysdeps/i386/i686/isa.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 2015-2018 Free Software Foundation, Inc.
+/* x86 ISA info.  i686 version.
+   Copyright (C) 2018 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
@@ -15,5 +16,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#ifndef _ISA_H
+#define _ISA_H
+
 #define MINIMUM_ISA 686
-#include <sysdeps/x86/init-arch.h>
+
+#endif
diff --git a/sysdeps/i386/init-arch.h b/sysdeps/i386/isa.h
similarity index 85%
copy from sysdeps/i386/init-arch.h
copy to sysdeps/i386/isa.h
index 043089c..e0a1e9c 100644
--- a/sysdeps/i386/init-arch.h
+++ b/sysdeps/i386/isa.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 2015-2018 Free Software Foundation, Inc.
+/* x86 ISA info.  i486 version.
+   Copyright (C) 2018 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
@@ -15,5 +16,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#ifndef _ISA_H
+#define _ISA_H
+
 #define MINIMUM_ISA 486
-#include <sysdeps/x86/init-arch.h>
+
+#endif
diff --git a/sysdeps/i386/i686/hp-timing.h b/sysdeps/x86/hp-timing.h
similarity index 69%
rename from sysdeps/i386/i686/hp-timing.h
rename to sysdeps/x86/hp-timing.h
index 59af526..1c20e9d 100644
--- a/sysdeps/i386/i686/hp-timing.h
+++ b/sysdeps/x86/hp-timing.h
@@ -1,7 +1,6 @@
-/* High precision, low overhead timing functions.  i686 version.
-   Copyright (C) 1998-2018 Free Software Foundation, Inc.
+/* High precision, low overhead timing functions.  x86 version.
+   Copyright (C) 2018 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -20,12 +19,17 @@
 #ifndef _HP_TIMING_H
 #define _HP_TIMING_H	1
 
+#include <isa.h>
+
+#if MINIMUM_ISA == 686 || MINIMUM_ISA == 8664
+# include <x86intrin.h>
+
 /* We always assume having the timestamp register.  */
-#define HP_TIMING_AVAIL		(1)
-#define HP_SMALL_TIMING_AVAIL	(1)
+# define HP_TIMING_AVAIL	(1)
+# define HP_SMALL_TIMING_AVAIL	(1)
 
 /* We indeed have inlined functions.  */
-#define HP_TIMING_INLINE	(1)
+# define HP_TIMING_INLINE	(1)
 
 /* We use 64bit values for the times.  */
 typedef unsigned long long int hp_timing_t;
@@ -35,8 +39,14 @@ typedef unsigned long long int hp_timing_t;
    running in this moment.  This could be changed by using a barrier like
    'cpuid' right before the `rdtsc' instruciton.  But we are not interested
    in accurate clock cycles here so we don't do this.  */
-#define HP_TIMING_NOW(Var)	__asm__ __volatile__ ("rdtsc" : "=A" (Var))
+# define HP_TIMING_NOW(Var)	((Var) = _rdtsc ())
 
-#include <hp-timing-common.h>
+# include <hp-timing-common.h>
+#else
+/* NB: Undefine _HP_TIMING_H so that <sysdeps/generic/hp-timing.h> will
+   be included.  */
+# undef _HP_TIMING_H
+# include <sysdeps/generic/hp-timing.h>
+#endif
 
-#endif	/* hp-timing.h */
+#endif /* hp-timing.h */
diff --git a/sysdeps/x86/init-arch.h b/sysdeps/x86/init-arch.h
index a81ca8a..bc860fc 100644
--- a/sysdeps/x86/init-arch.h
+++ b/sysdeps/x86/init-arch.h
@@ -21,6 +21,7 @@
 # include <ldsodefs.h>
 #endif
 #include <ifunc-init.h>
+#include <isa.h>
 
 #ifndef __x86_64__
 /* Due to the reordering and the other nifty extensions in i686, it is
diff --git a/sysdeps/x86_64/hp-timing.h b/sysdeps/x86_64/hp-timing.h
deleted file mode 100644
index ec543be..0000000
--- a/sysdeps/x86_64/hp-timing.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* High precision, low overhead timing functions.  x86-64 version.
-   Copyright (C) 2002-2018 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _HP_TIMING_H
-#define _HP_TIMING_H	1
-
-/* We always assume having the timestamp register.  */
-#define HP_TIMING_AVAIL		(1)
-#define HP_SMALL_TIMING_AVAIL	(1)
-
-/* We indeed have inlined functions.  */
-#define HP_TIMING_INLINE	(1)
-
-/* We use 64bit values for the times.  */
-typedef unsigned long long int hp_timing_t;
-
-/* The "=A" constraint used in 32-bit mode does not work in 64-bit mode.  */
-#define HP_TIMING_NOW(Var) \
-  ({ unsigned int _hi, _lo; \
-     asm volatile ("rdtsc" : "=a" (_lo), "=d" (_hi)); \
-     (Var) = ((unsigned long long int) _hi << 32) | _lo; })
-
-#include <hp-timing-common.h>
-
-#endif /* hp-timing.h */
diff --git a/sysdeps/i386/init-arch.h b/sysdeps/x86_64/isa.h
similarity index 82%
rename from sysdeps/i386/init-arch.h
rename to sysdeps/x86_64/isa.h
index 043089c..452bce7 100644
--- a/sysdeps/i386/init-arch.h
+++ b/sysdeps/x86_64/isa.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 2015-2018 Free Software Foundation, Inc.
+/* x86 ISA info.  x86-64 version.
+   Copyright (C) 2018 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
@@ -15,5 +16,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define MINIMUM_ISA 486
-#include <sysdeps/x86/init-arch.h>
+#ifndef _ISA_H
+#define _ISA_H
+
+#define MINIMUM_ISA 8664
+
+#endif

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                     |   14 +++++++++++
 sysdeps/i386/i586/init-arch.h |   19 ---------------
 sysdeps/i386/i586/isa.h       |   24 +++++++++++++++++++
 sysdeps/i386/i686/hp-timing.h |   42 ---------------------------------
 sysdeps/i386/i686/init-arch.h |   19 ---------------
 sysdeps/i386/i686/isa.h       |   24 +++++++++++++++++++
 sysdeps/i386/init-arch.h      |   19 ---------------
 sysdeps/i386/isa.h            |   24 +++++++++++++++++++
 sysdeps/x86/hp-timing.h       |   52 +++++++++++++++++++++++++++++++++++++++++
 sysdeps/x86/init-arch.h       |    1 +
 sysdeps/x86_64/hp-timing.h    |   40 -------------------------------
 sysdeps/x86_64/isa.h          |   24 +++++++++++++++++++
 12 files changed, 163 insertions(+), 139 deletions(-)
 delete mode 100644 sysdeps/i386/i586/init-arch.h
 create mode 100644 sysdeps/i386/i586/isa.h
 delete mode 100644 sysdeps/i386/i686/hp-timing.h
 delete mode 100644 sysdeps/i386/i686/init-arch.h
 create mode 100644 sysdeps/i386/i686/isa.h
 delete mode 100644 sysdeps/i386/init-arch.h
 create mode 100644 sysdeps/i386/isa.h
 create mode 100644 sysdeps/x86/hp-timing.h
 delete mode 100644 sysdeps/x86_64/hp-timing.h
 create mode 100644 sysdeps/x86_64/isa.h


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]