diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2019-06-28 11:29:19 +0100 |
---|---|---|
committer | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2019-07-16 11:01:46 +0100 |
commit | 80792b61024d810c3d36e9a1dd8a166249d8b6e8 (patch) | |
tree | be78e7ecbcaf9e8ee7919502aee4fa0ca30e39b7 /rt/tst-mqueue3.c | |
parent | 1ff1373b3302e9e095dc4fd4d371451c00190780 (diff) | |
download | glibc-80792b61024d810c3d36e9a1dd8a166249d8b6e8.zip glibc-80792b61024d810c3d36e9a1dd8a166249d8b6e8.tar.gz glibc-80792b61024d810c3d36e9a1dd8a166249d8b6e8.tar.bz2 |
Aarch64: Add simd exp/expf ABI symbols
The implementation is in assembly and just calls the scalar math code.
This ensures that old compiler without vector call abi support can
build libmvec. The abi is supported since GCC 9.1, the specification is
https://developer.arm.com/tools-and-software/server-and-hpc/arm-architecture-tools/arm-compiler-for-hpc/vector-function-abi
Vector functions require a STO_AARCH64_VARIANT_PCS marking in the
dynamic symbol table for lazy bound calls to work. This will be
missing in libmvec, which works because the marking only affects
the behaviour if there are calls to the symbols in the binary.
Testing requires vector call abi support, which is detected.
Header declarations are not added yet, so the symbols will not be used
by the compiler: they are just added so the abi is in place which
enables backporting later. Currently we cannot add correct declarations
that only declare the specific symbols we provide: the OpenMP pragma
mechanism would declare both AdvSIMD and SVE variants.
2019-07-15 Steve Ellcey <sellcey@marvell.com>
Szabolcs Nagy <szabolcs.nagy@arm.com>
* sysdeps/aarch64/configure.ac (build_mathvec): Enable.
(test-mathvec): Enable if ABI is supported.
* sysdeps/aarch64/configure: Regenerate.
* sysdeps/aarch64/fpu/Makefile
(libmvec-support): Add libmvec_double_vlen2_exp,
libmvec_float_vlen4_expf to list.
(libmvec_nonshared.a): Use make-dummy-lib.
(libmvec-tests): Add double-vlen2, float-vlen4 to list.
(double-vlen2-funcs): Add new vector function name.
(float-vlen4-funcs): Add new vector function name.
* sysdeps/aarch64/fpu/Versions: New file.
* sysdeps/aarch64/fpu/libmvec_double_vlen2.h: New file.
* sysdeps/aarch64/fpu/libmvec_double_vlen2_exp.S: New file.
* sysdeps/aarch64/fpu/libmvec_float_vlen4.h: New file.
* sysdeps/aarch64/fpu/libmvec_float_vlen4_expf.S: New file.
* sysdeps/aarch64/fpu/test-double-vlen2-wrappers.c: New file.
* sysdeps/aarch64/fpu/test-float-vlen4-wrappers.c: New file.
* sysdeps/aarch64/libm-test-ulps (exp_vlen2): New entry.
(exp_vlen4): Likewise.
* sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: New file.
Diffstat (limited to 'rt/tst-mqueue3.c')
0 files changed, 0 insertions, 0 deletions