glibc/sysdeps
H.J. Lu 75dd0a8f3d Detect and select i586/i686 implementation at run-time
We detect i586 and i686 features at run-time by checking CX8 and CMOV
CPUID features bits.  We can use these information to select the best
implementation in ix86 multiarch.  HAS_I586/HAS_I686 is true if i586/i686
instructions are available on the processor.

Due to the reordering and the other nifty extensions in i686, it is not
really good to use heavily i586 optimized code on an i686.  It's better
to use i486 code if it isn't an i586.  USE_I586/USE_I686 is true if
i586/i686 implementation should be used for the processor.  USE_I586
is true only if i686 instructions aren't available.  If i686 instructions
are available, we always choose i686 or i486 implementation, in that order,
and we never choose i586 implementation for i686-class processors.

	* sysdeps/i386/init-arch.h: New file.
	* sysdeps/i386/i586/init-arch.h: Likewise.
	* sysdeps/i386/i686/init-arch.h: Likewise.
	* sysdeps/x86/cpu-features.c (init_cpu_features): Set bit_I586
	bit if CX8 is available.  Set bit_I686 bit if CMOV is available.
	* sysdeps/x86/cpu-features.h (bit_I586): New.
	(bit_I686): Likewise.
	(bit_CX8): Likewise.
	(bit_CMOV): Likewise.
	(index_CX8): Likewise.
	(index_CMOV): Likewise.
	(index_I586): Likewise.
	(index_I686): Likewise.
	(reg_CX8): Likewise.
	(reg_CMOV): Likewise.
	(HAS_I586): Defined as HAS_ARCH_FEATURE (I586) if i586 isn't
	available at compile-time.
	(HAS_I686): Defined as HAS_ARCH_FEATURE (I686) if i686 isn't
	available at compile-time.
	* sysdeps/x86/init-arch.h (USE_I586): New macro.
	(USE_I686): Likewise.
2015-08-27 09:06:44 -07:00
..
aarch64 2015-08-24 Wilco Dijkstra <wdijkstr@arm.com> 2015-08-24 14:49:46 +01:00
alpha alpha: Update libm-test-ulps 2015-05-19 09:43:54 -07:00
arm Fix BZ #18084 -- backtrace (..., 0) dumps core on x86. 2015-08-15 11:42:43 -07:00
generic Adjust _Unwind_Word in unwind.h to version in libgcc. 2015-08-26 10:26:26 +02:00
gnu hurd: fix unwind-resume.c build 2015-02-08 18:46:00 +01:00
hppa hppa: start.S: rework references to fix PIE TEXTRELs [BZ #18421] 2015-08-18 02:37:17 -04:00
i386 Detect and select i586/i686 implementation at run-time 2015-08-27 09:06:44 -07:00
ia64 ia64: atomic.h: fix atomic_exchange_and_add 64bit handling 2015-07-28 02:30:15 -04:00
ieee754 Disable uninitialized warning with GCC 4.8 2015-08-26 16:10:43 -07:00
init_array NPTL: Initializer for .init_array-only configurations. 2015-02-13 13:19:11 -08:00
m68k Fix BZ #18084 -- backtrace (..., 0) dumps core on x86. 2015-08-15 11:42:43 -07:00
mach PLT avoidance for _exit in rtld. 2015-07-09 15:25:47 -07:00
microblaze Fix BZ #18084 -- backtrace (..., 0) dumps core on x86. 2015-08-15 11:42:43 -07:00
mips Fix MIPS -Wundef warnings for __mips_isa_rev. 2015-08-18 21:52:22 +00:00
nacl NaCl: Call __nacl_main in preference to main. 2015-08-25 13:37:07 -07:00
nios2 Fixes extern protected data handling testcases elf/tst-protected1a 2015-07-26 05:27:18 -07:00
nptl Add and use new glibc-internal futex API. 2015-07-10 13:47:09 +02:00
posix Fix BZ #18086 -- nice resets errno to 0. 2015-08-11 23:40:00 -07:00
powerpc powerpc: Sync hwcap.h with kernel 2015-08-26 14:55:40 -03:00
pthread Use unsigned types for counters in AIO code. 2015-06-24 17:43:32 -07:00
s390 S390: Fix build error with gcc6 in utf8_utf16-z9.c. 2015-08-26 10:26:26 +02:00
sh Replace ELF_RTYPE_CLASS_NOCOPY with ELF_RTYPE_CLASS_COPY 2015-03-05 08:40:41 -08:00
sparc Fix BZ #18084 -- backtrace (..., 0) dumps core on x86. 2015-08-15 11:42:43 -07:00
tile tilepro: fix warnings in sysdeps/tile/tilepro/bits/atomic.h 2015-08-04 12:07:53 -04:00
unix powerpc: Revert to default atomic ops in elision code 2015-08-26 14:55:33 -03:00
wordsize-32 Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wordsize-64 Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
x86 Detect and select i586/i686 implementation at run-time 2015-08-27 09:06:44 -07:00
x86_64 Don't disable SSE in x86-64 ld.so 2015-08-26 07:55:42 -07:00