unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Sunil K Pandey via Libc-alpha <libc-alpha@sourceware.org>
To: libc-alpha@sourceware.org
Cc: andrey.kolesov@intel.com
Subject: [PATCH v4 0/1] Add vector math function acos/acosf to libmvec
Date: Wed, 15 Dec 2021 16:12:38 -0800	[thread overview]
Message-ID: <20211216001239.3648099-1-skpgkp2@gmail.com> (raw)
In-Reply-To: <CAFUsyfJ+sURnik75vJ5XXpS9FwZruoH4yNOECg6=eH3qH1uASg@mail.gmail.com>

This is single function patch as suggested.  We incorporated following
changes in v4.  Rest of the libmvec patches will follow similar change.
Let me know if it looks reasonable?

Changes from v3:
-  Remove exit call dead code.
-  Remove unnecessary save/restore.

Changes from v2:
-  Keep cfi_escape for callee saved registers only.
-  Add DW_CFA_expression comments corresponding to each cfi_escape.
-  Define macro corresponding to each numeric data table offset.
-  Replace numeric data table offset with macro name.
-  Add data table structure definition as comments.
-  Restructure data table and add comments to each data field value.
-  Rename numeric sequential labels with meaningful label name.
-  Add more comments to labels as well as on call sites.
-  Internal special value processing paths replaced by calls to standard
   scalar math functions, makes code more compact and aligned with
   previous libmvec submission.
  
Changes from v1:
-  Add ISA specific sections for all libmvec functions.
-  Add libmvec functions to math-vector-fortran.h.
-  Change label to sequential.
-  Fix function name in GNU header plate.

This patch implements acos/acosf vector math functions containing
SSE, AVX, AVX2 and AVX512 versions for libmvec as per vector ABI.
It also contains accuracy and ABI tests with regenerated ulps.

