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 /stdlib/sub_n.c | |
parent | 1ff1373b3302e9e095dc4fd4d371451c00190780 (diff) | |
download | glibc-80792b61024d810c3d36e9a1dd8a166249d8b6e8.tar.gz glibc-80792b61024d810c3d36e9a1dd8a166249d8b6e8.tar.xz glibc-80792b61024d810c3d36e9a1dd8a166249d8b6e8.zip |
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 'stdlib/sub_n.c')
0 files changed, 0 insertions, 0 deletions