b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist
@@ -47,3 +47,12 @@ GLIBC_2.22 _ZGVeN8v_log F
GLIBC_2.22 _ZGVeN8v_sin F
GLIBC_2.22 _ZGVeN8vv_pow F
GLIBC_2.22 _ZGVeN8vvv_sincos F
+GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 _ZGVbN2vl8l8_sincos F
+GLIBC_2.24 _ZGVbN4vl4l4_sincosf F
+GLIBC_2.24 _ZGVcN4vl8l8_sincos F
+GLIBC_2.24 _ZGVcN8vl4l4_sincosf F
+GLIBC_2.24 _ZGVdN4vl8l8_sincos F
+GLIBC_2.24 _ZGVdN8vl4l4_sincosf F
+GLIBC_2.24 _ZGVeN16vl4l4_sincosf F
+GLIBC_2.24 _ZGVeN8vl8l8_sincos F
b/sysdeps/x86/fpu/bits/math-vector.h
@@ -43,9 +43,9 @@
# undef __DECL_SIMD_sinf
# define __DECL_SIMD_sinf __DECL_SIMD_x86_64
# undef __DECL_SIMD_sincos
-# define __DECL_SIMD_sincos __DECL_SIMD_x86_64
+# define __DECL_SIMD_sincos __DECL_SIMD_x86_64 _Pragma ("omp declare
simd notinbranch linear (__sinx, __cosx: 1)")
# undef __DECL_SIMD_sincosf
-# define __DECL_SIMD_sincosf __DECL_SIMD_x86_64
+# define __DECL_SIMD_sincosf __DECL_SIMD_x86_64 _Pragma ("omp
declare simd notinbranch linear (__sinx, __cosx: 1)")
# undef __DECL_SIMD_log
# define __DECL_SIMD_log __DECL_SIMD_x86_64
# undef __DECL_SIMD_logf
@@ -170,8 +170,8 @@ float-vlen8-arch-ext-cflags = -mavx
float-vlen8-arch-ext2-cflags = -mavx2
float-vlen16-arch-ext-cflags = -mavx512f
-libmvec-sincos-cflags = $(libm-test-fast-math-cflags) -fopenmp
-Wno-unknown-pragmas
-libmvec-alias-cflags = $(libmvec-sincos-cflags) -fno-inline
-ffloat-store -ffinite-math-only
+libmvec-sincos-cflags = $(libm-test-fast-math-cflags) -fopenmp
-fno-inline -Wno-unknown-pragmas
+libmvec-alias-cflags = $(libmvec-sincos-cflags) -ffloat-store
-ffinite-math-only
CFLAGS-test-double-libmvec-alias-mod.c = $(libmvec-alias-cflags)
CFLAGS-test-double-libmvec-alias-avx-mod.c =
$(double-vlen4-arch-ext-cflags) $(libmvec-alias-cflags) -DREQUIRE_AVX
@@ -13,4 +13,8 @@ libmvec {
_ZGVbN4vv_powf; _ZGVcN8vv_powf; _ZGVdN8vv_powf; _ZGVeN16vv_powf;
_ZGVbN4vvv_sincosf; _ZGVcN8vvv_sincosf; _ZGVdN8vvv_sincosf;
_ZGVeN16vvv_sincosf;
}
+ GLIBC_2.24 {
+ _ZGVbN2vl8l8_sincos; _ZGVcN4vl8l8_sincos; _ZGVdN4vl8l8_sincos;
_ZGVeN8vl8l8_sincos;
+ _ZGVbN4vl4l4_sincosf; _ZGVcN8vl4l4_sincosf; _ZGVdN8vl4l4_sincosf;
_ZGVeN16vl4l4_sincosf;
+ }
}
b/sysdeps/x86_64/fpu/test-double-libmvec-sincos.c
@@ -21,6 +21,7 @@
#define N 1000
double x[N], s[N], c[N];
+double x1[N], s1[N], c1[N];
double* s_ptrs[N];
double* c_ptrs[N];
int arch_check = 1;
@@ -28,15 +29,13 @@ int arch_check = 1;
static void
init_arg (void)
{
- int i;
-
CHECK_ARCH_EXT;
arch_check = 0;
- for(i = 0; i < N; i++)
+ for(int i = 0; i < N; i++)
{
- x[i] = i / 3;
+ x[i] = x1[i] = i / 3;
s_ptrs[i] = &s[i];
c_ptrs[i] = &c[i];
}
@@ -45,16 +44,19 @@ init_arg (void)
static int
test_sincos_abi (void)
{
- int i;
-
- init_arg ();
+#pragma omp simd
+ for(int i = 0; i < N; i++)
+ sincos (x[i], s_ptrs[i], c_ptrs[i]);
- if (arch_check)
- return 77;
+ return 0;
+}
+static int
+test_sincos_linear_abi (void)
+{
#pragma omp simd
- for(i = 0; i < N; i++)
- sincos (x[i], s_ptrs[i], c_ptrs[i]);
+ for(int i = 0; i < N; i++)
+ sincos (x1[i], &s1[i], &c1[i]);
return 0;
}
@@ -62,7 +64,16 @@ test_sincos_abi (void)
static int
do_test (void)
{
- return test_sincos_abi ();
+ init_arg ();
+
+ if (arch_check)
+ return 77;
+
+ test_sincos_abi ();
+
+ test_sincos_linear_abi ();
+
+ return 0;
}
#define TEST_FUNCTION do_test ()