Sunil K Pandey (1):
  x86-64: Add vector acos/acosf implementation to libmvec

 bits/libm-simd-decl-stubs.h                   |  11 +
 math/bits/mathcalls.h                         |   2 +-
 .../unix/sysv/linux/x86_64/libmvec.abilist    |   8 +
 sysdeps/x86/fpu/bits/math-vector.h            |   4 +
 .../x86/fpu/finclude/math-vector-fortran.h    |   4 +
 sysdeps/x86_64/fpu/Makeconfig                 |   1 +
 sysdeps/x86_64/fpu/Versions                   |   4 +
 sysdeps/x86_64/fpu/libm-test-ulps             |  20 +
 .../multiarch/.svml_s_acosf4_core_sse4.S.swp  | Bin 0 -> 16384 bytes
 .../fpu/multiarch/ifunc-mathvec-avx512-skx.h  |  39 ++
 .../fpu/multiarch/svml_d_acos2_core-sse2.S    |  20 +
 .../x86_64/fpu/multiarch/svml_d_acos2_core.c  |  27 ++
 .../fpu/multiarch/svml_d_acos2_core_sse4.S    | 369 ++++++++++++++++++
 .../fpu/multiarch/svml_d_acos4_core-sse.S     |  20 +
 .../x86_64/fpu/multiarch/svml_d_acos4_core.c  |  27 ++
 .../fpu/multiarch/svml_d_acos4_core_avx2.S    | 335 ++++++++++++++++
 .../fpu/multiarch/svml_d_acos8_core-avx2.S    |  20 +
 .../x86_64/fpu/multiarch/svml_d_acos8_core.c  |  27 ++
 .../fpu/multiarch/svml_d_acos8_core_avx512.S  | 365 +++++++++++++++++
 .../fpu/multiarch/svml_s_acosf16_core-avx2.S  |  20 +
 .../fpu/multiarch/svml_s_acosf16_core.c       |  28 ++
 .../multiarch/svml_s_acosf16_core_avx512.S    | 311 +++++++++++++++
 .../fpu/multiarch/svml_s_acosf4_core-sse2.S   |  20 +
 .../x86_64/fpu/multiarch/svml_s_acosf4_core.c |  28 ++
 .../fpu/multiarch/svml_s_acosf4_core_sse4.S   | 321 +++++++++++++++
 .../fpu/multiarch/svml_s_acosf8_core-sse.S    |  20 +
 .../x86_64/fpu/multiarch/svml_s_acosf8_core.c |  28 ++
 .../fpu/multiarch/svml_s_acosf8_core_avx2.S   | 299 ++++++++++++++
 sysdeps/x86_64/fpu/svml_d_acos2_core.S        |  29 ++
 sysdeps/x86_64/fpu/svml_d_acos4_core.S        |  29 ++
 sysdeps/x86_64/fpu/svml_d_acos4_core_avx.S    |  25 ++
 sysdeps/x86_64/fpu/svml_d_acos8_core.S        |  25 ++
 sysdeps/x86_64/fpu/svml_s_acosf16_core.S      |  25 ++
 sysdeps/x86_64/fpu/svml_s_acosf4_core.S       |  29 ++
 sysdeps/x86_64/fpu/svml_s_acosf8_core.S       |  29 ++
 sysdeps/x86_64/fpu/svml_s_acosf8_core_avx.S   |  25 ++
 .../x86_64/fpu/test-double-libmvec-acos-avx.c |   1 +
 .../fpu/test-double-libmvec-acos-avx2.c       |   1 +
 .../fpu/test-double-libmvec-acos-avx512f.c    |   1 +
 sysdeps/x86_64/fpu/test-double-libmvec-acos.c |   3 +
 .../x86_64/fpu/test-double-vlen2-wrappers.c   |   1 +
 .../fpu/test-double-vlen4-avx2-wrappers.c     |   1 +
 .../x86_64/fpu/test-double-vlen4-wrappers.c   |   1 +
 .../x86_64/fpu/test-double-vlen8-wrappers.c   |   1 +
 .../x86_64/fpu/test-float-libmvec-acosf-avx.c |   1 +
 .../fpu/test-float-libmvec-acosf-avx2.c       |   1 +
 .../fpu/test-float-libmvec-acosf-avx512f.c    |   1 +
 sysdeps/x86_64/fpu/test-float-libmvec-acosf.c |   3 +
 .../x86_64/fpu/test-float-vlen16-wrappers.c   |   1 +
 .../x86_64/fpu/test-float-vlen4-wrappers.c    |   1 +
 .../fpu/test-float-vlen8-avx2-wrappers.c      |   1 +
 .../x86_64/fpu/test-float-vlen8-wrappers.c    |   1 +
 52 files changed, 2613 insertions(+), 1 deletion(-)
 create mode 100644 sysdeps/x86_64/fpu/multiarch/.svml_s_acosf4_core_sse4.S.swp
 create mode 100644 sysdeps/x86_64/fpu/multiarch/ifunc-mathvec-avx512-skx.h
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core-sse2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos2_core_sse4.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core-sse.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos4_core_avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core-avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acos8_core_avx512.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core-avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf16_core_avx512.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core-sse2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf4_core_sse4.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core-sse.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acosf8_core_avx2.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_acos2_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_acos4_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_acos4_core_avx.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_acos8_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_acosf16_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_acosf4_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_acosf8_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_acosf8_core_avx.S
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acos-avx.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acos-avx2.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acos-avx512f.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acos.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx2.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acosf-avx512f.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acosf.c

-- 
2.31.1


  parent reply	other threads:[~2021-12-16  0:13 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-24 19:37 [PATCH 00/42] x86-64: Add vector math functions to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 01/42] x86-64: Add vector acos/acosf implementation " Sunil K Pandey via Libc-alpha
     [not found]   ` <CAFUsyfKpKz3=q_4JQUGOkUkUDpDUEEr_F9RpnoxJMgmwHfTfjw@mail.gmail.com>
     [not found]     ` <CAFUsyfJqPKwjB0oWDC8Ce8AacyC4wU6JHWeeXASQe-3dGJS9Og@mail.gmail.com>
