Message ID | 20211020212218.2834086-1-skpgkp2@gmail.com |
---|---|
State | New |
Headers | show |
Series | x86_64: Add missing libmvec ABI tests | expand |
On Wed, Oct 20, 2021 at 4:22 PM Sunil K Pandey <skpgkp2@gmail.com> wrote: > > Add vector ABI tests for cos, exp, log, pow and sin functions. > --- > sysdeps/x86_64/fpu/Makeconfig | 11 ++--- > .../x86_64/fpu/test-double-libmvec-cos-avx.c | 1 + > .../x86_64/fpu/test-double-libmvec-cos-avx2.c | 1 + > .../fpu/test-double-libmvec-cos-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-double-libmvec-cos.c | 3 ++ > .../x86_64/fpu/test-double-libmvec-exp-avx.c | 1 + > .../x86_64/fpu/test-double-libmvec-exp-avx2.c | 1 + > .../fpu/test-double-libmvec-exp-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-double-libmvec-exp.c | 3 ++ > .../x86_64/fpu/test-double-libmvec-log-avx.c | 1 + > .../x86_64/fpu/test-double-libmvec-log-avx2.c | 1 + > .../fpu/test-double-libmvec-log-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-double-libmvec-log.c | 3 ++ > .../x86_64/fpu/test-double-libmvec-pow-avx.c | 1 + > .../x86_64/fpu/test-double-libmvec-pow-avx2.c | 1 + > .../fpu/test-double-libmvec-pow-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-double-libmvec-pow.c | 3 ++ > .../x86_64/fpu/test-double-libmvec-sin-avx.c | 1 + > .../x86_64/fpu/test-double-libmvec-sin-avx2.c | 1 + > .../fpu/test-double-libmvec-sin-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-double-libmvec-sin.c | 3 ++ > .../x86_64/fpu/test-float-libmvec-cosf-avx.c | 1 + > .../x86_64/fpu/test-float-libmvec-cosf-avx2.c | 1 + > .../fpu/test-float-libmvec-cosf-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-float-libmvec-cosf.c | 3 ++ > .../x86_64/fpu/test-float-libmvec-expf-avx.c | 1 + > .../x86_64/fpu/test-float-libmvec-expf-avx2.c | 1 + > .../fpu/test-float-libmvec-expf-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-float-libmvec-expf.c | 3 ++ > .../x86_64/fpu/test-float-libmvec-logf-avx.c | 1 + > .../x86_64/fpu/test-float-libmvec-logf-avx2.c | 1 + > .../fpu/test-float-libmvec-logf-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-float-libmvec-logf.c | 3 ++ > .../x86_64/fpu/test-float-libmvec-powf-avx.c | 1 + > .../x86_64/fpu/test-float-libmvec-powf-avx2.c | 1 + > .../fpu/test-float-libmvec-powf-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-float-libmvec-powf.c | 3 ++ > .../x86_64/fpu/test-float-libmvec-sinf-avx.c | 1 + > .../x86_64/fpu/test-float-libmvec-sinf-avx2.c | 1 + > .../fpu/test-float-libmvec-sinf-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-float-libmvec-sinf.c | 3 ++ > sysdeps/x86_64/fpu/test-vector-abi-arg1.h | 43 +++++++++++++++++ > sysdeps/x86_64/fpu/test-vector-abi-arg2.h | 46 +++++++++++++++++++ > 43 files changed, 152 insertions(+), 8 deletions(-) > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg1.h > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg2.h > > diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig > index 0a9341cdd9..24aaee1a43 100644 > --- a/sysdeps/x86_64/fpu/Makeconfig > +++ b/sysdeps/x86_64/fpu/Makeconfig > @@ -29,15 +29,10 @@ libmvec-funcs = \ > sin \ > sincos \ > > -# FIXME: Add ABI tests for all libmvec functions and replace > -# libmvec-abi-funcs with libmvec-funcs. > -libmvec-abi-funcs = \ > - sincos > - > # The base libmvec ABI tests. > libmvec-abi-func-tests = \ > - $(addprefix test-double-libmvec-,$(libmvec-abi-funcs)) \ > - $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-abi-funcs))) > + $(addprefix test-double-libmvec-,$(libmvec-funcs)) \ > + $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-funcs))) > > # The AVX libmvec ABI tests. > libmvec-abi-func-avx-tests = \ > @@ -62,7 +57,7 @@ $(common-objpfx)libmvec.mk: $(common-objpfx)config.make > echo; \ > done; \ > done; \ > - for t in $(libmvec-abi-funcs); do \ > + for t in $(libmvec-funcs); do \ > echo "CFLAGS-test-double-libmvec-$$t.c = \\"; \ > echo " \$$(libmvec-abi-test-cflags)"; \ > echo "CFLAGS-test-double-libmvec-$$t-avx.c = \\"; \ > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > new file mode 100644 > index 0000000000..f2b3e8e883 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-cos.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > new file mode 100644 > index 0000000000..f2b3e8e883 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-cos.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > new file mode 100644 > index 0000000000..f2b3e8e883 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-cos.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c > new file mode 100644 > index 0000000000..ebc688163e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE double > +#define LIBMVEC_FUNC cos > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > new file mode 100644 > index 0000000000..fb485c3558 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-exp.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > new file mode 100644 > index 0000000000..fb485c3558 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-exp.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > new file mode 100644 > index 0000000000..fb485c3558 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-exp.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c > new file mode 100644 > index 0000000000..fd8143aacc > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE double > +#define LIBMVEC_FUNC exp > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > new file mode 100644 > index 0000000000..1acdf16a6e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-log.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > new file mode 100644 > index 0000000000..1acdf16a6e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-log.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > new file mode 100644 > index 0000000000..1acdf16a6e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-log.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log.c b/sysdeps/x86_64/fpu/test-double-libmvec-log.c > new file mode 100644 > index 0000000000..a17a02ca66 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE double > +#define LIBMVEC_FUNC log > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > new file mode 100644 > index 0000000000..7c921ccad5 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-pow.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > new file mode 100644 > index 0000000000..7c921ccad5 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-pow.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > new file mode 100644 > index 0000000000..7c921ccad5 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-pow.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c > new file mode 100644 > index 0000000000..c70e24b663 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE double > +#define LIBMVEC_FUNC pow > +#include "test-vector-abi-arg2.h" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > new file mode 100644 > index 0000000000..c785cd0445 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-sin.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > new file mode 100644 > index 0000000000..c785cd0445 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-sin.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > new file mode 100644 > index 0000000000..c785cd0445 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-sin.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c > new file mode 100644 > index 0000000000..bc2fb3c614 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE double > +#define LIBMVEC_FUNC sin > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > new file mode 100644 > index 0000000000..928f4b607b > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-cosf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > new file mode 100644 > index 0000000000..928f4b607b > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-cosf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > new file mode 100644 > index 0000000000..928f4b607b > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-cosf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > new file mode 100644 > index 0000000000..d8ecea7e6a > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE float > +#define LIBMVEC_FUNC cosf > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > new file mode 100644 > index 0000000000..9e0b6d667c > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-expf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > new file mode 100644 > index 0000000000..9e0b6d667c > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-expf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > new file mode 100644 > index 0000000000..9e0b6d667c > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-expf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c > new file mode 100644 > index 0000000000..0c21b9ae83 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE float > +#define LIBMVEC_FUNC expf > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > new file mode 100644 > index 0000000000..92767c9462 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-logf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > new file mode 100644 > index 0000000000..92767c9462 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-logf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > new file mode 100644 > index 0000000000..92767c9462 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-logf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c > new file mode 100644 > index 0000000000..964d869e72 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE float > +#define LIBMVEC_FUNC logf > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > new file mode 100644 > index 0000000000..e00d4e73e0 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-powf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > new file mode 100644 > index 0000000000..e00d4e73e0 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-powf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > new file mode 100644 > index 0000000000..e00d4e73e0 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-powf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c > new file mode 100644 > index 0000000000..ef8559b0ca > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE float > +#define LIBMVEC_FUNC powf > +#include "test-vector-abi-arg2.h" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > new file mode 100644 > index 0000000000..302886760e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-sinf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > new file mode 100644 > index 0000000000..302886760e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-sinf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > new file mode 100644 > index 0000000000..302886760e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-sinf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > new file mode 100644 > index 0000000000..00d3255ccf > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE float > +#define LIBMVEC_FUNC sinf > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg1.h b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h > new file mode 100644 > index 0000000000..962fafcd0b > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h > @@ -0,0 +1,43 @@ > +/* Test for vector ABI with a single argument. > + Copyright (C) 2016-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +#include <math.h> > +#include <support/test-driver.h> > + > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, which > + defines do_test, reference support_test_main here to include it to > + avoid undefined reference to support_test_main. The libmvec ABI test > + doesn't need other symbols in libsupport_nonshared.a. */ > +__typeof (support_test_main) *support_test_main_p = support_test_main; > + > +#define N 1000 > +LIBMVEC_TYPE x[N], c[N]; > + > +int > +test_vector_abi (void) > +{ > + int i; > + for(i = 0; i < N; i++) > + c[i] = i / 3; > + > +#pragma omp simd Do we need this? > + for(i = 0; i < N; i++) > + x[i] = LIBMVEC_FUNC (c[i]); > + > + return 0; > +} > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg2.h b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h > new file mode 100644 > index 0000000000..4b7e10d26b > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h > @@ -0,0 +1,46 @@ > +/* Test for vector ABI with 2 arguments. > + Copyright (C) 2016-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +#include <math.h> > +#include <support/test-driver.h> > + > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, which > + defines do_test, reference support_test_main here to include it to > + avoid undefined reference to support_test_main. The libmvec ABI test > + doesn't need other symbols in libsupport_nonshared.a. */ > +__typeof (support_test_main) *support_test_main_p = support_test_main; > + > +#define N 1000 > +LIBMVEC_TYPE x[N], s[N], c[N]; > + > +int > +test_vector_abi (void) > +{ > + int i; > + for(i = 0; i < N; i++) > + { > + c[i] = i / 3; Is there a reason for 'i / 3'? > + s[i] = c[i]; > + } > + > +#pragma omp simd Do we need this? > + for(i = 0; i < N; i++) > + x[i] = LIBMVEC_FUNC (s[i], c[i]); > + > + return 0; > +} > -- > 2.31.1 >
On Wed, Oct 20, 2021 at 3:48 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > On Wed, Oct 20, 2021 at 4:22 PM Sunil K Pandey <skpgkp2@gmail.com> wrote: > > > > Add vector ABI tests for cos, exp, log, pow and sin functions. > > --- > > sysdeps/x86_64/fpu/Makeconfig | 11 ++--- > > .../x86_64/fpu/test-double-libmvec-cos-avx.c | 1 + > > .../x86_64/fpu/test-double-libmvec-cos-avx2.c | 1 + > > .../fpu/test-double-libmvec-cos-avx512f.c | 1 + > > sysdeps/x86_64/fpu/test-double-libmvec-cos.c | 3 ++ > > .../x86_64/fpu/test-double-libmvec-exp-avx.c | 1 + > > .../x86_64/fpu/test-double-libmvec-exp-avx2.c | 1 + > > .../fpu/test-double-libmvec-exp-avx512f.c | 1 + > > sysdeps/x86_64/fpu/test-double-libmvec-exp.c | 3 ++ > > .../x86_64/fpu/test-double-libmvec-log-avx.c | 1 + > > .../x86_64/fpu/test-double-libmvec-log-avx2.c | 1 + > > .../fpu/test-double-libmvec-log-avx512f.c | 1 + > > sysdeps/x86_64/fpu/test-double-libmvec-log.c | 3 ++ > > .../x86_64/fpu/test-double-libmvec-pow-avx.c | 1 + > > .../x86_64/fpu/test-double-libmvec-pow-avx2.c | 1 + > > .../fpu/test-double-libmvec-pow-avx512f.c | 1 + > > sysdeps/x86_64/fpu/test-double-libmvec-pow.c | 3 ++ > > .../x86_64/fpu/test-double-libmvec-sin-avx.c | 1 + > > .../x86_64/fpu/test-double-libmvec-sin-avx2.c | 1 + > > .../fpu/test-double-libmvec-sin-avx512f.c | 1 + > > sysdeps/x86_64/fpu/test-double-libmvec-sin.c | 3 ++ > > .../x86_64/fpu/test-float-libmvec-cosf-avx.c | 1 + > > .../x86_64/fpu/test-float-libmvec-cosf-avx2.c | 1 + > > .../fpu/test-float-libmvec-cosf-avx512f.c | 1 + > > sysdeps/x86_64/fpu/test-float-libmvec-cosf.c | 3 ++ > > .../x86_64/fpu/test-float-libmvec-expf-avx.c | 1 + > > .../x86_64/fpu/test-float-libmvec-expf-avx2.c | 1 + > > .../fpu/test-float-libmvec-expf-avx512f.c | 1 + > > sysdeps/x86_64/fpu/test-float-libmvec-expf.c | 3 ++ > > .../x86_64/fpu/test-float-libmvec-logf-avx.c | 1 + > > .../x86_64/fpu/test-float-libmvec-logf-avx2.c | 1 + > > .../fpu/test-float-libmvec-logf-avx512f.c | 1 + > > sysdeps/x86_64/fpu/test-float-libmvec-logf.c | 3 ++ > > .../x86_64/fpu/test-float-libmvec-powf-avx.c | 1 + > > .../x86_64/fpu/test-float-libmvec-powf-avx2.c | 1 + > > .../fpu/test-float-libmvec-powf-avx512f.c | 1 + > > sysdeps/x86_64/fpu/test-float-libmvec-powf.c | 3 ++ > > .../x86_64/fpu/test-float-libmvec-sinf-avx.c | 1 + > > .../x86_64/fpu/test-float-libmvec-sinf-avx2.c | 1 + > > .../fpu/test-float-libmvec-sinf-avx512f.c | 1 + > > sysdeps/x86_64/fpu/test-float-libmvec-sinf.c | 3 ++ > > sysdeps/x86_64/fpu/test-vector-abi-arg1.h | 43 +++++++++++++++++ > > sysdeps/x86_64/fpu/test-vector-abi-arg2.h | 46 +++++++++++++++++++ > > 43 files changed, 152 insertions(+), 8 deletions(-) > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg1.h > > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg2.h > > > > diff --git a/sysdeps/x86_64/fpu/Makeconfig > b/sysdeps/x86_64/fpu/Makeconfig > > index 0a9341cdd9..24aaee1a43 100644 > > --- a/sysdeps/x86_64/fpu/Makeconfig > > +++ b/sysdeps/x86_64/fpu/Makeconfig > > @@ -29,15 +29,10 @@ libmvec-funcs = \ > > sin \ > > sincos \ > > > > -# FIXME: Add ABI tests for all libmvec functions and replace > > -# libmvec-abi-funcs with libmvec-funcs. > > -libmvec-abi-funcs = \ > > - sincos > > - > > # The base libmvec ABI tests. > > libmvec-abi-func-tests = \ > > - $(addprefix test-double-libmvec-,$(libmvec-abi-funcs)) \ > > - $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-abi-funcs))) > > + $(addprefix test-double-libmvec-,$(libmvec-funcs)) \ > > + $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-funcs))) > > > > # The AVX libmvec ABI tests. > > libmvec-abi-func-avx-tests = \ > > @@ -62,7 +57,7 @@ $(common-objpfx)libmvec.mk: > $(common-objpfx)config.make > > echo; \ > > done; \ > > done; \ > > - for t in $(libmvec-abi-funcs); do \ > > + for t in $(libmvec-funcs); do \ > > echo "CFLAGS-test-double-libmvec-$$t.c = \\"; \ > > echo " \$$(libmvec-abi-test-cflags)"; \ > > echo "CFLAGS-test-double-libmvec-$$t-avx.c = \\"; \ > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > > new file mode 100644 > > index 0000000000..f2b3e8e883 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-cos.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > > new file mode 100644 > > index 0000000000..f2b3e8e883 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-cos.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > > new file mode 100644 > > index 0000000000..f2b3e8e883 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-cos.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos.c > b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c > > new file mode 100644 > > index 0000000000..ebc688163e > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c > > @@ -0,0 +1,3 @@ > > +#define LIBMVEC_TYPE double > > +#define LIBMVEC_FUNC cos > > +#include "test-vector-abi-arg1.h" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > > new file mode 100644 > > index 0000000000..fb485c3558 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-exp.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > > new file mode 100644 > > index 0000000000..fb485c3558 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-exp.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > > new file mode 100644 > > index 0000000000..fb485c3558 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-exp.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp.c > b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c > > new file mode 100644 > > index 0000000000..fd8143aacc > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c > > @@ -0,0 +1,3 @@ > > +#define LIBMVEC_TYPE double > > +#define LIBMVEC_FUNC exp > > +#include "test-vector-abi-arg1.h" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > > new file mode 100644 > > index 0000000000..1acdf16a6e > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-log.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > > new file mode 100644 > > index 0000000000..1acdf16a6e > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-log.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > > new file mode 100644 > > index 0000000000..1acdf16a6e > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-log.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log.c > b/sysdeps/x86_64/fpu/test-double-libmvec-log.c > > new file mode 100644 > > index 0000000000..a17a02ca66 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log.c > > @@ -0,0 +1,3 @@ > > +#define LIBMVEC_TYPE double > > +#define LIBMVEC_FUNC log > > +#include "test-vector-abi-arg1.h" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > > new file mode 100644 > > index 0000000000..7c921ccad5 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-pow.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > > new file mode 100644 > > index 0000000000..7c921ccad5 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-pow.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > > new file mode 100644 > > index 0000000000..7c921ccad5 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-pow.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow.c > b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c > > new file mode 100644 > > index 0000000000..c70e24b663 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c > > @@ -0,0 +1,3 @@ > > +#define LIBMVEC_TYPE double > > +#define LIBMVEC_FUNC pow > > +#include "test-vector-abi-arg2.h" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > > new file mode 100644 > > index 0000000000..c785cd0445 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-sin.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > > new file mode 100644 > > index 0000000000..c785cd0445 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-sin.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > > new file mode 100644 > > index 0000000000..c785cd0445 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > > @@ -0,0 +1 @@ > > +#include "test-double-libmvec-sin.c" > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin.c > b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c > > new file mode 100644 > > index 0000000000..bc2fb3c614 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c > > @@ -0,0 +1,3 @@ > > +#define LIBMVEC_TYPE double > > +#define LIBMVEC_FUNC sin > > +#include "test-vector-abi-arg1.h" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > > new file mode 100644 > > index 0000000000..928f4b607b > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-cosf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > > new file mode 100644 > > index 0000000000..928f4b607b > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-cosf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > > new file mode 100644 > > index 0000000000..928f4b607b > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-cosf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > > new file mode 100644 > > index 0000000000..d8ecea7e6a > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > > @@ -0,0 +1,3 @@ > > +#define LIBMVEC_TYPE float > > +#define LIBMVEC_FUNC cosf > > +#include "test-vector-abi-arg1.h" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > > new file mode 100644 > > index 0000000000..9e0b6d667c > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-expf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > > new file mode 100644 > > index 0000000000..9e0b6d667c > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-expf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > > new file mode 100644 > > index 0000000000..9e0b6d667c > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-expf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf.c > b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c > > new file mode 100644 > > index 0000000000..0c21b9ae83 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c > > @@ -0,0 +1,3 @@ > > +#define LIBMVEC_TYPE float > > +#define LIBMVEC_FUNC expf > > +#include "test-vector-abi-arg1.h" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > > new file mode 100644 > > index 0000000000..92767c9462 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-logf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > > new file mode 100644 > > index 0000000000..92767c9462 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-logf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > > new file mode 100644 > > index 0000000000..92767c9462 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-logf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf.c > b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c > > new file mode 100644 > > index 0000000000..964d869e72 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c > > @@ -0,0 +1,3 @@ > > +#define LIBMVEC_TYPE float > > +#define LIBMVEC_FUNC logf > > +#include "test-vector-abi-arg1.h" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > > new file mode 100644 > > index 0000000000..e00d4e73e0 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-powf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > > new file mode 100644 > > index 0000000000..e00d4e73e0 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-powf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > > new file mode 100644 > > index 0000000000..e00d4e73e0 > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-powf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf.c > b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c > > new file mode 100644 > > index 0000000000..ef8559b0ca > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c > > @@ -0,0 +1,3 @@ > > +#define LIBMVEC_TYPE float > > +#define LIBMVEC_FUNC powf > > +#include "test-vector-abi-arg2.h" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > > new file mode 100644 > > index 0000000000..302886760e > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-sinf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > > new file mode 100644 > > index 0000000000..302886760e > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-sinf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > > new file mode 100644 > > index 0000000000..302886760e > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > > @@ -0,0 +1 @@ > > +#include "test-float-libmvec-sinf.c" > > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > > new file mode 100644 > > index 0000000000..00d3255ccf > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > > @@ -0,0 +1,3 @@ > > +#define LIBMVEC_TYPE float > > +#define LIBMVEC_FUNC sinf > > +#include "test-vector-abi-arg1.h" > > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg1.h > b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h > > new file mode 100644 > > index 0000000000..962fafcd0b > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h > > @@ -0,0 +1,43 @@ > > +/* Test for vector ABI with a single argument. > > + Copyright (C) 2016-2021 Free Software Foundation, Inc. > > + This file is part of the GNU C Library. > > + > > + The GNU C Library is free software; you can redistribute it and/or > > + modify it under the terms of the GNU Lesser General Public > > + License as published by the Free Software Foundation; either > > + version 2.1 of the License, or (at your option) any later version. > > + > > + The GNU C Library is distributed in the hope that it will be useful, > > + but WITHOUT ANY WARRANTY; without even the implied warranty of > > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > > + Lesser General Public License for more details. > > + > > + You should have received a copy of the GNU Lesser General Public > > + License along with the GNU C Library; if not, see > > + <https://www.gnu.org/licenses/>. */ > > + > > +#include <math.h> > > +#include <support/test-driver.h> > > + > > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, which > > + defines do_test, reference support_test_main here to include it to > > + avoid undefined reference to support_test_main. The libmvec ABI test > > + doesn't need other symbols in libsupport_nonshared.a. */ > > +__typeof (support_test_main) *support_test_main_p = support_test_main; > > + > > +#define N 1000 > > +LIBMVEC_TYPE x[N], c[N]; > > + > > +int > > +test_vector_abi (void) > > +{ > > + int i; > > + for(i = 0; i < N; i++) > > + c[i] = i / 3; > > + > > +#pragma omp simd > > Do we need this? > Yes, omp pragma forces function to vectorize. Without it, depending on the gcc version it may or may not vectorize. For libmvec ABI test LIBMVEC_FUNC needs to be vectorized. https://sourceware.org/glibc/wiki/libmvec > > + for(i = 0; i < N; i++) > > + x[i] = LIBMVEC_FUNC (c[i]); > > + > > + return 0; > > +} > > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg2.h > b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h > > new file mode 100644 > > index 0000000000..4b7e10d26b > > --- /dev/null > > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h > > @@ -0,0 +1,46 @@ > > +/* Test for vector ABI with 2 arguments. > > + Copyright (C) 2016-2021 Free Software Foundation, Inc. > > + This file is part of the GNU C Library. > > + > > + The GNU C Library is free software; you can redistribute it and/or > > + modify it under the terms of the GNU Lesser General Public > > + License as published by the Free Software Foundation; either > > + version 2.1 of the License, or (at your option) any later version. > > + > > + The GNU C Library is distributed in the hope that it will be useful, > > + but WITHOUT ANY WARRANTY; without even the implied warranty of > > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > > + Lesser General Public License for more details. > > + > > + You should have received a copy of the GNU Lesser General Public > > + License along with the GNU C Library; if not, see > > + <https://www.gnu.org/licenses/>. */ > > + > > +#include <math.h> > > +#include <support/test-driver.h> > > + > > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, which > > + defines do_test, reference support_test_main here to include it to > > + avoid undefined reference to support_test_main. The libmvec ABI test > > + doesn't need other symbols in libsupport_nonshared.a. */ > > +__typeof (support_test_main) *support_test_main_p = support_test_main; > > + > > +#define N 1000 > > +LIBMVEC_TYPE x[N], s[N], c[N]; > > + > > +int > > +test_vector_abi (void) > > +{ > > + int i; > > + for(i = 0; i < N; i++) > > + { > > + c[i] = i / 3; > > Is there a reason for 'i / 3'? Nothing special about i/3. It could be initialized with any float/double number. > > > + s[i] = c[i]; > > + } > > + > > +#pragma omp simd > > Do we need this? > Same as above. > > > + for(i = 0; i < N; i++) > > + x[i] = LIBMVEC_FUNC (s[i], c[i]); > > + > > + return 0; > > +} > > -- > > 2.31.1 > > >
On Wed, Oct 20, 2021 at 7:10 PM Sunil Pandey <skpgkp2@gmail.com> wrote: > > > > On Wed, Oct 20, 2021 at 3:48 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: >> >> On Wed, Oct 20, 2021 at 4:22 PM Sunil K Pandey <skpgkp2@gmail.com> wrote: >> > >> > Add vector ABI tests for cos, exp, log, pow and sin functions. >> > --- >> > sysdeps/x86_64/fpu/Makeconfig | 11 ++--- >> > .../x86_64/fpu/test-double-libmvec-cos-avx.c | 1 + >> > .../x86_64/fpu/test-double-libmvec-cos-avx2.c | 1 + >> > .../fpu/test-double-libmvec-cos-avx512f.c | 1 + >> > sysdeps/x86_64/fpu/test-double-libmvec-cos.c | 3 ++ >> > .../x86_64/fpu/test-double-libmvec-exp-avx.c | 1 + >> > .../x86_64/fpu/test-double-libmvec-exp-avx2.c | 1 + >> > .../fpu/test-double-libmvec-exp-avx512f.c | 1 + >> > sysdeps/x86_64/fpu/test-double-libmvec-exp.c | 3 ++ >> > .../x86_64/fpu/test-double-libmvec-log-avx.c | 1 + >> > .../x86_64/fpu/test-double-libmvec-log-avx2.c | 1 + >> > .../fpu/test-double-libmvec-log-avx512f.c | 1 + >> > sysdeps/x86_64/fpu/test-double-libmvec-log.c | 3 ++ >> > .../x86_64/fpu/test-double-libmvec-pow-avx.c | 1 + >> > .../x86_64/fpu/test-double-libmvec-pow-avx2.c | 1 + >> > .../fpu/test-double-libmvec-pow-avx512f.c | 1 + >> > sysdeps/x86_64/fpu/test-double-libmvec-pow.c | 3 ++ >> > .../x86_64/fpu/test-double-libmvec-sin-avx.c | 1 + >> > .../x86_64/fpu/test-double-libmvec-sin-avx2.c | 1 + >> > .../fpu/test-double-libmvec-sin-avx512f.c | 1 + >> > sysdeps/x86_64/fpu/test-double-libmvec-sin.c | 3 ++ >> > .../x86_64/fpu/test-float-libmvec-cosf-avx.c | 1 + >> > .../x86_64/fpu/test-float-libmvec-cosf-avx2.c | 1 + >> > .../fpu/test-float-libmvec-cosf-avx512f.c | 1 + >> > sysdeps/x86_64/fpu/test-float-libmvec-cosf.c | 3 ++ >> > .../x86_64/fpu/test-float-libmvec-expf-avx.c | 1 + >> > .../x86_64/fpu/test-float-libmvec-expf-avx2.c | 1 + >> > .../fpu/test-float-libmvec-expf-avx512f.c | 1 + >> > sysdeps/x86_64/fpu/test-float-libmvec-expf.c | 3 ++ >> > .../x86_64/fpu/test-float-libmvec-logf-avx.c | 1 + >> > .../x86_64/fpu/test-float-libmvec-logf-avx2.c | 1 + >> > .../fpu/test-float-libmvec-logf-avx512f.c | 1 + >> > sysdeps/x86_64/fpu/test-float-libmvec-logf.c | 3 ++ >> > .../x86_64/fpu/test-float-libmvec-powf-avx.c | 1 + >> > .../x86_64/fpu/test-float-libmvec-powf-avx2.c | 1 + >> > .../fpu/test-float-libmvec-powf-avx512f.c | 1 + >> > sysdeps/x86_64/fpu/test-float-libmvec-powf.c | 3 ++ >> > .../x86_64/fpu/test-float-libmvec-sinf-avx.c | 1 + >> > .../x86_64/fpu/test-float-libmvec-sinf-avx2.c | 1 + >> > .../fpu/test-float-libmvec-sinf-avx512f.c | 1 + >> > sysdeps/x86_64/fpu/test-float-libmvec-sinf.c | 3 ++ >> > sysdeps/x86_64/fpu/test-vector-abi-arg1.h | 43 +++++++++++++++++ >> > sysdeps/x86_64/fpu/test-vector-abi-arg2.h | 46 +++++++++++++++++++ >> > 43 files changed, 152 insertions(+), 8 deletions(-) >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf.c >> > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg1.h >> > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg2.h >> > >> > diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig >> > index 0a9341cdd9..24aaee1a43 100644 >> > --- a/sysdeps/x86_64/fpu/Makeconfig >> > +++ b/sysdeps/x86_64/fpu/Makeconfig >> > @@ -29,15 +29,10 @@ libmvec-funcs = \ >> > sin \ >> > sincos \ >> > >> > -# FIXME: Add ABI tests for all libmvec functions and replace >> > -# libmvec-abi-funcs with libmvec-funcs. >> > -libmvec-abi-funcs = \ >> > - sincos >> > - >> > # The base libmvec ABI tests. >> > libmvec-abi-func-tests = \ >> > - $(addprefix test-double-libmvec-,$(libmvec-abi-funcs)) \ >> > - $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-abi-funcs))) >> > + $(addprefix test-double-libmvec-,$(libmvec-funcs)) \ >> > + $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-funcs))) >> > >> > # The AVX libmvec ABI tests. >> > libmvec-abi-func-avx-tests = \ >> > @@ -62,7 +57,7 @@ $(common-objpfx)libmvec.mk: $(common-objpfx)config.make >> > echo; \ >> > done; \ >> > done; \ >> > - for t in $(libmvec-abi-funcs); do \ >> > + for t in $(libmvec-funcs); do \ >> > echo "CFLAGS-test-double-libmvec-$$t.c = \\"; \ >> > echo " \$$(libmvec-abi-test-cflags)"; \ >> > echo "CFLAGS-test-double-libmvec-$$t-avx.c = \\"; \ >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c >> > new file mode 100644 >> > index 0000000000..f2b3e8e883 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-cos.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c >> > new file mode 100644 >> > index 0000000000..f2b3e8e883 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-cos.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c >> > new file mode 100644 >> > index 0000000000..f2b3e8e883 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-cos.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c >> > new file mode 100644 >> > index 0000000000..ebc688163e >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c >> > @@ -0,0 +1,3 @@ >> > +#define LIBMVEC_TYPE double >> > +#define LIBMVEC_FUNC cos >> > +#include "test-vector-abi-arg1.h" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c >> > new file mode 100644 >> > index 0000000000..fb485c3558 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-exp.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c >> > new file mode 100644 >> > index 0000000000..fb485c3558 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-exp.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c >> > new file mode 100644 >> > index 0000000000..fb485c3558 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-exp.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c >> > new file mode 100644 >> > index 0000000000..fd8143aacc >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c >> > @@ -0,0 +1,3 @@ >> > +#define LIBMVEC_TYPE double >> > +#define LIBMVEC_FUNC exp >> > +#include "test-vector-abi-arg1.h" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c >> > new file mode 100644 >> > index 0000000000..1acdf16a6e >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-log.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c >> > new file mode 100644 >> > index 0000000000..1acdf16a6e >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-log.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c >> > new file mode 100644 >> > index 0000000000..1acdf16a6e >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-log.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log.c b/sysdeps/x86_64/fpu/test-double-libmvec-log.c >> > new file mode 100644 >> > index 0000000000..a17a02ca66 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log.c >> > @@ -0,0 +1,3 @@ >> > +#define LIBMVEC_TYPE double >> > +#define LIBMVEC_FUNC log >> > +#include "test-vector-abi-arg1.h" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c >> > new file mode 100644 >> > index 0000000000..7c921ccad5 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-pow.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c >> > new file mode 100644 >> > index 0000000000..7c921ccad5 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-pow.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c >> > new file mode 100644 >> > index 0000000000..7c921ccad5 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-pow.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c >> > new file mode 100644 >> > index 0000000000..c70e24b663 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c >> > @@ -0,0 +1,3 @@ >> > +#define LIBMVEC_TYPE double >> > +#define LIBMVEC_FUNC pow >> > +#include "test-vector-abi-arg2.h" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c >> > new file mode 100644 >> > index 0000000000..c785cd0445 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-sin.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c >> > new file mode 100644 >> > index 0000000000..c785cd0445 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-sin.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c >> > new file mode 100644 >> > index 0000000000..c785cd0445 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c >> > @@ -0,0 +1 @@ >> > +#include "test-double-libmvec-sin.c" >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c >> > new file mode 100644 >> > index 0000000000..bc2fb3c614 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c >> > @@ -0,0 +1,3 @@ >> > +#define LIBMVEC_TYPE double >> > +#define LIBMVEC_FUNC sin >> > +#include "test-vector-abi-arg1.h" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c >> > new file mode 100644 >> > index 0000000000..928f4b607b >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-cosf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c >> > new file mode 100644 >> > index 0000000000..928f4b607b >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-cosf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c >> > new file mode 100644 >> > index 0000000000..928f4b607b >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-cosf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c >> > new file mode 100644 >> > index 0000000000..d8ecea7e6a >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c >> > @@ -0,0 +1,3 @@ >> > +#define LIBMVEC_TYPE float >> > +#define LIBMVEC_FUNC cosf >> > +#include "test-vector-abi-arg1.h" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c >> > new file mode 100644 >> > index 0000000000..9e0b6d667c >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-expf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c >> > new file mode 100644 >> > index 0000000000..9e0b6d667c >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-expf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c >> > new file mode 100644 >> > index 0000000000..9e0b6d667c >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-expf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c >> > new file mode 100644 >> > index 0000000000..0c21b9ae83 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c >> > @@ -0,0 +1,3 @@ >> > +#define LIBMVEC_TYPE float >> > +#define LIBMVEC_FUNC expf >> > +#include "test-vector-abi-arg1.h" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c >> > new file mode 100644 >> > index 0000000000..92767c9462 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-logf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c >> > new file mode 100644 >> > index 0000000000..92767c9462 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-logf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c >> > new file mode 100644 >> > index 0000000000..92767c9462 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-logf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c >> > new file mode 100644 >> > index 0000000000..964d869e72 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c >> > @@ -0,0 +1,3 @@ >> > +#define LIBMVEC_TYPE float >> > +#define LIBMVEC_FUNC logf >> > +#include "test-vector-abi-arg1.h" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c >> > new file mode 100644 >> > index 0000000000..e00d4e73e0 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-powf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c >> > new file mode 100644 >> > index 0000000000..e00d4e73e0 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-powf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c >> > new file mode 100644 >> > index 0000000000..e00d4e73e0 >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-powf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c >> > new file mode 100644 >> > index 0000000000..ef8559b0ca >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c >> > @@ -0,0 +1,3 @@ >> > +#define LIBMVEC_TYPE float >> > +#define LIBMVEC_FUNC powf >> > +#include "test-vector-abi-arg2.h" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c >> > new file mode 100644 >> > index 0000000000..302886760e >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-sinf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c >> > new file mode 100644 >> > index 0000000000..302886760e >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-sinf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c >> > new file mode 100644 >> > index 0000000000..302886760e >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c >> > @@ -0,0 +1 @@ >> > +#include "test-float-libmvec-sinf.c" >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c >> > new file mode 100644 >> > index 0000000000..00d3255ccf >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c >> > @@ -0,0 +1,3 @@ >> > +#define LIBMVEC_TYPE float >> > +#define LIBMVEC_FUNC sinf >> > +#include "test-vector-abi-arg1.h" >> > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg1.h b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h >> > new file mode 100644 >> > index 0000000000..962fafcd0b >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h >> > @@ -0,0 +1,43 @@ >> > +/* Test for vector ABI with a single argument. >> > + Copyright (C) 2016-2021 Free Software Foundation, Inc. >> > + This file is part of the GNU C Library. >> > + >> > + The GNU C Library is free software; you can redistribute it and/or >> > + modify it under the terms of the GNU Lesser General Public >> > + License as published by the Free Software Foundation; either >> > + version 2.1 of the License, or (at your option) any later version. >> > + >> > + The GNU C Library is distributed in the hope that it will be useful, >> > + but WITHOUT ANY WARRANTY; without even the implied warranty of >> > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> > + Lesser General Public License for more details. >> > + >> > + You should have received a copy of the GNU Lesser General Public >> > + License along with the GNU C Library; if not, see >> > + <https://www.gnu.org/licenses/>. */ >> > + >> > +#include <math.h> >> > +#include <support/test-driver.h> >> > + >> > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, which >> > + defines do_test, reference support_test_main here to include it to >> > + avoid undefined reference to support_test_main. The libmvec ABI test >> > + doesn't need other symbols in libsupport_nonshared.a. */ >> > +__typeof (support_test_main) *support_test_main_p = support_test_main; >> > + >> > +#define N 1000 >> > +LIBMVEC_TYPE x[N], c[N]; >> > + >> > +int >> > +test_vector_abi (void) >> > +{ >> > + int i; >> > + for(i = 0; i < N; i++) >> > + c[i] = i / 3; >> > + >> > +#pragma omp simd >> >> Do we need this? > > Yes, omp pragma forces function to vectorize. Without it, depending on the gcc version it may or may not vectorize. > For libmvec ABI test LIBMVEC_FUNC needs to be vectorized. > https://sourceware.org/glibc/wiki/libmvec I see. Makes sense. Is there any way we can guarantee the correct version is actually being tested? Or is this test purely that the code will compile / run with the tested build flags? > >> >> > + for(i = 0; i < N; i++) >> > + x[i] = LIBMVEC_FUNC (c[i]); >> > + >> > + return 0; >> > +} >> > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg2.h b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h >> > new file mode 100644 >> > index 0000000000..4b7e10d26b >> > --- /dev/null >> > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h >> > @@ -0,0 +1,46 @@ >> > +/* Test for vector ABI with 2 arguments. >> > + Copyright (C) 2016-2021 Free Software Foundation, Inc. >> > + This file is part of the GNU C Library. >> > + >> > + The GNU C Library is free software; you can redistribute it and/or >> > + modify it under the terms of the GNU Lesser General Public >> > + License as published by the Free Software Foundation; either >> > + version 2.1 of the License, or (at your option) any later version. >> > + >> > + The GNU C Library is distributed in the hope that it will be useful, >> > + but WITHOUT ANY WARRANTY; without even the implied warranty of >> > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> > + Lesser General Public License for more details. >> > + >> > + You should have received a copy of the GNU Lesser General Public >> > + License along with the GNU C Library; if not, see >> > + <https://www.gnu.org/licenses/>. */ >> > + >> > +#include <math.h> >> > +#include <support/test-driver.h> >> > + >> > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, which >> > + defines do_test, reference support_test_main here to include it to >> > + avoid undefined reference to support_test_main. The libmvec ABI test >> > + doesn't need other symbols in libsupport_nonshared.a. */ >> > +__typeof (support_test_main) *support_test_main_p = support_test_main; >> > + >> > +#define N 1000 >> > +LIBMVEC_TYPE x[N], s[N], c[N]; >> > + >> > +int >> > +test_vector_abi (void) >> > +{ >> > + int i; >> > + for(i = 0; i < N; i++) >> > + { >> > + c[i] = i / 3; >> >> Is there a reason for 'i / 3'? > > Nothing special about i/3. It could be initialized with any float/double number. Maybe 2 for faster initialization. Not important though. >> >> >> >> >> > + s[i] = c[i]; >> > + } >> > + >> > +#pragma omp simd >> >> Do we need this? > > Same as above. >> >> >> > + for(i = 0; i < N; i++) >> > + x[i] = LIBMVEC_FUNC (s[i], c[i]); >> > + >> > + return 0; >> > +} >> > -- >> > 2.31.1 >> >
On Wed, Oct 20, 2021 at 6:37 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > On Wed, Oct 20, 2021 at 7:10 PM Sunil Pandey <skpgkp2@gmail.com> wrote: > > > > > > > > On Wed, Oct 20, 2021 at 3:48 PM Noah Goldstein <goldstein.w.n@gmail.com> > wrote: > >> > >> On Wed, Oct 20, 2021 at 4:22 PM Sunil K Pandey <skpgkp2@gmail.com> > wrote: > >> > > >> > Add vector ABI tests for cos, exp, log, pow and sin functions. > >> > --- > >> > sysdeps/x86_64/fpu/Makeconfig | 11 ++--- > >> > .../x86_64/fpu/test-double-libmvec-cos-avx.c | 1 + > >> > .../x86_64/fpu/test-double-libmvec-cos-avx2.c | 1 + > >> > .../fpu/test-double-libmvec-cos-avx512f.c | 1 + > >> > sysdeps/x86_64/fpu/test-double-libmvec-cos.c | 3 ++ > >> > .../x86_64/fpu/test-double-libmvec-exp-avx.c | 1 + > >> > .../x86_64/fpu/test-double-libmvec-exp-avx2.c | 1 + > >> > .../fpu/test-double-libmvec-exp-avx512f.c | 1 + > >> > sysdeps/x86_64/fpu/test-double-libmvec-exp.c | 3 ++ > >> > .../x86_64/fpu/test-double-libmvec-log-avx.c | 1 + > >> > .../x86_64/fpu/test-double-libmvec-log-avx2.c | 1 + > >> > .../fpu/test-double-libmvec-log-avx512f.c | 1 + > >> > sysdeps/x86_64/fpu/test-double-libmvec-log.c | 3 ++ > >> > .../x86_64/fpu/test-double-libmvec-pow-avx.c | 1 + > >> > .../x86_64/fpu/test-double-libmvec-pow-avx2.c | 1 + > >> > .../fpu/test-double-libmvec-pow-avx512f.c | 1 + > >> > sysdeps/x86_64/fpu/test-double-libmvec-pow.c | 3 ++ > >> > .../x86_64/fpu/test-double-libmvec-sin-avx.c | 1 + > >> > .../x86_64/fpu/test-double-libmvec-sin-avx2.c | 1 + > >> > .../fpu/test-double-libmvec-sin-avx512f.c | 1 + > >> > sysdeps/x86_64/fpu/test-double-libmvec-sin.c | 3 ++ > >> > .../x86_64/fpu/test-float-libmvec-cosf-avx.c | 1 + > >> > .../x86_64/fpu/test-float-libmvec-cosf-avx2.c | 1 + > >> > .../fpu/test-float-libmvec-cosf-avx512f.c | 1 + > >> > sysdeps/x86_64/fpu/test-float-libmvec-cosf.c | 3 ++ > >> > .../x86_64/fpu/test-float-libmvec-expf-avx.c | 1 + > >> > .../x86_64/fpu/test-float-libmvec-expf-avx2.c | 1 + > >> > .../fpu/test-float-libmvec-expf-avx512f.c | 1 + > >> > sysdeps/x86_64/fpu/test-float-libmvec-expf.c | 3 ++ > >> > .../x86_64/fpu/test-float-libmvec-logf-avx.c | 1 + > >> > .../x86_64/fpu/test-float-libmvec-logf-avx2.c | 1 + > >> > .../fpu/test-float-libmvec-logf-avx512f.c | 1 + > >> > sysdeps/x86_64/fpu/test-float-libmvec-logf.c | 3 ++ > >> > .../x86_64/fpu/test-float-libmvec-powf-avx.c | 1 + > >> > .../x86_64/fpu/test-float-libmvec-powf-avx2.c | 1 + > >> > .../fpu/test-float-libmvec-powf-avx512f.c | 1 + > >> > sysdeps/x86_64/fpu/test-float-libmvec-powf.c | 3 ++ > >> > .../x86_64/fpu/test-float-libmvec-sinf-avx.c | 1 + > >> > .../x86_64/fpu/test-float-libmvec-sinf-avx2.c | 1 + > >> > .../fpu/test-float-libmvec-sinf-avx512f.c | 1 + > >> > sysdeps/x86_64/fpu/test-float-libmvec-sinf.c | 3 ++ > >> > sysdeps/x86_64/fpu/test-vector-abi-arg1.h | 43 +++++++++++++++++ > >> > sysdeps/x86_64/fpu/test-vector-abi-arg2.h | 46 > +++++++++++++++++++ > >> > 43 files changed, 152 insertions(+), 8 deletions(-) > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > >> > create mode 100644 > sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > >> > create mode 100644 > sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > >> > create mode 100644 > sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > >> > create mode 100644 > sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > >> > create mode 100644 > sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > >> > create mode 100644 > sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > >> > create mode 100644 > sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > >> > create mode 100644 > sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > >> > create mode 100644 > sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > >> > create mode 100644 > sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > >> > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg1.h > >> > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg2.h > >> > > >> > diff --git a/sysdeps/x86_64/fpu/Makeconfig > b/sysdeps/x86_64/fpu/Makeconfig > >> > index 0a9341cdd9..24aaee1a43 100644 > >> > --- a/sysdeps/x86_64/fpu/Makeconfig > >> > +++ b/sysdeps/x86_64/fpu/Makeconfig > >> > @@ -29,15 +29,10 @@ libmvec-funcs = \ > >> > sin \ > >> > sincos \ > >> > > >> > -# FIXME: Add ABI tests for all libmvec functions and replace > >> > -# libmvec-abi-funcs with libmvec-funcs. > >> > -libmvec-abi-funcs = \ > >> > - sincos > >> > - > >> > # The base libmvec ABI tests. > >> > libmvec-abi-func-tests = \ > >> > - $(addprefix test-double-libmvec-,$(libmvec-abi-funcs)) \ > >> > - $(addsuffix f,$(addprefix > test-float-libmvec-,$(libmvec-abi-funcs))) > >> > + $(addprefix test-double-libmvec-,$(libmvec-funcs)) \ > >> > + $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-funcs))) > >> > > >> > # The AVX libmvec ABI tests. > >> > libmvec-abi-func-avx-tests = \ > >> > @@ -62,7 +57,7 @@ $(common-objpfx)libmvec.mk: > $(common-objpfx)config.make > >> > echo; \ > >> > done; \ > >> > done; \ > >> > - for t in $(libmvec-abi-funcs); do \ > >> > + for t in $(libmvec-funcs); do \ > >> > echo "CFLAGS-test-double-libmvec-$$t.c = \\"; \ > >> > echo " \$$(libmvec-abi-test-cflags)"; \ > >> > echo "CFLAGS-test-double-libmvec-$$t-avx.c = \\"; \ > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > >> > new file mode 100644 > >> > index 0000000000..f2b3e8e883 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-cos.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > >> > new file mode 100644 > >> > index 0000000000..f2b3e8e883 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-cos.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > >> > new file mode 100644 > >> > index 0000000000..f2b3e8e883 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-cos.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos.c > b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c > >> > new file mode 100644 > >> > index 0000000000..ebc688163e > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c > >> > @@ -0,0 +1,3 @@ > >> > +#define LIBMVEC_TYPE double > >> > +#define LIBMVEC_FUNC cos > >> > +#include "test-vector-abi-arg1.h" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > >> > new file mode 100644 > >> > index 0000000000..fb485c3558 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-exp.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > >> > new file mode 100644 > >> > index 0000000000..fb485c3558 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-exp.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > >> > new file mode 100644 > >> > index 0000000000..fb485c3558 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-exp.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp.c > b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c > >> > new file mode 100644 > >> > index 0000000000..fd8143aacc > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c > >> > @@ -0,0 +1,3 @@ > >> > +#define LIBMVEC_TYPE double > >> > +#define LIBMVEC_FUNC exp > >> > +#include "test-vector-abi-arg1.h" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > >> > new file mode 100644 > >> > index 0000000000..1acdf16a6e > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-log.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > >> > new file mode 100644 > >> > index 0000000000..1acdf16a6e > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-log.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > >> > new file mode 100644 > >> > index 0000000000..1acdf16a6e > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-log.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log.c > b/sysdeps/x86_64/fpu/test-double-libmvec-log.c > >> > new file mode 100644 > >> > index 0000000000..a17a02ca66 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log.c > >> > @@ -0,0 +1,3 @@ > >> > +#define LIBMVEC_TYPE double > >> > +#define LIBMVEC_FUNC log > >> > +#include "test-vector-abi-arg1.h" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > >> > new file mode 100644 > >> > index 0000000000..7c921ccad5 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-pow.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > >> > new file mode 100644 > >> > index 0000000000..7c921ccad5 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-pow.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > >> > new file mode 100644 > >> > index 0000000000..7c921ccad5 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-pow.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow.c > b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c > >> > new file mode 100644 > >> > index 0000000000..c70e24b663 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c > >> > @@ -0,0 +1,3 @@ > >> > +#define LIBMVEC_TYPE double > >> > +#define LIBMVEC_FUNC pow > >> > +#include "test-vector-abi-arg2.h" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > >> > new file mode 100644 > >> > index 0000000000..c785cd0445 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-sin.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > >> > new file mode 100644 > >> > index 0000000000..c785cd0445 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-sin.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > >> > new file mode 100644 > >> > index 0000000000..c785cd0445 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-double-libmvec-sin.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin.c > b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c > >> > new file mode 100644 > >> > index 0000000000..bc2fb3c614 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c > >> > @@ -0,0 +1,3 @@ > >> > +#define LIBMVEC_TYPE double > >> > +#define LIBMVEC_FUNC sin > >> > +#include "test-vector-abi-arg1.h" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > >> > new file mode 100644 > >> > index 0000000000..928f4b607b > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-cosf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > >> > new file mode 100644 > >> > index 0000000000..928f4b607b > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-cosf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > >> > new file mode 100644 > >> > index 0000000000..928f4b607b > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-cosf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > >> > new file mode 100644 > >> > index 0000000000..d8ecea7e6a > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > >> > @@ -0,0 +1,3 @@ > >> > +#define LIBMVEC_TYPE float > >> > +#define LIBMVEC_FUNC cosf > >> > +#include "test-vector-abi-arg1.h" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > >> > new file mode 100644 > >> > index 0000000000..9e0b6d667c > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-expf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > >> > new file mode 100644 > >> > index 0000000000..9e0b6d667c > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-expf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > >> > new file mode 100644 > >> > index 0000000000..9e0b6d667c > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-expf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf.c > b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c > >> > new file mode 100644 > >> > index 0000000000..0c21b9ae83 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c > >> > @@ -0,0 +1,3 @@ > >> > +#define LIBMVEC_TYPE float > >> > +#define LIBMVEC_FUNC expf > >> > +#include "test-vector-abi-arg1.h" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > >> > new file mode 100644 > >> > index 0000000000..92767c9462 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-logf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > >> > new file mode 100644 > >> > index 0000000000..92767c9462 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-logf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > >> > new file mode 100644 > >> > index 0000000000..92767c9462 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-logf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf.c > b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c > >> > new file mode 100644 > >> > index 0000000000..964d869e72 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c > >> > @@ -0,0 +1,3 @@ > >> > +#define LIBMVEC_TYPE float > >> > +#define LIBMVEC_FUNC logf > >> > +#include "test-vector-abi-arg1.h" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > >> > new file mode 100644 > >> > index 0000000000..e00d4e73e0 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-powf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > >> > new file mode 100644 > >> > index 0000000000..e00d4e73e0 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-powf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > >> > new file mode 100644 > >> > index 0000000000..e00d4e73e0 > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-powf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf.c > b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c > >> > new file mode 100644 > >> > index 0000000000..ef8559b0ca > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c > >> > @@ -0,0 +1,3 @@ > >> > +#define LIBMVEC_TYPE float > >> > +#define LIBMVEC_FUNC powf > >> > +#include "test-vector-abi-arg2.h" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > >> > new file mode 100644 > >> > index 0000000000..302886760e > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-sinf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > >> > new file mode 100644 > >> > index 0000000000..302886760e > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-sinf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > >> > new file mode 100644 > >> > index 0000000000..302886760e > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > >> > @@ -0,0 +1 @@ > >> > +#include "test-float-libmvec-sinf.c" > >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > >> > new file mode 100644 > >> > index 0000000000..00d3255ccf > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > >> > @@ -0,0 +1,3 @@ > >> > +#define LIBMVEC_TYPE float > >> > +#define LIBMVEC_FUNC sinf > >> > +#include "test-vector-abi-arg1.h" > >> > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg1.h > b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h > >> > new file mode 100644 > >> > index 0000000000..962fafcd0b > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h > >> > @@ -0,0 +1,43 @@ > >> > +/* Test for vector ABI with a single argument. > >> > + Copyright (C) 2016-2021 Free Software Foundation, Inc. > >> > + This file is part of the GNU C Library. > >> > + > >> > + The GNU C Library is free software; you can redistribute it and/or > >> > + modify it under the terms of the GNU Lesser General Public > >> > + License as published by the Free Software Foundation; either > >> > + version 2.1 of the License, or (at your option) any later version. > >> > + > >> > + The GNU C Library is distributed in the hope that it will be > useful, > >> > + but WITHOUT ANY WARRANTY; without even the implied warranty of > >> > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > >> > + Lesser General Public License for more details. > >> > + > >> > + You should have received a copy of the GNU Lesser General Public > >> > + License along with the GNU C Library; if not, see > >> > + <https://www.gnu.org/licenses/>. */ > >> > + > >> > +#include <math.h> > >> > +#include <support/test-driver.h> > >> > + > >> > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, > which > >> > + defines do_test, reference support_test_main here to include it to > >> > + avoid undefined reference to support_test_main. The libmvec ABI > test > >> > + doesn't need other symbols in libsupport_nonshared.a. */ > >> > +__typeof (support_test_main) *support_test_main_p = > support_test_main; > >> > + > >> > +#define N 1000 > >> > +LIBMVEC_TYPE x[N], c[N]; > >> > + > >> > +int > >> > +test_vector_abi (void) > >> > +{ > >> > + int i; > >> > + for(i = 0; i < N; i++) > >> > + c[i] = i / 3; > >> > + > >> > +#pragma omp simd > >> > >> Do we need this? > > > > Yes, omp pragma forces function to vectorize. Without it, depending on > the gcc version it may or may not vectorize. > > For libmvec ABI test LIBMVEC_FUNC needs to be vectorized. > > https://sourceware.org/glibc/wiki/libmvec > > I see. Makes sense. Is there any way we can guarantee the correct version > is > actually being tested? Or is this test purely that the code will compile / > run > with the tested build flags? > This code will just compile/run with tested build flags. > > > > >> > >> > + for(i = 0; i < N; i++) > >> > + x[i] = LIBMVEC_FUNC (c[i]); > >> > + > >> > + return 0; > >> > +} > >> > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg2.h > b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h > >> > new file mode 100644 > >> > index 0000000000..4b7e10d26b > >> > --- /dev/null > >> > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h > >> > @@ -0,0 +1,46 @@ > >> > +/* Test for vector ABI with 2 arguments. > >> > + Copyright (C) 2016-2021 Free Software Foundation, Inc. > >> > + This file is part of the GNU C Library. > >> > + > >> > + The GNU C Library is free software; you can redistribute it and/or > >> > + modify it under the terms of the GNU Lesser General Public > >> > + License as published by the Free Software Foundation; either > >> > + version 2.1 of the License, or (at your option) any later version. > >> > + > >> > + The GNU C Library is distributed in the hope that it will be > useful, > >> > + but WITHOUT ANY WARRANTY; without even the implied warranty of > >> > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > >> > + Lesser General Public License for more details. > >> > + > >> > + You should have received a copy of the GNU Lesser General Public > >> > + License along with the GNU C Library; if not, see > >> > + <https://www.gnu.org/licenses/>. */ > >> > + > >> > +#include <math.h> > >> > +#include <support/test-driver.h> > >> > + > >> > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, > which > >> > + defines do_test, reference support_test_main here to include it to > >> > + avoid undefined reference to support_test_main. The libmvec ABI > test > >> > + doesn't need other symbols in libsupport_nonshared.a. */ > >> > +__typeof (support_test_main) *support_test_main_p = > support_test_main; > >> > + > >> > +#define N 1000 > >> > +LIBMVEC_TYPE x[N], s[N], c[N]; > >> > + > >> > +int > >> > +test_vector_abi (void) > >> > +{ > >> > + int i; > >> > + for(i = 0; i < N; i++) > >> > + { > >> > + c[i] = i / 3; > >> > >> Is there a reason for 'i / 3'? > > > > Nothing special about i/3. It could be initialized with any > float/double number. > > Maybe 2 for faster initialization. Not important though. Same code is used for float and double implementation. Though not very important in this case, i/3 will create test input with more precision. > >> > >> > >> > >> > >> > + s[i] = c[i]; > >> > + } > >> > + > >> > +#pragma omp simd > >> > >> Do we need this? > > > > Same as above. > >> > >> > >> > + for(i = 0; i < N; i++) > >> > + x[i] = LIBMVEC_FUNC (s[i], c[i]); > >> > + > >> > + return 0; > >> > +} > >> > -- > >> > 2.31.1 > >> > >
OK for trunk? On Wed, Oct 20, 2021 at 8:29 PM Sunil Pandey <skpgkp2@gmail.com> wrote: > > > On Wed, Oct 20, 2021 at 6:37 PM Noah Goldstein <goldstein.w.n@gmail.com> > wrote: > >> On Wed, Oct 20, 2021 at 7:10 PM Sunil Pandey <skpgkp2@gmail.com> wrote: >> > >> > >> > >> > On Wed, Oct 20, 2021 at 3:48 PM Noah Goldstein <goldstein.w.n@gmail.com> >> wrote: >> >> >> >> On Wed, Oct 20, 2021 at 4:22 PM Sunil K Pandey <skpgkp2@gmail.com> >> wrote: >> >> > >> >> > Add vector ABI tests for cos, exp, log, pow and sin functions. >> >> > --- >> >> > sysdeps/x86_64/fpu/Makeconfig | 11 ++--- >> >> > .../x86_64/fpu/test-double-libmvec-cos-avx.c | 1 + >> >> > .../x86_64/fpu/test-double-libmvec-cos-avx2.c | 1 + >> >> > .../fpu/test-double-libmvec-cos-avx512f.c | 1 + >> >> > sysdeps/x86_64/fpu/test-double-libmvec-cos.c | 3 ++ >> >> > .../x86_64/fpu/test-double-libmvec-exp-avx.c | 1 + >> >> > .../x86_64/fpu/test-double-libmvec-exp-avx2.c | 1 + >> >> > .../fpu/test-double-libmvec-exp-avx512f.c | 1 + >> >> > sysdeps/x86_64/fpu/test-double-libmvec-exp.c | 3 ++ >> >> > .../x86_64/fpu/test-double-libmvec-log-avx.c | 1 + >> >> > .../x86_64/fpu/test-double-libmvec-log-avx2.c | 1 + >> >> > .../fpu/test-double-libmvec-log-avx512f.c | 1 + >> >> > sysdeps/x86_64/fpu/test-double-libmvec-log.c | 3 ++ >> >> > .../x86_64/fpu/test-double-libmvec-pow-avx.c | 1 + >> >> > .../x86_64/fpu/test-double-libmvec-pow-avx2.c | 1 + >> >> > .../fpu/test-double-libmvec-pow-avx512f.c | 1 + >> >> > sysdeps/x86_64/fpu/test-double-libmvec-pow.c | 3 ++ >> >> > .../x86_64/fpu/test-double-libmvec-sin-avx.c | 1 + >> >> > .../x86_64/fpu/test-double-libmvec-sin-avx2.c | 1 + >> >> > .../fpu/test-double-libmvec-sin-avx512f.c | 1 + >> >> > sysdeps/x86_64/fpu/test-double-libmvec-sin.c | 3 ++ >> >> > .../x86_64/fpu/test-float-libmvec-cosf-avx.c | 1 + >> >> > .../x86_64/fpu/test-float-libmvec-cosf-avx2.c | 1 + >> >> > .../fpu/test-float-libmvec-cosf-avx512f.c | 1 + >> >> > sysdeps/x86_64/fpu/test-float-libmvec-cosf.c | 3 ++ >> >> > .../x86_64/fpu/test-float-libmvec-expf-avx.c | 1 + >> >> > .../x86_64/fpu/test-float-libmvec-expf-avx2.c | 1 + >> >> > .../fpu/test-float-libmvec-expf-avx512f.c | 1 + >> >> > sysdeps/x86_64/fpu/test-float-libmvec-expf.c | 3 ++ >> >> > .../x86_64/fpu/test-float-libmvec-logf-avx.c | 1 + >> >> > .../x86_64/fpu/test-float-libmvec-logf-avx2.c | 1 + >> >> > .../fpu/test-float-libmvec-logf-avx512f.c | 1 + >> >> > sysdeps/x86_64/fpu/test-float-libmvec-logf.c | 3 ++ >> >> > .../x86_64/fpu/test-float-libmvec-powf-avx.c | 1 + >> >> > .../x86_64/fpu/test-float-libmvec-powf-avx2.c | 1 + >> >> > .../fpu/test-float-libmvec-powf-avx512f.c | 1 + >> >> > sysdeps/x86_64/fpu/test-float-libmvec-powf.c | 3 ++ >> >> > .../x86_64/fpu/test-float-libmvec-sinf-avx.c | 1 + >> >> > .../x86_64/fpu/test-float-libmvec-sinf-avx2.c | 1 + >> >> > .../fpu/test-float-libmvec-sinf-avx512f.c | 1 + >> >> > sysdeps/x86_64/fpu/test-float-libmvec-sinf.c | 3 ++ >> >> > sysdeps/x86_64/fpu/test-vector-abi-arg1.h | 43 +++++++++++++++++ >> >> > sysdeps/x86_64/fpu/test-vector-abi-arg2.h | 46 >> +++++++++++++++++++ >> >> > 43 files changed, 152 insertions(+), 8 deletions(-) >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c >> >> > create mode 100644 >> sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c >> >> > create mode 100644 >> sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c >> >> > create mode 100644 >> sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c >> >> > create mode 100644 >> sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c >> >> > create mode 100644 >> sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c >> >> > create mode 100644 >> sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c >> >> > create mode 100644 >> sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c >> >> > create mode 100644 >> sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c >> >> > create mode 100644 >> sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c >> >> > create mode 100644 >> sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf.c >> >> > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg1.h >> >> > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg2.h >> >> > >> >> > diff --git a/sysdeps/x86_64/fpu/Makeconfig >> b/sysdeps/x86_64/fpu/Makeconfig >> >> > index 0a9341cdd9..24aaee1a43 100644 >> >> > --- a/sysdeps/x86_64/fpu/Makeconfig >> >> > +++ b/sysdeps/x86_64/fpu/Makeconfig >> >> > @@ -29,15 +29,10 @@ libmvec-funcs = \ >> >> > sin \ >> >> > sincos \ >> >> > >> >> > -# FIXME: Add ABI tests for all libmvec functions and replace >> >> > -# libmvec-abi-funcs with libmvec-funcs. >> >> > -libmvec-abi-funcs = \ >> >> > - sincos >> >> > - >> >> > # The base libmvec ABI tests. >> >> > libmvec-abi-func-tests = \ >> >> > - $(addprefix test-double-libmvec-,$(libmvec-abi-funcs)) \ >> >> > - $(addsuffix f,$(addprefix >> test-float-libmvec-,$(libmvec-abi-funcs))) >> >> > + $(addprefix test-double-libmvec-,$(libmvec-funcs)) \ >> >> > + $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-funcs))) >> >> > >> >> > # The AVX libmvec ABI tests. >> >> > libmvec-abi-func-avx-tests = \ >> >> > @@ -62,7 +57,7 @@ $(common-objpfx)libmvec.mk: >> $(common-objpfx)config.make >> >> > echo; \ >> >> > done; \ >> >> > done; \ >> >> > - for t in $(libmvec-abi-funcs); do \ >> >> > + for t in $(libmvec-funcs); do \ >> >> > echo "CFLAGS-test-double-libmvec-$$t.c = \\"; \ >> >> > echo " \$$(libmvec-abi-test-cflags)"; \ >> >> > echo "CFLAGS-test-double-libmvec-$$t-avx.c = \\"; \ >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c >> >> > new file mode 100644 >> >> > index 0000000000..f2b3e8e883 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-cos.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c >> >> > new file mode 100644 >> >> > index 0000000000..f2b3e8e883 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-cos.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c >> >> > new file mode 100644 >> >> > index 0000000000..f2b3e8e883 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-cos.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c >> >> > new file mode 100644 >> >> > index 0000000000..ebc688163e >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c >> >> > @@ -0,0 +1,3 @@ >> >> > +#define LIBMVEC_TYPE double >> >> > +#define LIBMVEC_FUNC cos >> >> > +#include "test-vector-abi-arg1.h" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c >> >> > new file mode 100644 >> >> > index 0000000000..fb485c3558 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-exp.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c >> >> > new file mode 100644 >> >> > index 0000000000..fb485c3558 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-exp.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c >> >> > new file mode 100644 >> >> > index 0000000000..fb485c3558 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-exp.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c >> >> > new file mode 100644 >> >> > index 0000000000..fd8143aacc >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c >> >> > @@ -0,0 +1,3 @@ >> >> > +#define LIBMVEC_TYPE double >> >> > +#define LIBMVEC_FUNC exp >> >> > +#include "test-vector-abi-arg1.h" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c >> >> > new file mode 100644 >> >> > index 0000000000..1acdf16a6e >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-log.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c >> >> > new file mode 100644 >> >> > index 0000000000..1acdf16a6e >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-log.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c >> >> > new file mode 100644 >> >> > index 0000000000..1acdf16a6e >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-log.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-log.c >> >> > new file mode 100644 >> >> > index 0000000000..a17a02ca66 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log.c >> >> > @@ -0,0 +1,3 @@ >> >> > +#define LIBMVEC_TYPE double >> >> > +#define LIBMVEC_FUNC log >> >> > +#include "test-vector-abi-arg1.h" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c >> >> > new file mode 100644 >> >> > index 0000000000..7c921ccad5 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-pow.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c >> >> > new file mode 100644 >> >> > index 0000000000..7c921ccad5 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-pow.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c >> >> > new file mode 100644 >> >> > index 0000000000..7c921ccad5 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-pow.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c >> >> > new file mode 100644 >> >> > index 0000000000..c70e24b663 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c >> >> > @@ -0,0 +1,3 @@ >> >> > +#define LIBMVEC_TYPE double >> >> > +#define LIBMVEC_FUNC pow >> >> > +#include "test-vector-abi-arg2.h" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c >> >> > new file mode 100644 >> >> > index 0000000000..c785cd0445 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-sin.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c >> >> > new file mode 100644 >> >> > index 0000000000..c785cd0445 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-sin.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c >> >> > new file mode 100644 >> >> > index 0000000000..c785cd0445 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-double-libmvec-sin.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin.c >> b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c >> >> > new file mode 100644 >> >> > index 0000000000..bc2fb3c614 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c >> >> > @@ -0,0 +1,3 @@ >> >> > +#define LIBMVEC_TYPE double >> >> > +#define LIBMVEC_FUNC sin >> >> > +#include "test-vector-abi-arg1.h" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c >> >> > new file mode 100644 >> >> > index 0000000000..928f4b607b >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-cosf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c >> >> > new file mode 100644 >> >> > index 0000000000..928f4b607b >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-cosf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c >> >> > new file mode 100644 >> >> > index 0000000000..928f4b607b >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-cosf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c >> >> > new file mode 100644 >> >> > index 0000000000..d8ecea7e6a >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c >> >> > @@ -0,0 +1,3 @@ >> >> > +#define LIBMVEC_TYPE float >> >> > +#define LIBMVEC_FUNC cosf >> >> > +#include "test-vector-abi-arg1.h" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c >> >> > new file mode 100644 >> >> > index 0000000000..9e0b6d667c >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-expf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c >> >> > new file mode 100644 >> >> > index 0000000000..9e0b6d667c >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-expf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c >> >> > new file mode 100644 >> >> > index 0000000000..9e0b6d667c >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-expf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c >> >> > new file mode 100644 >> >> > index 0000000000..0c21b9ae83 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c >> >> > @@ -0,0 +1,3 @@ >> >> > +#define LIBMVEC_TYPE float >> >> > +#define LIBMVEC_FUNC expf >> >> > +#include "test-vector-abi-arg1.h" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c >> >> > new file mode 100644 >> >> > index 0000000000..92767c9462 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-logf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c >> >> > new file mode 100644 >> >> > index 0000000000..92767c9462 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-logf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c >> >> > new file mode 100644 >> >> > index 0000000000..92767c9462 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-logf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c >> >> > new file mode 100644 >> >> > index 0000000000..964d869e72 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c >> >> > @@ -0,0 +1,3 @@ >> >> > +#define LIBMVEC_TYPE float >> >> > +#define LIBMVEC_FUNC logf >> >> > +#include "test-vector-abi-arg1.h" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c >> >> > new file mode 100644 >> >> > index 0000000000..e00d4e73e0 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-powf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c >> >> > new file mode 100644 >> >> > index 0000000000..e00d4e73e0 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-powf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c >> >> > new file mode 100644 >> >> > index 0000000000..e00d4e73e0 >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-powf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c >> >> > new file mode 100644 >> >> > index 0000000000..ef8559b0ca >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c >> >> > @@ -0,0 +1,3 @@ >> >> > +#define LIBMVEC_TYPE float >> >> > +#define LIBMVEC_FUNC powf >> >> > +#include "test-vector-abi-arg2.h" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c >> >> > new file mode 100644 >> >> > index 0000000000..302886760e >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-sinf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c >> >> > new file mode 100644 >> >> > index 0000000000..302886760e >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-sinf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c >> >> > new file mode 100644 >> >> > index 0000000000..302886760e >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c >> >> > @@ -0,0 +1 @@ >> >> > +#include "test-float-libmvec-sinf.c" >> >> > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c >> b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c >> >> > new file mode 100644 >> >> > index 0000000000..00d3255ccf >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c >> >> > @@ -0,0 +1,3 @@ >> >> > +#define LIBMVEC_TYPE float >> >> > +#define LIBMVEC_FUNC sinf >> >> > +#include "test-vector-abi-arg1.h" >> >> > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg1.h >> b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h >> >> > new file mode 100644 >> >> > index 0000000000..962fafcd0b >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h >> >> > @@ -0,0 +1,43 @@ >> >> > +/* Test for vector ABI with a single argument. >> >> > + Copyright (C) 2016-2021 Free Software Foundation, Inc. >> >> > + This file is part of the GNU C Library. >> >> > + >> >> > + The GNU C Library is free software; you can redistribute it >> and/or >> >> > + modify it under the terms of the GNU Lesser General Public >> >> > + License as published by the Free Software Foundation; either >> >> > + version 2.1 of the License, or (at your option) any later >> version. >> >> > + >> >> > + The GNU C Library is distributed in the hope that it will be >> useful, >> >> > + but WITHOUT ANY WARRANTY; without even the implied warranty of >> >> > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> >> > + Lesser General Public License for more details. >> >> > + >> >> > + You should have received a copy of the GNU Lesser General Public >> >> > + License along with the GNU C Library; if not, see >> >> > + <https://www.gnu.org/licenses/>. */ >> >> > + >> >> > +#include <math.h> >> >> > +#include <support/test-driver.h> >> >> > + >> >> > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, >> which >> >> > + defines do_test, reference support_test_main here to include it >> to >> >> > + avoid undefined reference to support_test_main. The libmvec ABI >> test >> >> > + doesn't need other symbols in libsupport_nonshared.a. */ >> >> > +__typeof (support_test_main) *support_test_main_p = >> support_test_main; >> >> > + >> >> > +#define N 1000 >> >> > +LIBMVEC_TYPE x[N], c[N]; >> >> > + >> >> > +int >> >> > +test_vector_abi (void) >> >> > +{ >> >> > + int i; >> >> > + for(i = 0; i < N; i++) >> >> > + c[i] = i / 3; >> >> > + >> >> > +#pragma omp simd >> >> >> >> Do we need this? >> > >> > Yes, omp pragma forces function to vectorize. Without it, depending on >> the gcc version it may or may not vectorize. >> > For libmvec ABI test LIBMVEC_FUNC needs to be vectorized. >> > https://sourceware.org/glibc/wiki/libmvec >> >> I see. Makes sense. Is there any way we can guarantee the correct version >> is >> actually being tested? Or is this test purely that the code will compile >> / run >> with the tested build flags? >> > This code will just compile/run with tested build flags. > >> >> > >> >> >> >> > + for(i = 0; i < N; i++) >> >> > + x[i] = LIBMVEC_FUNC (c[i]); >> >> > + >> >> > + return 0; >> >> > +} >> >> > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg2.h >> b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h >> >> > new file mode 100644 >> >> > index 0000000000..4b7e10d26b >> >> > --- /dev/null >> >> > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h >> >> > @@ -0,0 +1,46 @@ >> >> > +/* Test for vector ABI with 2 arguments. >> >> > + Copyright (C) 2016-2021 Free Software Foundation, Inc. >> >> > + This file is part of the GNU C Library. >> >> > + >> >> > + The GNU C Library is free software; you can redistribute it >> and/or >> >> > + modify it under the terms of the GNU Lesser General Public >> >> > + License as published by the Free Software Foundation; either >> >> > + version 2.1 of the License, or (at your option) any later >> version. >> >> > + >> >> > + The GNU C Library is distributed in the hope that it will be >> useful, >> >> > + but WITHOUT ANY WARRANTY; without even the implied warranty of >> >> > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> >> > + Lesser General Public License for more details. >> >> > + >> >> > + You should have received a copy of the GNU Lesser General Public >> >> > + License along with the GNU C Library; if not, see >> >> > + <https://www.gnu.org/licenses/>. */ >> >> > + >> >> > +#include <math.h> >> >> > +#include <support/test-driver.h> >> >> > + >> >> > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, >> which >> >> > + defines do_test, reference support_test_main here to include it >> to >> >> > + avoid undefined reference to support_test_main. The libmvec ABI >> test >> >> > + doesn't need other symbols in libsupport_nonshared.a. */ >> >> > +__typeof (support_test_main) *support_test_main_p = >> support_test_main; >> >> > + >> >> > +#define N 1000 >> >> > +LIBMVEC_TYPE x[N], s[N], c[N]; >> >> > + >> >> > +int >> >> > +test_vector_abi (void) >> >> > +{ >> >> > + int i; >> >> > + for(i = 0; i < N; i++) >> >> > + { >> >> > + c[i] = i / 3; >> >> >> >> Is there a reason for 'i / 3'? >> > >> > Nothing special about i/3. It could be initialized with any >> float/double number. >> >> Maybe 2 for faster initialization. Not important though. > > Same code is used for float and double implementation. Though not very > important in this case, i/3 will create test input with more precision. > >> > > >> >> >> >> >> >> >> >> >> > + s[i] = c[i]; >> >> > + } >> >> > + >> >> > +#pragma omp simd >> >> >> >> Do we need this? >> > >> > Same as above. >> >> >> >> >> >> > + for(i = 0; i < N; i++) >> >> > + x[i] = LIBMVEC_FUNC (s[i], c[i]); >> >> > + >> >> > + return 0; >> >> > +} >> >> > -- >> >> > 2.31.1 >> >> > >> >
On Wed, Oct 20, 2021 at 2:22 PM Sunil K Pandey <skpgkp2@gmail.com> wrote: > > Add vector ABI tests for cos, exp, log, pow and sin functions. > --- > sysdeps/x86_64/fpu/Makeconfig | 11 ++--- > .../x86_64/fpu/test-double-libmvec-cos-avx.c | 1 + > .../x86_64/fpu/test-double-libmvec-cos-avx2.c | 1 + > .../fpu/test-double-libmvec-cos-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-double-libmvec-cos.c | 3 ++ > .../x86_64/fpu/test-double-libmvec-exp-avx.c | 1 + > .../x86_64/fpu/test-double-libmvec-exp-avx2.c | 1 + > .../fpu/test-double-libmvec-exp-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-double-libmvec-exp.c | 3 ++ > .../x86_64/fpu/test-double-libmvec-log-avx.c | 1 + > .../x86_64/fpu/test-double-libmvec-log-avx2.c | 1 + > .../fpu/test-double-libmvec-log-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-double-libmvec-log.c | 3 ++ > .../x86_64/fpu/test-double-libmvec-pow-avx.c | 1 + > .../x86_64/fpu/test-double-libmvec-pow-avx2.c | 1 + > .../fpu/test-double-libmvec-pow-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-double-libmvec-pow.c | 3 ++ > .../x86_64/fpu/test-double-libmvec-sin-avx.c | 1 + > .../x86_64/fpu/test-double-libmvec-sin-avx2.c | 1 + > .../fpu/test-double-libmvec-sin-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-double-libmvec-sin.c | 3 ++ > .../x86_64/fpu/test-float-libmvec-cosf-avx.c | 1 + > .../x86_64/fpu/test-float-libmvec-cosf-avx2.c | 1 + > .../fpu/test-float-libmvec-cosf-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-float-libmvec-cosf.c | 3 ++ > .../x86_64/fpu/test-float-libmvec-expf-avx.c | 1 + > .../x86_64/fpu/test-float-libmvec-expf-avx2.c | 1 + > .../fpu/test-float-libmvec-expf-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-float-libmvec-expf.c | 3 ++ > .../x86_64/fpu/test-float-libmvec-logf-avx.c | 1 + > .../x86_64/fpu/test-float-libmvec-logf-avx2.c | 1 + > .../fpu/test-float-libmvec-logf-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-float-libmvec-logf.c | 3 ++ > .../x86_64/fpu/test-float-libmvec-powf-avx.c | 1 + > .../x86_64/fpu/test-float-libmvec-powf-avx2.c | 1 + > .../fpu/test-float-libmvec-powf-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-float-libmvec-powf.c | 3 ++ > .../x86_64/fpu/test-float-libmvec-sinf-avx.c | 1 + > .../x86_64/fpu/test-float-libmvec-sinf-avx2.c | 1 + > .../fpu/test-float-libmvec-sinf-avx512f.c | 1 + > sysdeps/x86_64/fpu/test-float-libmvec-sinf.c | 3 ++ > sysdeps/x86_64/fpu/test-vector-abi-arg1.h | 43 +++++++++++++++++ > sysdeps/x86_64/fpu/test-vector-abi-arg2.h | 46 +++++++++++++++++++ > 43 files changed, 152 insertions(+), 8 deletions(-) > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-cos.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-exp.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-log.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-pow.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sin.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-expf.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-logf.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-powf.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg1.h > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi-arg2.h > > diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig > index 0a9341cdd9..24aaee1a43 100644 > --- a/sysdeps/x86_64/fpu/Makeconfig > +++ b/sysdeps/x86_64/fpu/Makeconfig > @@ -29,15 +29,10 @@ libmvec-funcs = \ > sin \ > sincos \ > > -# FIXME: Add ABI tests for all libmvec functions and replace > -# libmvec-abi-funcs with libmvec-funcs. > -libmvec-abi-funcs = \ > - sincos > - > # The base libmvec ABI tests. > libmvec-abi-func-tests = \ > - $(addprefix test-double-libmvec-,$(libmvec-abi-funcs)) \ > - $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-abi-funcs))) > + $(addprefix test-double-libmvec-,$(libmvec-funcs)) \ > + $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-funcs))) > > # The AVX libmvec ABI tests. > libmvec-abi-func-avx-tests = \ > @@ -62,7 +57,7 @@ $(common-objpfx)libmvec.mk: $(common-objpfx)config.make > echo; \ > done; \ > done; \ > - for t in $(libmvec-abi-funcs); do \ > + for t in $(libmvec-funcs); do \ > echo "CFLAGS-test-double-libmvec-$$t.c = \\"; \ > echo " \$$(libmvec-abi-test-cflags)"; \ > echo "CFLAGS-test-double-libmvec-$$t-avx.c = \\"; \ > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > new file mode 100644 > index 0000000000..f2b3e8e883 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-cos.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > new file mode 100644 > index 0000000000..f2b3e8e883 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-cos.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > new file mode 100644 > index 0000000000..f2b3e8e883 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-cos.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c > new file mode 100644 > index 0000000000..ebc688163e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE double > +#define LIBMVEC_FUNC cos > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > new file mode 100644 > index 0000000000..fb485c3558 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-exp.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > new file mode 100644 > index 0000000000..fb485c3558 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-exp.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > new file mode 100644 > index 0000000000..fb485c3558 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-exp.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c > new file mode 100644 > index 0000000000..fd8143aacc > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE double > +#define LIBMVEC_FUNC exp > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > new file mode 100644 > index 0000000000..1acdf16a6e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-log.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > new file mode 100644 > index 0000000000..1acdf16a6e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-log.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > new file mode 100644 > index 0000000000..1acdf16a6e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-log.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log.c b/sysdeps/x86_64/fpu/test-double-libmvec-log.c > new file mode 100644 > index 0000000000..a17a02ca66 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE double > +#define LIBMVEC_FUNC log > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > new file mode 100644 > index 0000000000..7c921ccad5 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-pow.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > new file mode 100644 > index 0000000000..7c921ccad5 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-pow.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > new file mode 100644 > index 0000000000..7c921ccad5 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-pow.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c > new file mode 100644 > index 0000000000..c70e24b663 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE double > +#define LIBMVEC_FUNC pow > +#include "test-vector-abi-arg2.h" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > new file mode 100644 > index 0000000000..c785cd0445 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-sin.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > new file mode 100644 > index 0000000000..c785cd0445 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-sin.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > new file mode 100644 > index 0000000000..c785cd0445 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c > @@ -0,0 +1 @@ > +#include "test-double-libmvec-sin.c" > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c > new file mode 100644 > index 0000000000..bc2fb3c614 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE double > +#define LIBMVEC_FUNC sin > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > new file mode 100644 > index 0000000000..928f4b607b > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-cosf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > new file mode 100644 > index 0000000000..928f4b607b > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-cosf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > new file mode 100644 > index 0000000000..928f4b607b > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-cosf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > new file mode 100644 > index 0000000000..d8ecea7e6a > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE float > +#define LIBMVEC_FUNC cosf > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > new file mode 100644 > index 0000000000..9e0b6d667c > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-expf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > new file mode 100644 > index 0000000000..9e0b6d667c > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-expf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > new file mode 100644 > index 0000000000..9e0b6d667c > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-expf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c > new file mode 100644 > index 0000000000..0c21b9ae83 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE float > +#define LIBMVEC_FUNC expf > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > new file mode 100644 > index 0000000000..92767c9462 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-logf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > new file mode 100644 > index 0000000000..92767c9462 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-logf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > new file mode 100644 > index 0000000000..92767c9462 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-logf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c > new file mode 100644 > index 0000000000..964d869e72 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE float > +#define LIBMVEC_FUNC logf > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > new file mode 100644 > index 0000000000..e00d4e73e0 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-powf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > new file mode 100644 > index 0000000000..e00d4e73e0 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-powf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > new file mode 100644 > index 0000000000..e00d4e73e0 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-powf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c > new file mode 100644 > index 0000000000..ef8559b0ca > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE float > +#define LIBMVEC_FUNC powf > +#include "test-vector-abi-arg2.h" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > new file mode 100644 > index 0000000000..302886760e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-sinf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > new file mode 100644 > index 0000000000..302886760e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-sinf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > new file mode 100644 > index 0000000000..302886760e > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c > @@ -0,0 +1 @@ > +#include "test-float-libmvec-sinf.c" > diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > new file mode 100644 > index 0000000000..00d3255ccf > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c > @@ -0,0 +1,3 @@ > +#define LIBMVEC_TYPE float > +#define LIBMVEC_FUNC sinf > +#include "test-vector-abi-arg1.h" > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg1.h b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h > new file mode 100644 > index 0000000000..962fafcd0b > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h > @@ -0,0 +1,43 @@ > +/* Test for vector ABI with a single argument. > + Copyright (C) 2016-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +#include <math.h> > +#include <support/test-driver.h> > + > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, which > + defines do_test, reference support_test_main here to include it to > + avoid undefined reference to support_test_main. The libmvec ABI test > + doesn't need other symbols in libsupport_nonshared.a. */ > +__typeof (support_test_main) *support_test_main_p = support_test_main; > + > +#define N 1000 > +LIBMVEC_TYPE x[N], c[N]; > + > +int > +test_vector_abi (void) > +{ > + int i; > + for(i = 0; i < N; i++) > + c[i] = i / 3; > + > +#pragma omp simd > + for(i = 0; i < N; i++) > + x[i] = LIBMVEC_FUNC (c[i]); > + > + return 0; > +} > diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg2.h b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h > new file mode 100644 > index 0000000000..4b7e10d26b > --- /dev/null > +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h > @@ -0,0 +1,46 @@ > +/* Test for vector ABI with 2 arguments. > + Copyright (C) 2016-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +#include <math.h> > +#include <support/test-driver.h> > + > +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, which > + defines do_test, reference support_test_main here to include it to > + avoid undefined reference to support_test_main. The libmvec ABI test > + doesn't need other symbols in libsupport_nonshared.a. */ > +__typeof (support_test_main) *support_test_main_p = support_test_main; > + > +#define N 1000 > +LIBMVEC_TYPE x[N], s[N], c[N]; > + > +int > +test_vector_abi (void) > +{ > + int i; > + for(i = 0; i < N; i++) > + { > + c[i] = i / 3; > + s[i] = c[i]; > + } > + > +#pragma omp simd > + for(i = 0; i < N; i++) > + x[i] = LIBMVEC_FUNC (s[i], c[i]); > + > + return 0; > +} > -- > 2.31.1 > LGTM. Reviewed-by: H.J. Lu <hjl.tools@gmail.com> Thanks.
diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig index 0a9341cdd9..24aaee1a43 100644 --- a/sysdeps/x86_64/fpu/Makeconfig +++ b/sysdeps/x86_64/fpu/Makeconfig @@ -29,15 +29,10 @@ libmvec-funcs = \ sin \ sincos \ -# FIXME: Add ABI tests for all libmvec functions and replace -# libmvec-abi-funcs with libmvec-funcs. -libmvec-abi-funcs = \ - sincos - # The base libmvec ABI tests. libmvec-abi-func-tests = \ - $(addprefix test-double-libmvec-,$(libmvec-abi-funcs)) \ - $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-abi-funcs))) + $(addprefix test-double-libmvec-,$(libmvec-funcs)) \ + $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-funcs))) # The AVX libmvec ABI tests. libmvec-abi-func-avx-tests = \ @@ -62,7 +57,7 @@ $(common-objpfx)libmvec.mk: $(common-objpfx)config.make echo; \ done; \ done; \ - for t in $(libmvec-abi-funcs); do \ + for t in $(libmvec-funcs); do \ echo "CFLAGS-test-double-libmvec-$$t.c = \\"; \ echo " \$$(libmvec-abi-test-cflags)"; \ echo "CFLAGS-test-double-libmvec-$$t-avx.c = \\"; \ diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c new file mode 100644 index 0000000000..f2b3e8e883 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx.c @@ -0,0 +1 @@ +#include "test-double-libmvec-cos.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c new file mode 100644 index 0000000000..f2b3e8e883 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx2.c @@ -0,0 +1 @@ +#include "test-double-libmvec-cos.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c new file mode 100644 index 0000000000..f2b3e8e883 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos-avx512f.c @@ -0,0 +1 @@ +#include "test-double-libmvec-cos.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-cos.c b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c new file mode 100644 index 0000000000..ebc688163e --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-cos.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE double +#define LIBMVEC_FUNC cos +#include "test-vector-abi-arg1.h" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c new file mode 100644 index 0000000000..fb485c3558 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx.c @@ -0,0 +1 @@ +#include "test-double-libmvec-exp.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c new file mode 100644 index 0000000000..fb485c3558 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx2.c @@ -0,0 +1 @@ +#include "test-double-libmvec-exp.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c new file mode 100644 index 0000000000..fb485c3558 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp-avx512f.c @@ -0,0 +1 @@ +#include "test-double-libmvec-exp.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-exp.c b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c new file mode 100644 index 0000000000..fd8143aacc --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-exp.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE double +#define LIBMVEC_FUNC exp +#include "test-vector-abi-arg1.h" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c new file mode 100644 index 0000000000..1acdf16a6e --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx.c @@ -0,0 +1 @@ +#include "test-double-libmvec-log.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c new file mode 100644 index 0000000000..1acdf16a6e --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx2.c @@ -0,0 +1 @@ +#include "test-double-libmvec-log.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c new file mode 100644 index 0000000000..1acdf16a6e --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log-avx512f.c @@ -0,0 +1 @@ +#include "test-double-libmvec-log.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-log.c b/sysdeps/x86_64/fpu/test-double-libmvec-log.c new file mode 100644 index 0000000000..a17a02ca66 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-log.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE double +#define LIBMVEC_FUNC log +#include "test-vector-abi-arg1.h" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c new file mode 100644 index 0000000000..7c921ccad5 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx.c @@ -0,0 +1 @@ +#include "test-double-libmvec-pow.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c new file mode 100644 index 0000000000..7c921ccad5 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx2.c @@ -0,0 +1 @@ +#include "test-double-libmvec-pow.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c new file mode 100644 index 0000000000..7c921ccad5 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow-avx512f.c @@ -0,0 +1 @@ +#include "test-double-libmvec-pow.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-pow.c b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c new file mode 100644 index 0000000000..c70e24b663 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-pow.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE double +#define LIBMVEC_FUNC pow +#include "test-vector-abi-arg2.h" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c new file mode 100644 index 0000000000..c785cd0445 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx.c @@ -0,0 +1 @@ +#include "test-double-libmvec-sin.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c new file mode 100644 index 0000000000..c785cd0445 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx2.c @@ -0,0 +1 @@ +#include "test-double-libmvec-sin.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c new file mode 100644 index 0000000000..c785cd0445 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin-avx512f.c @@ -0,0 +1 @@ +#include "test-double-libmvec-sin.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sin.c b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c new file mode 100644 index 0000000000..bc2fb3c614 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sin.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE double +#define LIBMVEC_FUNC sin +#include "test-vector-abi-arg1.h" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c new file mode 100644 index 0000000000..928f4b607b --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx.c @@ -0,0 +1 @@ +#include "test-float-libmvec-cosf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c new file mode 100644 index 0000000000..928f4b607b --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx2.c @@ -0,0 +1 @@ +#include "test-float-libmvec-cosf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c new file mode 100644 index 0000000000..928f4b607b --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf-avx512f.c @@ -0,0 +1 @@ +#include "test-float-libmvec-cosf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c new file mode 100644 index 0000000000..d8ecea7e6a --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-cosf.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE float +#define LIBMVEC_FUNC cosf +#include "test-vector-abi-arg1.h" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c new file mode 100644 index 0000000000..9e0b6d667c --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx.c @@ -0,0 +1 @@ +#include "test-float-libmvec-expf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c new file mode 100644 index 0000000000..9e0b6d667c --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx2.c @@ -0,0 +1 @@ +#include "test-float-libmvec-expf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c new file mode 100644 index 0000000000..9e0b6d667c --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf-avx512f.c @@ -0,0 +1 @@ +#include "test-float-libmvec-expf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-expf.c b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c new file mode 100644 index 0000000000..0c21b9ae83 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-expf.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE float +#define LIBMVEC_FUNC expf +#include "test-vector-abi-arg1.h" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c new file mode 100644 index 0000000000..92767c9462 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx.c @@ -0,0 +1 @@ +#include "test-float-libmvec-logf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c new file mode 100644 index 0000000000..92767c9462 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx2.c @@ -0,0 +1 @@ +#include "test-float-libmvec-logf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c new file mode 100644 index 0000000000..92767c9462 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf-avx512f.c @@ -0,0 +1 @@ +#include "test-float-libmvec-logf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-logf.c b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c new file mode 100644 index 0000000000..964d869e72 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-logf.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE float +#define LIBMVEC_FUNC logf +#include "test-vector-abi-arg1.h" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c new file mode 100644 index 0000000000..e00d4e73e0 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx.c @@ -0,0 +1 @@ +#include "test-float-libmvec-powf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c new file mode 100644 index 0000000000..e00d4e73e0 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx2.c @@ -0,0 +1 @@ +#include "test-float-libmvec-powf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c new file mode 100644 index 0000000000..e00d4e73e0 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf-avx512f.c @@ -0,0 +1 @@ +#include "test-float-libmvec-powf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-powf.c b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c new file mode 100644 index 0000000000..ef8559b0ca --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-powf.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE float +#define LIBMVEC_FUNC powf +#include "test-vector-abi-arg2.h" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c new file mode 100644 index 0000000000..302886760e --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx.c @@ -0,0 +1 @@ +#include "test-float-libmvec-sinf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c new file mode 100644 index 0000000000..302886760e --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx2.c @@ -0,0 +1 @@ +#include "test-float-libmvec-sinf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c new file mode 100644 index 0000000000..302886760e --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf-avx512f.c @@ -0,0 +1 @@ +#include "test-float-libmvec-sinf.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c new file mode 100644 index 0000000000..00d3255ccf --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sinf.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE float +#define LIBMVEC_FUNC sinf +#include "test-vector-abi-arg1.h" diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg1.h b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h new file mode 100644 index 0000000000..962fafcd0b --- /dev/null +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg1.h @@ -0,0 +1,43 @@ +/* Test for vector ABI with a single argument. + Copyright (C) 2016-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <support/test-driver.h> + +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, which + defines do_test, reference support_test_main here to include it to + avoid undefined reference to support_test_main. The libmvec ABI test + doesn't need other symbols in libsupport_nonshared.a. */ +__typeof (support_test_main) *support_test_main_p = support_test_main; + +#define N 1000 +LIBMVEC_TYPE x[N], c[N]; + +int +test_vector_abi (void) +{ + int i; + for(i = 0; i < N; i++) + c[i] = i / 3; + +#pragma omp simd + for(i = 0; i < N; i++) + x[i] = LIBMVEC_FUNC (c[i]); + + return 0; +} diff --git a/sysdeps/x86_64/fpu/test-vector-abi-arg2.h b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h new file mode 100644 index 0000000000..4b7e10d26b --- /dev/null +++ b/sysdeps/x86_64/fpu/test-vector-abi-arg2.h @@ -0,0 +1,46 @@ +/* Test for vector ABI with 2 arguments. + Copyright (C) 2016-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <support/test-driver.h> + +/* Since libsupport_nonshared.a is placed before test-libmvec*.o, which + defines do_test, reference support_test_main here to include it to + avoid undefined reference to support_test_main. The libmvec ABI test + doesn't need other symbols in libsupport_nonshared.a. */ +__typeof (support_test_main) *support_test_main_p = support_test_main; + +#define N 1000 +LIBMVEC_TYPE x[N], s[N], c[N]; + +int +test_vector_abi (void) +{ + int i; + for(i = 0; i < N; i++) + { + c[i] = i / 3; + s[i] = c[i]; + } + +#pragma omp simd + for(i = 0; i < N; i++) + x[i] = LIBMVEC_FUNC (s[i], c[i]); + + return 0; +}