diff options
| author | H.J. Lu <hjl.tools@gmail.com> | 2016-03-16 14:24:01 -0700 |
|---|---|---|
| committer | H.J. Lu <hjl.tools@gmail.com> | 2016-03-16 14:24:19 -0700 |
| commit | 86ed888255bcafa7cd3c4eb248815b1ba4eb3699 (patch) | |
| tree | 996b1218916e2f27ca69e4c72d69e511118955a7 | |
| parent | 0863cf2ada0a3944d0381e93d1c35ba6e1d43b53 (diff) | |
| download | glibc-86ed888255bcafa7cd3c4eb248815b1ba4eb3699.tar.xz glibc-86ed888255bcafa7cd3c4eb248815b1ba4eb3699.zip | |
Use JUMPTARGET in x86-64 mathvec
When PLT may be used, JUMPTARGET should be used instead calling the
function directly.
* sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S
(_ZGVbN2v_cos_sse4): Use JUMPTARGET to call cos.
* sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core_avx2.S
(_ZGVdN4v_cos_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core_avx512.S
(_ZGVdN4v_cos): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core_sse4.S
(_ZGVbN2v_exp_sse4): Use JUMPTARGET to call exp.
* sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core_avx2.S
(_ZGVdN4v_exp_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core_avx512.S
(_ZGVdN4v_exp): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_log2_core_sse4.S
(_ZGVbN2v_log_sse4): Use JUMPTARGET to call log.
* sysdeps/x86_64/fpu/multiarch/svml_d_log4_core_avx2.S
(_ZGVdN4v_log_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_log8_core_avx512.S
(_ZGVdN4v_log): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core_sse4.S
(_ZGVbN2vv_pow_sse4): Use JUMPTARGET to call pow.
* sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core_avx2.S
(_ZGVdN4vv_pow_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S
(_ZGVdN4vv_pow): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core_sse4.S
(_ZGVbN2v_sin_sse4): Use JUMPTARGET to call sin.
* sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core_avx2.S
(_ZGVdN4v_sin_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core_avx512.S
(_ZGVdN4v_sin): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core_sse4.S
(_ZGVbN2vvv_sincos_sse4): Use JUMPTARGET to call sin and cos.
* sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core_avx2.S
(_ZGVdN4vvv_sincos_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core_avx512.S
(_ZGVdN4vvv_sincos): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core_avx512.S
(_ZGVdN8v_cosf): Use JUMPTARGET to call cosf.
* sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core_sse4.S
(_ZGVbN4v_cosf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_cosf8_core_avx2.S
(_ZGVdN8v_cosf_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core_avx512.S
(_ZGVdN8v_expf): Use JUMPTARGET to call expf.
* sysdeps/x86_64/fpu/multiarch/svml_s_expf4_core_sse4.S
(_ZGVbN4v_expf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_expf8_core_avx2.S
(_ZGVdN8v_expf_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_logf16_core_avx512.S
(_ZGVdN8v_logf): Use JUMPTARGET to call logf.
* sysdeps/x86_64/fpu/multiarch/svml_s_logf4_core_sse4.S
(_ZGVbN4v_logf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_logf8_core_avx2.S
(_ZGVdN8v_logf_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_powf16_core_avx512.S
(_ZGVdN8vv_powf): Use JUMPTARGET to call powf.
* sysdeps/x86_64/fpu/multiarch/svml_s_powf4_core_sse4.S
(_ZGVbN4vv_powf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_powf8_core_avx2.S
(_ZGVdN8vv_powf_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core_avx512.S
(_ZGVdN8vv_powf): Use JUMPTARGET to call sinf and cosf.
* sysdeps/x86_64/fpu/multiarch/svml_s_sincosf4_core_sse4.S
(_ZGVbN4vvv_sincosf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sincosf8_core_avx2.S
(_ZGVdN8vvv_sincosf_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core_avx512.S
(_ZGVdN8v_sinf): Use JUMPTARGET to call sinf.
* sysdeps/x86_64/fpu/multiarch/svml_s_sinf4_core_sse4.S
(_ZGVbN4v_sinf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sinf8_core_avx2.S
(_ZGVdN8v_sinf_avx2): Likewise.
* sysdeps/x86_64/fpu/svml_d_wrapper_impl.h (WRAPPER_IMPL_SSE2):
Use JUMPTARGET to call callee.
(WRAPPER_IMPL_SSE2_ff): Likewise.
(WRAPPER_IMPL_SSE2_fFF): Likewise.
(WRAPPER_IMPL_AVX): Likewise.
(WRAPPER_IMPL_AVX_ff): Likewise.
(WRAPPER_IMPL_AVX_fFF): Likewise.
(WRAPPER_IMPL_AVX512): Likewise.
(WRAPPER_IMPL_AVX512_ff): Likewise.
* sysdeps/x86_64/fpu/svml_s_wrapper_impl.h (WRAPPER_IMPL_SSE2):
Likewise.
(WRAPPER_IMPL_SSE2_ff): Likewise.
(WRAPPER_IMPL_SSE2_fFF): Likewise.
(WRAPPER_IMPL_AVX): Likewise.
(WRAPPER_IMPL_AVX_ff): Likewise.
(WRAPPER_IMPL_AVX_fFF): Likewise.
(WRAPPER_IMPL_AVX512): Likewise.
(WRAPPER_IMPL_AVX512_ff): Likewise.
(WRAPPER_IMPL_AVX512_fFF): Likewise.
39 files changed, 224 insertions, 130 deletions
@@ -1,3 +1,97 @@ +2016-03-16 H.J. Lu <hongjiu.lu@intel.com> + + * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S + (_ZGVbN2v_cos_sse4): Use JUMPTARGET to call cos. + * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core_avx2.S + (_ZGVdN4v_cos_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core_avx512.S + (_ZGVdN4v_cos): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core_sse4.S + (_ZGVbN2v_exp_sse4): Use JUMPTARGET to call exp. + * sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core_avx2.S + (_ZGVdN4v_exp_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core_avx512.S + (_ZGVdN4v_exp): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_log2_core_sse4.S + (_ZGVbN2v_log_sse4): Use JUMPTARGET to call log. + * sysdeps/x86_64/fpu/multiarch/svml_d_log4_core_avx2.S + (_ZGVdN4v_log_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_log8_core_avx512.S + (_ZGVdN4v_log): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core_sse4.S + (_ZGVbN2vv_pow_sse4): Use JUMPTARGET to call pow. + * sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core_avx2.S + (_ZGVdN4vv_pow_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S + (_ZGVdN4vv_pow): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core_sse4.S + (_ZGVbN2v_sin_sse4): Use JUMPTARGET to call sin. + * sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core_avx2.S + (_ZGVdN4v_sin_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core_avx512.S + (_ZGVdN4v_sin): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core_sse4.S + (_ZGVbN2vvv_sincos_sse4): Use JUMPTARGET to call sin and cos. + * sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core_avx2.S + (_ZGVdN4vvv_sincos_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core_avx512.S + (_ZGVdN4vvv_sincos): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core_avx512.S + (_ZGVdN8v_cosf): Use JUMPTARGET to call cosf. + * sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core_sse4.S + (_ZGVbN4v_cosf_sse4): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_cosf8_core_avx2.S + (_ZGVdN8v_cosf_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core_avx512.S + (_ZGVdN8v_expf): Use JUMPTARGET to call expf. + * sysdeps/x86_64/fpu/multiarch/svml_s_expf4_core_sse4.S + (_ZGVbN4v_expf_sse4): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_expf8_core_avx2.S + (_ZGVdN8v_expf_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_logf16_core_avx512.S + (_ZGVdN8v_logf): Use JUMPTARGET to call logf. + * sysdeps/x86_64/fpu/multiarch/svml_s_logf4_core_sse4.S + (_ZGVbN4v_logf_sse4): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_logf8_core_avx2.S + (_ZGVdN8v_logf_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_powf16_core_avx512.S + (_ZGVdN8vv_powf): Use JUMPTARGET to call powf. + * sysdeps/x86_64/fpu/multiarch/svml_s_powf4_core_sse4.S + (_ZGVbN4vv_powf_sse4): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_powf8_core_avx2.S + (_ZGVdN8vv_powf_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core_avx512.S + (_ZGVdN8vv_powf): Use JUMPTARGET to call sinf and cosf. + * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf4_core_sse4.S + (_ZGVbN4vvv_sincosf_sse4): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf8_core_avx2.S + (_ZGVdN8vvv_sincosf_avx2): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core_avx512.S + (_ZGVdN8v_sinf): Use JUMPTARGET to call sinf. + * sysdeps/x86_64/fpu/multiarch/svml_s_sinf4_core_sse4.S + (_ZGVbN4v_sinf_sse4): Likewise. + * sysdeps/x86_64/fpu/multiarch/svml_s_sinf8_core_avx2.S + (_ZGVdN8v_sinf_avx2): Likewise. + * sysdeps/x86_64/fpu/svml_d_wrapper_impl.h (WRAPPER_IMPL_SSE2): + Use JUMPTARGET to call callee. + (WRAPPER_IMPL_SSE2_ff): Likewise. + (WRAPPER_IMPL_SSE2_fFF): Likewise. + (WRAPPER_IMPL_AVX): Likewise. + (WRAPPER_IMPL_AVX_ff): Likewise. + (WRAPPER_IMPL_AVX_fFF): Likewise. + (WRAPPER_IMPL_AVX512): Likewise. + (WRAPPER_IMPL_AVX512_ff): Likewise. + * sysdeps/x86_64/fpu/svml_s_wrapper_impl.h (WRAPPER_IMPL_SSE2): + Likewise. + (WRAPPER_IMPL_SSE2_ff): Likewise. + (WRAPPER_IMPL_SSE2_fFF): Likewise. + (WRAPPER_IMPL_AVX): Likewise. + (WRAPPER_IMPL_AVX_ff): Likewise. + (WRAPPER_IMPL_AVX_fFF): Likewise. + (WRAPPER_IMPL_AVX512): Likewise. + (WRAPPER_IMPL_AVX512_ff): Likewise. + (WRAPPER_IMPL_AVX512_fFF): Likewise. + 2016-03-16 Samuel Thibault <samuel.thibault@ens-lyon.org> * sysdeps/mach/hurd/openat.c (__openat): Add missing ellipsis. diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S index 088fcae067..4d2ebf7aaf 100644 --- a/sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S @@ -205,7 +205,7 @@ ENTRY (_ZGVbN2v_cos_sse4) shlq $4, %r15 movsd 200(%rsp,%r15), %xmm0 - call cos@PLT + call JUMPTARGET(cos) movsd %xmm0, 264(%rsp,%r15) jmp .LBL_1_8 @@ -215,7 +215,7 @@ ENTRY (_ZGVbN2v_cos_sse4) shlq $4, %r15 movsd 192(%rsp,%r15), %xmm0 - call cos@PLT + call JUMPTARGET(cos) movsd %xmm0, 256(%rsp,%r15) jmp .LBL_1_7 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core_avx2.S index 4e653216d9..54f7e5e89e 100644 --- a/sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core_avx2.S +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core_avx2.S @@ -188,7 +188,7 @@ ENTRY (_ZGVdN4v_cos_avx2) vmovsd 328(%rsp,%r15), %xmm0 vzeroupper - call cos@PLT + call JUMPTARGET(cos) vmovsd %xmm0, 392(%rsp,%r15) jmp .LBL_1_8 @@ -199,7 +199,7 @@ ENTRY (_ZGVdN4v_cos_avx2) vmovsd 320(%rsp,%r15), %xmm0 vzeroupper - call cos@PLT + call JUMPTARGET(cos) vmovsd %xmm0, 384(%rsp,%r15) jmp .LBL_1_7 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core_avx512.S index 1cac1d827a..874bd80d23 100644 --- a/sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core_avx512.S +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core_avx512.S @@ -221,7 +221,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN4v_cos movzbl %r12b, %r15d shlq $4, %r15 vmovsd 1160(%rsp,%r15), %xmm0 - call cos@PLT + call JUMPTARGET(cos) vmovsd %xmm0, 1224(%rsp,%r15) jmp .LBL_1_8 @@ -229,7 +229,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN4v_cos movzbl %r12b, %r15d shlq $4, %r15 vmovsd 1152(%rsp,%r15), %xmm0 - call cos@PLT + call JUMPTARGET(cos) vmovsd %xmm0, 1216(%rsp,%r15) jmp .LBL_1_7 #endif @@ -438,7 +438,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN4v_cos vzeroupper vmovsd 1160(%rsp,%r15), %xmm0 - call cos@PLT + call JUMPTARGET(cos) vmovsd %xmm0, 1224(%rsp,%r15) jmp .LBL_2_8 @@ -450,7 +450,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN4v_cos vzeroupper vmovsd 1152(%rsp,%r15), %xmm0 - call cos@PLT + call JUMPTARGET(cos) vmovsd %xmm0, 1216(%rsp,%r15) jmp .LBL_2_7 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core_sse4.S index 445b230152..9a779593cd 100644 --- a/sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core_sse4.S +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core_sse4.S @@ -207,7 +207,7 @@ ENTRY (_ZGVbN2v_exp_sse4) shlq $4, %r15 movsd 200(%rsp,%r15), %xmm0 - call exp@PLT + call JUMPTARGET(exp) movsd %xmm0, 264(%rsp,%r15) jmp .LBL_1_8 @@ -217,7 +217,7 @@ ENTRY (_ZGVbN2v_exp_sse4) shlq $4, %r15 movsd 192(%rsp,%r15), %xmm0 - call exp@PLT + call JUMPTARGET(exp) movsd %xmm0, 256(%rsp,%r15) jmp .LBL_1_7 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core_avx2.S index 25f9e28941..2a35fe3846 100644 --- a/sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core_avx2.S +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core_avx2.S @@ -193,7 +193,7 @@ ENTRY (_ZGVdN4v_exp_avx2) vmovsd 328(%rsp,%r15), %xmm0 vzeroupper - call exp@PLT + call JUMPTARGET(exp) vmovsd %xmm0, 392(%rsp,%r15) jmp .LBL_1_8 @@ -204,7 +204,7 @@ ENTRY (_ZGVdN4v_exp_avx2) vmovsd 320(%rsp,%r15), %xmm0 vzeroupper - call exp@PLT + call JUMPTARGET(exp) vmovsd %xmm0, 384(%rsp,%r15) jmp .LBL_1_7 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core_avx512.S index 74f1d2ce7b..456792dec6 100644 --- a/sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core_avx512.S +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core_avx512.S @@ -223,7 +223,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN4v_exp movzbl %r12b, %r15d shlq $4, %r15 vmovsd 1160(%rsp,%r15), %xmm0 - call exp@PLT + call JUMPTARGET(exp) vmovsd %xmm0, 1224(%rsp,%r15) jmp .LBL_1_8 @@ -231,7 +231,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN4v_exp movzbl %r12b, %r15d shlq $4, %r15 vmovsd 1152(%rsp,%r15), %xmm0 - call exp@PLT + call JUMPTARGET(exp) vmovsd %xmm0, 1216(%rsp,%r15) jmp .LBL_1_7 #endif @@ -438,7 +438,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN4v_exp vmovsd 1160(%rsp,%r15), %xmm0 vzeroupper vmovsd 1160(%rsp,%r15), %xmm0 - call exp@PLT + call JUMPTARGET(exp) vmovsd %xmm0, 1224(%rsp,%r15) jmp .LBL_2_8 @@ -448,7 +448,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN4v_exp vmovsd 1152(%rsp,%r15), %xmm0 vzeroupper vmovsd 1152(%rsp,%r15), %xmm0 - call exp@PLT + call JUMPTARGET(exp) vmovsd %xmm0, 12 |
