libatomic: x86_64: Always try ifunc
We used to skip ifunc check when CX16 is available. But now we use CX16+AVX+Intel/AMD for the "perfect" 16b load implementation, so CX16 alone is not a sufficient reason not to use ifunc (see PR104688). This causes a subtle and annoying issue: when GCC is built with a higher -march= setting in CFLAGS_FOR_TARGET, ifunc is disabled and the worst (locked) implementation of __atomic_load_16 is always used. There seems no good way to check if the CPU is Intel or AMD from the built-in macros (maybe we can check every known model like __skylake, __bdver2, ..., but it will be very error-prune and require an update whenever we add the support for a new x86 model). The best thing we can do seems "always try ifunc" here. libatomic/ChangeLog: * configure.tgt: For x86_64, always set try_ifunc=yes.
This commit is contained in:
parent
39adc5eebd
commit
db80262475
1 changed files with 1 additions and 3 deletions
|
@ -100,9 +100,7 @@ EOF
|
|||
fi
|
||||
cat > conftestx.c <<EOF
|
||||
#ifdef __x86_64__
|
||||
#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
|
||||
#error need -mcx16
|
||||
#endif
|
||||
#error ifunc is always wanted for 16B atomic load
|
||||
#else
|
||||
#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
|
||||
#error need -march=i686
|
||||
|
|
Loading…
Add table
Reference in a new issue