Support x86-64 assmebler without AVX512

When x86-64 assmebler doesn't support AVX512, we should make
_dl_runtime_resolve_avx512/_dl_runtime_profile_avx512 as aliases of
_dl_runtime_resolve_avx/_dl_runtime_profile_avx.  Tested on x86-64
using GCC 5.2 with binutils 20151008 and GCC 4.8 with binutils 20130219.
There are no differences in ld.so with binutils 20151008.  There are no
unexpected failures with binutils 20130219 and 20151008.

	[BZ #19124]
	* sysdeps/x86_64/dl-trampoline.S [!HAVE_AVX512_ASM_SUPPORT]
	(_dl_runtime_resolve_avx512): Make it a hidden alias of
	_dl_runtime_resolve_avx.
	(_dl_runtime_profile_avx512): Make it a hidden alias of
	_dl_runtime_profile_avx.
This commit is contained in:
H.J. Lu 2015-10-13 10:29:45 -07:00
parent 2020748d8e
commit 0a5768fe9c
3 changed files with 35 additions and 18 deletions

View File

@ -1,3 +1,12 @@
2015-10-13 H.J. Lu <hongjiu.lu@intel.com>
[BZ #19124]
* sysdeps/x86_64/dl-trampoline.S [!HAVE_AVX512_ASM_SUPPORT]
(_dl_runtime_resolve_avx512): Make it a hidden alias of
_dl_runtime_resolve_avx.
(_dl_runtime_profile_avx512): Make it a hidden alias of
_dl_runtime_profile_avx.
2015-10-13 Joseph Myers <joseph@codesourcery.com>
* sysdeps/powerpc/fpu/s_llround.c: Move to ....

2
NEWS
View File

@ -19,7 +19,7 @@ Version 2.23
18870, 18872, 18873, 18875, 18887, 18921, 18951, 18952, 18956, 18961,
18966, 18967, 18969, 18970, 18977, 18980, 18981, 18985, 19003, 19012,
19016, 19018, 19032, 19046, 19049, 19050, 19059, 19071, 19076, 19077,
19078, 19079, 19085, 19086, 19088, 19094, 19095.
19078, 19079, 19085, 19086, 19088, 19094, 19095, 19124
* The obsolete header <regexp.h> has been removed. Programs that require
this header must be updated to use <regex.h> instead.

View File

@ -71,24 +71,32 @@
#define REGISTER_SAVE_R8 (REGISTER_SAVE_RDI + 8)
#define REGISTER_SAVE_R9 (REGISTER_SAVE_R8 + 8)
#define VEC_SIZE 64
#define VMOVA vmovdqa64
#if DL_RUNIME_RESOLVE_REALIGN_STACK || VEC_SIZE <= DL_STACK_ALIGNMENT
# define VMOV vmovdqa64
#else
# define VMOV vmovdqu64
#endif
#define VEC(i) zmm##i
#define _dl_runtime_resolve _dl_runtime_resolve_avx512
#define _dl_runtime_profile _dl_runtime_profile_avx512
#define RESTORE_AVX
#include "dl-trampoline.h"
#undef _dl_runtime_resolve
#undef _dl_runtime_profile
#undef VEC
#undef VMOV
#undef VMOVA
#undef VEC_SIZE
#ifdef HAVE_AVX512_ASM_SUPPORT
# define VEC_SIZE 64
# define VMOVA vmovdqa64
# if DL_RUNIME_RESOLVE_REALIGN_STACK || VEC_SIZE <= DL_STACK_ALIGNMENT
# define VMOV vmovdqa64
# else
# define VMOV vmovdqu64
# endif
# define VEC(i) zmm##i
# define _dl_runtime_resolve _dl_runtime_resolve_avx512
# define _dl_runtime_profile _dl_runtime_profile_avx512
# include "dl-trampoline.h"
# undef _dl_runtime_resolve
# undef _dl_runtime_profile
# undef VEC
# undef VMOV
# undef VMOVA
# undef VEC_SIZE
#else
strong_alias (_dl_runtime_resolve_avx, _dl_runtime_resolve_avx512)
.hidden _dl_runtime_resolve_avx512
strong_alias (_dl_runtime_profile_avx, _dl_runtime_profile_avx512)
.hidden _dl_runtime_profile_avx512
#endif
#define VEC_SIZE 32
#define VMOVA vmovdqa