about summary refs log tree commit diff
path: root/sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S
diff options
context:
space:
mode:
authorAndrew Senkevich <andrew.senkevich@intel.com>2016-08-02 16:35:25 +0300
committerAndrew Senkevich <andrew.senkevich@intel.com>2016-08-02 16:35:25 +0300
commit533f9bebf969060e64c66681e275c03d6e49fcc9 (patch)
tree500694859540a9f7583760f1a99af70044ca726b /sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S
parentf88aab5d508c13ae4a88124e65773d7d827cd47b (diff)
downloadglibc-533f9bebf969060e64c66681e275c03d6e49fcc9.tar.gz
glibc-533f9bebf969060e64c66681e275c03d6e49fcc9.tar.xz
glibc-533f9bebf969060e64c66681e275c03d6e49fcc9.zip
x86_64: Call finite scalar versions in vectorized log, pow, exp (bz #20033).
Vector math functions require -ffast-math which sets -ffinite-math-only,
so it is needed to call finite scalar versions (which are called from
vector functions in some cases).

Since finite version of pow() returns qNaN instead of 1.0 for several
inputs, those inputs are excluded for tests of vector math functions.

    [BZ #20033]
    * sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core_sse4.S: Call
    finite version.
    * sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_log2_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_log4_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_log8_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_expf4_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_expf8_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_logf16_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_logf4_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_logf8_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_powf16_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_powf4_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_powf8_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/svml_d_exp2_core.S: Likewise.
    * sysdeps/x86_64/fpu/svml_d_log2_core.S: Likewise.
    * sysdeps/x86_64/fpu/svml_d_pow2_core.S: Likewise.
    * sysdeps/x86_64/fpu/svml_s_expf4_core.S: Likewise.
    * sysdeps/x86_64/fpu/svml_s_logf4_core.S: Likewise.
    * sysdeps/x86_64/fpu/svml_s_powf4_core.S: Likewise.
    * math/libm-test.inc (pow_test_data): Exclude tests for qNaN
    in power zero.
Diffstat (limited to 'sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S')
-rw-r--r--sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S8
1 files changed, 4 insertions, 4 deletions
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S
index c6b6474438..026feee1ca 100644
--- a/sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S
@@ -392,7 +392,7 @@ WRAPPER_IMPL_AVX512_ff _ZGVdN4vv_pow
         shlq      $4, %r15
         vmovsd    1160(%rsp,%r15), %xmm0
         vmovsd    1224(%rsp,%r15), %xmm1
-        call      JUMPTARGET(pow)
+        call      JUMPTARGET(__pow_finite)
         vmovsd    %xmm0, 1288(%rsp,%r15)
         jmp       .LBL_1_8
 
@@ -401,7 +401,7 @@ WRAPPER_IMPL_AVX512_ff _ZGVdN4vv_pow
         shlq      $4, %r15
         vmovsd    1152(%rsp,%r15), %xmm0
         vmovsd    1216(%rsp,%r15), %xmm1
-        call      JUMPTARGET(pow)
+        call      JUMPTARGET(__pow_finite)
         vmovsd    %xmm0, 1280(%rsp,%r15)
         jmp       .LBL_1_7
 
@@ -720,7 +720,7 @@ WRAPPER_IMPL_AVX512_ff _ZGVdN4vv_pow
         vzeroupper
         vmovsd    1160(%rsp,%r15), %xmm0
 
-        call      JUMPTARGET(pow)
+        call      JUMPTARGET(__pow_finite)
 
         vmovsd    %xmm0, 1288(%rsp,%r15)
         jmp       .LBL_2_8
@@ -732,7 +732,7 @@ WRAPPER_IMPL_AVX512_ff _ZGVdN4vv_pow
         vzeroupper
         vmovsd    1152(%rsp,%r15), %xmm0
 
-        call      JUMPTARGET(pow)
+        call      JUMPTARGET(__pow_finite)
 
         vmovsd    %xmm0, 1280(%rsp,%r15)
         jmp       .LBL_2_7