2021-12-09  2:10       ` Sunil Pandey via Libc-alpha
2021-12-09 18:34         ` Joseph Myers
2021-11-24 19:37 ` [PATCH 02/42] x86-64: Add vector acos/acosf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 03/42] x86-64: Add vector acosh/acoshf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 04/42] x86-64: Add vector acosh/acoshf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 05/42] x86-64: Add vector asin/asinf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 22:51   ` Joseph Myers
2021-11-29 20:56     ` Sunil Pandey via Libc-alpha
2021-12-09  1:08     ` Sunil Pandey via Libc-alpha
2021-12-09  3:38       ` Noah Goldstein via Libc-alpha
2021-12-09 18:38         ` Joseph Myers
2021-12-15 18:54           ` [PATCH v3 0/1] Add vector math function acos/acosf " Sunil K Pandey via Libc-alpha
2021-12-15 18:54             ` [PATCH v3 1/1] x86-64: Add vector acos/acosf implementation " Sunil K Pandey via Libc-alpha
2021-12-15 19:43               ` Noah Goldstein via Libc-alpha
2021-12-15 19:57                 ` Florian Weimer via Libc-alpha
2021-12-15 20:32                   ` Noah Goldstein via Libc-alpha
2021-12-15 22:26                     ` Sunil Pandey via Libc-alpha
2021-12-16  0:12                     ` Sunil K Pandey via Libc-alpha [this message]
2021-12-16  0:12                       ` [PATCH v4 " Sunil K Pandey via Libc-alpha
2021-12-16  0:56                         ` Noah Goldstein via Libc-alpha
2021-12-19 17:11                           ` Sunil Pandey via Libc-alpha
2021-12-19 17:18                           ` [PATCH v5 0/1] Add vector math function acos/acosf " Sunil K Pandey via Libc-alpha
2021-12-19 17:18                             ` [PATCH v5 1/1] x86-64: Add vector acos/acosf implementation " Sunil K Pandey via Libc-alpha
2021-12-19 18:29                               ` Noah Goldstein via Libc-alpha
2021-12-19 20:26                                 ` H.J. Lu via Libc-alpha
2021-12-19 20:42                                   ` Noah Goldstein via Libc-alpha
2021-12-20 16:08                                     ` Sunil Pandey via Libc-alpha
2021-12-20 19:20                                       ` Noah Goldstein via Libc-alpha
2021-12-20 19:36                                         ` Noah Goldstein via Libc-alpha
2021-12-20 20:30                                         ` Sunil Pandey via Libc-alpha
2021-12-21  5:40                                         ` [PATCH v6 0/1] Add vector math function acos/acosf " Sunil K Pandey via Libc-alpha
2021-12-21  5:40                                           ` [PATCH v6 1/1] x86-64: Add vector acos/acosf implementation " Sunil K Pandey via Libc-alpha
2021-12-21  6:44                                           ` [PATCH v6 0/1] Add vector math function acos/acosf " Noah Goldstein via Libc-alpha
2021-12-22  0:15                                             ` H.J. Lu via Libc-alpha
2021-12-22 16:23                                             ` [PATCH v7 " Sunil K Pandey via Libc-alpha
2021-12-22 16:23                                               ` [PATCH v7 1/1] x86-64: Add vector acos/acosf implementation " Sunil K Pandey via Libc-alpha
2021-12-22 20:51                                                 ` H.J. Lu via Libc-alpha
2021-12-16 19:14                         ` [PATCH v4 " Joseph Myers
2021-12-16 21:07                           ` Sunil Pandey via Libc-alpha
2021-12-16 19:18                       ` [PATCH v4 0/1] Add vector math function acos/acosf " Joseph Myers
2021-12-16 21:13                         ` Adhemerval Zanella via Libc-alpha
2021-12-19 20:34                           ` H.J. Lu via Libc-alpha
2021-12-20 19:10                             ` Adhemerval Zanella via Libc-alpha
2021-12-20 19:55                               ` H.J. Lu via Libc-alpha
2021-12-20 21:41                             ` Joseph Myers
2021-12-20 22:07                               ` Cornea, Marius via Libc-alpha
2021-12-20 22:19                                 ` Joseph Myers
2021-12-20 22:42                                   ` Cornea, Marius via Libc-alpha
2021-12-20 22:57                                     ` Joseph Myers
2021-12-20 23:11                                       ` Noah Goldstein via Libc-alpha
2021-12-20 23:58                                         ` H.J. Lu via Libc-alpha
2021-12-15 19:06           ` [PATCH 05/42] x86-64: Add vector asin/asinf implementation " Adhemerval Zanella via Libc-alpha
2021-11-24 19:37 ` [PATCH 06/42] x86-64: Add vector asin/asinf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 07/42] x86-64: Add vector asinh/asinhf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 08/42] x86-64: Add vector asinh/asinhf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 09/42] x86-64: Add vector atan/atanf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 10/42] x86-64: Add vector atan/atanf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 11/42] x86-64: Add vector atan2/atan2f implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 12/42] x86-64: Add vector atan2/atan2f to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 13/42] x86-64: Add vector atanh/atanhf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 14/42] x86-64: Add vector atanh/atanhf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 15/42] x86-64: Add vector cbrt/cbrtf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 16/42] x86-64: Add vector cbrt/cbrtf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 17/42] x86-64: Add vector cosh/coshf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 18/42] x86-64: Add vector cosh/coshf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 19/42] x86-64: Add vector erf/erff implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 20/42] x86-64: Add vector erf/erff to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 21/42] x86-64: Add vector erfc/erfcf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 22/42] x86-64: Add vector erfc/erfcf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 23/42] x86-64: Add vector exp10/exp10f implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 24/42] x86-64: Add vector exp10/exp10f to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 25/42] x86-64: Add vector exp2/exp2f implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 26/42] x86-64: Add vector exp2/exp2f to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 27/42] x86-64: Add vector expm1/expm1f implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 28/42] x86-64: Add vector expm1/expm1f to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 29/42] x86-64: Add vector hypot/hypotf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 30/42] x86-64: Add vector hypot/hypotf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 31/42] x86-64: Add vector log10/log10f implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 32/42] x86-64: Add vector log10/log10f to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 33/42] x86-64: Add vector log1p/log1pf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:37 ` [PATCH 34/42] x86-64: Add vector log1p/log1pf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:38 ` [PATCH 35/42] x86-64: Add vector log2/log2f implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:38 ` [PATCH 36/42] x86-64: Add vector log2/log2f to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:38 ` [PATCH 37/42] x86-64: Add vector sinh/sinhf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:38 ` [PATCH 38/42] x86-64: Add vector sinh/sinhf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:38 ` [PATCH 39/42] x86-64: Add vector tan/tanf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:38 ` [PATCH 40/42] x86-64: Add vector tan/tanf to libmvec microbenchmark Sunil K Pandey via Libc-alpha
2021-11-24 19:38 ` [PATCH 41/42] x86-64: Add vector tanh/tanhf implementation to libmvec Sunil K Pandey via Libc-alpha
2021-11-24 19:38 ` [PATCH 42/42] x86-64: Add vector tanh/tanhf to libmvec microbenchmark Sunil K Pandey via Libc-alpha

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/libc/involved.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211216001239.3648099-1-skpgkp2@gmail.com \
    --to=libc-alpha@sourceware.org \
    --cc=andrey.kolesov@intel.com \
    --cc=skpgkp2@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).