glibc/sysdeps/i386
H.J. Lu 9620398097 x86: Install <sys/platform/x86.h> [BZ #26124]
Install <sys/platform/x86.h> so that programmers can do

 #if __has_include(<sys/platform/x86.h>)
 #include <sys/platform/x86.h>
 #endif
 ...

   if (CPU_FEATURE_USABLE (SSE2))
 ...
   if (CPU_FEATURE_USABLE (AVX2))
 ...

<sys/platform/x86.h> exports only:

enum
{
  COMMON_CPUID_INDEX_1 = 0,
  COMMON_CPUID_INDEX_7,
  COMMON_CPUID_INDEX_80000001,
  COMMON_CPUID_INDEX_D_ECX_1,
  COMMON_CPUID_INDEX_80000007,
  COMMON_CPUID_INDEX_80000008,
  COMMON_CPUID_INDEX_7_ECX_1,
  /* Keep the following line at the end.  */
  COMMON_CPUID_INDEX_MAX
};

struct cpuid_features
{
  struct cpuid_registers cpuid;
  struct cpuid_registers usable;
};

struct cpu_features
{
  struct cpu_features_basic basic;
  struct cpuid_features features[COMMON_CPUID_INDEX_MAX];
};

/* Get a pointer to the CPU features structure.  */
extern const struct cpu_features *__x86_get_cpu_features
  (unsigned int max) __attribute__ ((const));

Since all feature checks are done through macros, programs compiled with
a newer <sys/platform/x86.h> are compatible with the older glibc binaries
as long as the layout of struct cpu_features is identical.  The features
array can be expanded with backward binary compatibility for both .o and
.so files.  When COMMON_CPUID_INDEX_MAX is increased to support new
processor features, __x86_get_cpu_features in the older glibc binaries
returns NULL and HAS_CPU_FEATURE/CPU_FEATURE_USABLE return false on the
new processor feature.  No new symbol version is neeeded.

Both CPU_FEATURE_USABLE and HAS_CPU_FEATURE are provided.  HAS_CPU_FEATURE
can be used to identify processor features.

Note: Although GCC has __builtin_cpu_supports, it only supports a subset
of <sys/platform/x86.h> and it is equivalent to CPU_FEATURE_USABLE.  It
doesn't support HAS_CPU_FEATURE.
2020-09-11 17:20:52 -07:00
..
fpu Update i686 ulps. 2020-09-02 10:00:29 -04:00
htl hurd: fix clearing SS_ONSTACK when longjmp-ing from sighandler 2020-06-06 20:24:30 +02:00
i586 Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
i686 x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
i786
nptl x86: Avoid single-argument _Static_assert in <tls.h> 2020-02-17 11:12:03 +01:00
sys Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
____longjmp_chk.S
__longjmp.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
abort-instr.h
add_n.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
addmul_1.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
asm-syntax.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
backtrace.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
bcopy.S
bsd-_setjmp.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
bsd-setjmp.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
bzero.S
configure
configure.ac
crti.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
crtn.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-irel.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-machine.h x86: Move CET control to _dl_x86_feature_control [BZ #25887] 2020-05-18 06:15:02 -07:00
dl-procinfo.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-tls.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-tlsdesc.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-tlsdesc.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-trampoline.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ffs.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
gccframe.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
htonl.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
htons.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
i386-mcount.S i386-mcount.S: Add _CET_ENDBR to _mcount and __fentry__ 2020-02-01 05:44:55 -08:00
Implies
isa.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
jmpbuf-offsets.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
jmpbuf-unwind.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ldbl2mpn.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
link-defines.sym
lshift.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
machine-gmon.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Makefile x86: Remove the unused __x86_prefetchw 2020-07-11 09:34:03 -07:00
malloc-alignment.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memchr.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memcmp.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memcopy.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memcpy_chk.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memcpy.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memmove_chk.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memmove.S
mempcpy_chk.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mempcpy.S
memset_chk.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memset.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memusage.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mp_clz_tab.c
mul_1.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
preconfigure
pthread_spin_trylock.S linux: Consolidate INLINE_SYSCALL 2020-02-14 21:09:12 -03:00
rawmemchr.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
rshift.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
setfpucw.c x86: Support usable check for all CPU features 2020-07-13 06:05:16 -07:00
setjmp.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
stackguard-macros.h
stackinfo.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
start.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
stpcpy.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
stpncpy.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strcat.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strchr.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strchrnul.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strcspn.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
string-inlines.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strlen.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strlen.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strpbrk.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strrchr.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strspn.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sub_n.S i386/sub_n.S: Add a missing _CET_ENDBR to indirect jump target 2020-02-01 05:44:55 -08:00
submul_1.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
symbol-hacks.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sysdep.h i386: Remove build support for GCC older than GCC 6 2020-04-07 06:44:37 -07:00
tls-macros.h i386: Remove build support for GCC older than GCC 6 2020-04-07 06:44:37 -07:00
tlsdesc.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tlsdesc.sym
tst-audit3.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-audit3.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-audit.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-auditmod3a.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-auditmod3b.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-ld-sse-use.sh Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-stack-align.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Versions