mirror of
git://sourceware.org/git/glibc.git
synced 2026-09-09 05:59:27 +08:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9179115ee0 | ||
|
|
80792b6102 |
Vendored
+31
@@ -172,3 +172,34 @@ else
|
||||
config_vars="$config_vars
|
||||
default-abi = lp64"
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcs attribute support" >&5
|
||||
$as_echo_n "checking for pcs attribute support... " >&6; }
|
||||
if ${libc_cv_gcc_pcs_attribute+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
__attribute__((aarch64_vector_pcs)) extern void foo (void);
|
||||
EOF
|
||||
libc_cv_gcc_pcs_attribute=no
|
||||
if ${CC-cc} -c -Wall -Werror conftest.c -o conftest.o 1>&5 \
|
||||
2>&5 ; then
|
||||
libc_cv_gcc_pcs_attribute=yes
|
||||
fi
|
||||
rm -f conftest*
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_pcs_attribute" >&5
|
||||
$as_echo "$libc_cv_gcc_pcs_attribute" >&6; }
|
||||
|
||||
# Enable libmvec by default.
|
||||
if test x"$build_mathvec" = xnotset; then
|
||||
build_mathvec=yes
|
||||
fi
|
||||
|
||||
# Only test libmvec if the compiler supports aarch64_vector_pcs.
|
||||
if test x"$build_mathvec" = xyes; then
|
||||
if test $libc_cv_gcc_pcs_attribute = yes; then
|
||||
config_vars="$config_vars
|
||||
test-mathvec = yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -20,3 +20,27 @@ if test $libc_cv_aarch64_be = yes; then
|
||||
else
|
||||
LIBC_CONFIG_VAR([default-abi], [lp64])
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for pcs attribute support],
|
||||
libc_cv_gcc_pcs_attribute, [dnl
|
||||
cat > conftest.c <<EOF
|
||||
__attribute__((aarch64_vector_pcs)) extern void foo (void);
|
||||
EOF
|
||||
libc_cv_gcc_pcs_attribute=no
|
||||
if ${CC-cc} -c -Wall -Werror conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD \
|
||||
2>&AS_MESSAGE_LOG_FD ; then
|
||||
libc_cv_gcc_pcs_attribute=yes
|
||||
fi
|
||||
rm -f conftest*])
|
||||
|
||||
# Enable libmvec by default.
|
||||
if test x"$build_mathvec" = xnotset; then
|
||||
build_mathvec=yes
|
||||
fi
|
||||
|
||||
# Only test libmvec if the compiler supports aarch64_vector_pcs.
|
||||
if test x"$build_mathvec" = xyes; then
|
||||
if test $libc_cv_gcc_pcs_attribute = yes; then
|
||||
LIBC_CONFIG_VAR([test-mathvec], [yes])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -12,3 +12,30 @@ CFLAGS-s_fmaxf.c += -ffinite-math-only
|
||||
CFLAGS-s_fmin.c += -ffinite-math-only
|
||||
CFLAGS-s_fminf.c += -ffinite-math-only
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),mathvec)
|
||||
libmvec-support += \
|
||||
libmvec_double_vlen2_cos \
|
||||
libmvec_double_vlen2_exp \
|
||||
libmvec_double_vlen2_log \
|
||||
libmvec_double_vlen2_pow \
|
||||
libmvec_double_vlen2_sin \
|
||||
libmvec_float_vlen4_cosf \
|
||||
libmvec_float_vlen4_expf \
|
||||
libmvec_float_vlen4_logf \
|
||||
libmvec_float_vlen4_powf \
|
||||
libmvec_float_vlen4_sinf \
|
||||
|
||||
install-lib += libmvec_nonshared.a
|
||||
$(objpfx)libmvec_nonshared.a: $(dep-dummy-lib); $(make-dummy-lib)
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),math)
|
||||
ifeq ($(build-mathvec),yes)
|
||||
double-vlen2-funcs = cos exp log pow sin
|
||||
float-vlen4-funcs = cos exp log pow sin
|
||||
ifeq ($(test-mathvec),yes)
|
||||
libmvec-tests += double-vlen2 float-vlen4
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
libmvec {
|
||||
GLIBC_2.30 {
|
||||
_ZGVnN2v_cos; _ZGVnN4v_cosf;
|
||||
_ZGVnN2v_exp; _ZGVnN4v_expf;
|
||||
_ZGVnN2v_log; _ZGVnN4v_logf;
|
||||
_ZGVnN2vv_pow; _ZGVnN4vv_powf;
|
||||
_ZGVnN2v_sin; _ZGVnN4v_sinf;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
/* Double-precision 2 element vector function template.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
ENTRY (VECTOR_FUNCTION)
|
||||
stp x29, x30, [sp, -288]!
|
||||
cfi_adjust_cfa_offset (288)
|
||||
cfi_rel_offset (x29, 0)
|
||||
cfi_rel_offset (x30, 8)
|
||||
mov x29, sp
|
||||
stp q8, q9, [sp, 16]
|
||||
stp q10, q11, [sp, 48]
|
||||
stp q12, q13, [sp, 80]
|
||||
stp q14, q15, [sp, 112]
|
||||
stp q16, q17, [sp, 144]
|
||||
stp q18, q19, [sp, 176]
|
||||
stp q20, q21, [sp, 208]
|
||||
stp q22, q23, [sp, 240]
|
||||
|
||||
// Use per lane load/store to avoid endianness issues.
|
||||
str q0, [sp, 272]
|
||||
ldr d0, [sp, 272]
|
||||
bl SCALAR_FUNCTION
|
||||
str d0, [sp, 272]
|
||||
ldr d0, [sp, 280]
|
||||
bl SCALAR_FUNCTION
|
||||
str d0, [sp, 280]
|
||||
ldr q0, [sp, 272]
|
||||
|
||||
ldp q8, q9, [sp, 16]
|
||||
ldp q10, q11, [sp, 48]
|
||||
ldp q12, q13, [sp, 80]
|
||||
ldp q14, q15, [sp, 112]
|
||||
ldp q16, q17, [sp, 144]
|
||||
ldp q18, q19, [sp, 176]
|
||||
ldp q20, q21, [sp, 208]
|
||||
ldp q22, q23, [sp, 240]
|
||||
ldp x29, x30, [sp], 288
|
||||
cfi_adjust_cfa_offset (288)
|
||||
cfi_restore (x29)
|
||||
cfi_restore (x30)
|
||||
ret
|
||||
END (VECTOR_FUNCTION)
|
||||
@@ -0,0 +1,21 @@
|
||||
/* Double-precision 2 element vector cos function.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define SCALAR_FUNCTION cos
|
||||
#define VECTOR_FUNCTION _ZGVnN2v_cos
|
||||
#include "libmvec_double_vlen2.h"
|
||||
@@ -0,0 +1,21 @@
|
||||
/* Double-precision 2 element vector e^x function.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define SCALAR_FUNCTION exp
|
||||
#define VECTOR_FUNCTION _ZGVnN2v_exp
|
||||
#include "libmvec_double_vlen2.h"
|
||||
@@ -0,0 +1,21 @@
|
||||
/* Double-precision 2 element vector log function.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define SCALAR_FUNCTION log
|
||||
#define VECTOR_FUNCTION _ZGVnN2v_log
|
||||
#include "libmvec_double_vlen2.h"
|
||||
@@ -0,0 +1,62 @@
|
||||
/* Double-precision 2 element vector x^y function.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
ENTRY (_ZGVnN2vv_pow)
|
||||
stp x29, x30, [sp, -304]!
|
||||
cfi_adjust_cfa_offset (304)
|
||||
cfi_rel_offset (x29, 0)
|
||||
cfi_rel_offset (x30, 8)
|
||||
mov x29, sp
|
||||
stp q8, q9, [sp, 16]
|
||||
stp q10, q11, [sp, 48]
|
||||
stp q12, q13, [sp, 80]
|
||||
stp q14, q15, [sp, 112]
|
||||
stp q16, q17, [sp, 144]
|
||||
stp q18, q19, [sp, 176]
|
||||
stp q20, q21, [sp, 208]
|
||||
stp q22, q23, [sp, 240]
|
||||
|
||||
// Use per lane load/store to avoid endianness issues.
|
||||
str q0, [sp, 272]
|
||||
str q1, [sp, 288]
|
||||
ldr d0, [sp, 272]
|
||||
ldr d1, [sp, 288]
|
||||
bl pow
|
||||
str d0, [sp, 272]
|
||||
ldr d0, [sp, 280]
|
||||
ldr d1, [sp, 296]
|
||||
bl pow
|
||||
str d0, [sp, 280]
|
||||
ldr q0, [sp, 272]
|
||||
|
||||
ldp q8, q9, [sp, 16]
|
||||
ldp q10, q11, [sp, 48]
|
||||
ldp q12, q13, [sp, 80]
|
||||
ldp q14, q15, [sp, 112]
|
||||
ldp q16, q17, [sp, 144]
|
||||
ldp q18, q19, [sp, 176]
|
||||
ldp q20, q21, [sp, 208]
|
||||
ldp q22, q23, [sp, 240]
|
||||
ldp x29, x30, [sp], 304
|
||||
cfi_adjust_cfa_offset (304)
|
||||
cfi_restore (x29)
|
||||
cfi_restore (x30)
|
||||
ret
|
||||
END (_ZGVnN2vv_pow)
|
||||
@@ -0,0 +1,21 @@
|
||||
/* Double-precision 2 element vector sin function.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define SCALAR_FUNCTION sin
|
||||
#define VECTOR_FUNCTION _ZGVnN2v_sin
|
||||
#include "libmvec_double_vlen2.h"
|
||||
@@ -0,0 +1,65 @@
|
||||
/* Single-precision 4 element vector function template.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
ENTRY (VECTOR_FUNCTION)
|
||||
stp x29, x30, [sp, -288]!
|
||||
cfi_adjust_cfa_offset (288)
|
||||
cfi_rel_offset (x29, 0)
|
||||
cfi_rel_offset (x30, 8)
|
||||
mov x29, sp
|
||||
stp q8, q9, [sp, 16]
|
||||
stp q10, q11, [sp, 48]
|
||||
stp q12, q13, [sp, 80]
|
||||
stp q14, q15, [sp, 112]
|
||||
stp q16, q17, [sp, 144]
|
||||
stp q18, q19, [sp, 176]
|
||||
stp q20, q21, [sp, 208]
|
||||
stp q22, q23, [sp, 240]
|
||||
|
||||
// Use per lane load/store to avoid endianness issues.
|
||||
str q0, [sp, 272]
|
||||
ldr s0, [sp, 272]
|
||||
bl SCALAR_FUNCTION
|
||||
str s0, [sp, 272]
|
||||
ldr s0, [sp, 276]
|
||||
bl SCALAR_FUNCTION
|
||||
str s0, [sp, 276]
|
||||
ldr s0, [sp, 280]
|
||||
bl SCALAR_FUNCTION
|
||||
str s0, [sp, 280]
|
||||
ldr s0, [sp, 284]
|
||||
bl SCALAR_FUNCTION
|
||||
str s0, [sp, 284]
|
||||
ldr q0, [sp, 272]
|
||||
|
||||
ldp q8, q9, [sp, 16]
|
||||
ldp q10, q11, [sp, 48]
|
||||
ldp q12, q13, [sp, 80]
|
||||
ldp q14, q15, [sp, 112]
|
||||
ldp q16, q17, [sp, 144]
|
||||
ldp q18, q19, [sp, 176]
|
||||
ldp q20, q21, [sp, 208]
|
||||
ldp q22, q23, [sp, 240]
|
||||
ldp x29, x30, [sp], 288
|
||||
cfi_adjust_cfa_offset (288)
|
||||
cfi_restore (x29)
|
||||
cfi_restore (x30)
|
||||
ret
|
||||
END (VECTOR_FUNCTION)
|
||||
@@ -0,0 +1,21 @@
|
||||
/* Single-precision 4 element vector cos function.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define SCALAR_FUNCTION cosf
|
||||
#define VECTOR_FUNCTION _ZGVnN4v_cosf
|
||||
#include "libmvec_float_vlen4.h"
|
||||
@@ -0,0 +1,21 @@
|
||||
/* Single-precision 4 element vector e^x function.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define SCALAR_FUNCTION expf
|
||||
#define VECTOR_FUNCTION _ZGVnN4v_expf
|
||||
#include "libmvec_float_vlen4.h"
|
||||
@@ -0,0 +1,21 @@
|
||||
/* Single-precision 4 element vector log function.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define SCALAR_FUNCTION logf
|
||||
#define VECTOR_FUNCTION _ZGVnN4v_logf
|
||||
#include "libmvec_float_vlen4.h"
|
||||
@@ -0,0 +1,70 @@
|
||||
/* Single-precision 4 element vector x^y function.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
ENTRY (_ZGVnN4vv_powf)
|
||||
stp x29, x30, [sp, -304]!
|
||||
cfi_adjust_cfa_offset (304)
|
||||
cfi_rel_offset (x29, 0)
|
||||
cfi_rel_offset (x30, 8)
|
||||
mov x29, sp
|
||||
stp q8, q9, [sp, 16]
|
||||
stp q10, q11, [sp, 48]
|
||||
stp q12, q13, [sp, 80]
|
||||
stp q14, q15, [sp, 112]
|
||||
stp q16, q17, [sp, 144]
|
||||
stp q18, q19, [sp, 176]
|
||||
stp q20, q21, [sp, 208]
|
||||
stp q22, q23, [sp, 240]
|
||||
|
||||
// Use per lane load/store to avoid endianness issues.
|
||||
str q0, [sp, 272]
|
||||
str q1, [sp, 288]
|
||||
ldr s0, [sp, 272]
|
||||
ldr s1, [sp, 288]
|
||||
bl powf
|
||||
str s0, [sp, 272]
|
||||
ldr s0, [sp, 276]
|
||||
ldr s1, [sp, 292]
|
||||
bl powf
|
||||
str s0, [sp, 276]
|
||||
ldr s0, [sp, 280]
|
||||
ldr s1, [sp, 296]
|
||||
bl powf
|
||||
str s0, [sp, 280]
|
||||
ldr s0, [sp, 284]
|
||||
ldr s1, [sp, 300]
|
||||
bl powf
|
||||
str s0, [sp, 284]
|
||||
ldr q0, [sp, 272]
|
||||
|
||||
ldp q8, q9, [sp, 16]
|
||||
ldp q10, q11, [sp, 48]
|
||||
ldp q12, q13, [sp, 80]
|
||||
ldp q14, q15, [sp, 112]
|
||||
ldp q16, q17, [sp, 144]
|
||||
ldp q18, q19, [sp, 176]
|
||||
ldp q20, q21, [sp, 208]
|
||||
ldp q22, q23, [sp, 240]
|
||||
ldp x29, x30, [sp], 304
|
||||
cfi_adjust_cfa_offset (304)
|
||||
cfi_restore (x29)
|
||||
cfi_restore (x30)
|
||||
ret
|
||||
END (_ZGVnN4vv_powf)
|
||||
@@ -0,0 +1,21 @@
|
||||
/* Single-precision 4 element vector sin function.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define SCALAR_FUNCTION sinf
|
||||
#define VECTOR_FUNCTION _ZGVnN4v_sinf
|
||||
#include "libmvec_float_vlen4.h"
|
||||
@@ -0,0 +1,40 @@
|
||||
/* Wrapper part of tests for aarch64 double vector math functions.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <arm_neon.h>
|
||||
#include "test-double-vlen2.h"
|
||||
|
||||
#define VEC_TYPE float64x2_t
|
||||
|
||||
/* Hack: VECTOR_WRAPPER declares the vector function without the pcs attribute,
|
||||
placing it here happens to work, should be fixed in test-math-vector.h. */
|
||||
__attribute__ ((aarch64_vector_pcs))
|
||||
|
||||
VECTOR_WRAPPER (WRAPPER_NAME (cos), _ZGVnN2v_cos)
|
||||
|
||||
__attribute__ ((aarch64_vector_pcs))
|
||||
VECTOR_WRAPPER (WRAPPER_NAME (exp), _ZGVnN2v_exp)
|
||||
|
||||
__attribute__ ((aarch64_vector_pcs))
|
||||
VECTOR_WRAPPER (WRAPPER_NAME (log), _ZGVnN2v_log)
|
||||
|
||||
__attribute__ ((aarch64_vector_pcs))
|
||||
VECTOR_WRAPPER_ff (WRAPPER_NAME (pow), _ZGVnN2vv_pow)
|
||||
|
||||
__attribute__ ((aarch64_vector_pcs))
|
||||
VECTOR_WRAPPER (WRAPPER_NAME (sin), _ZGVnN2v_sin)
|
||||
@@ -0,0 +1,40 @@
|
||||
/* Wrapper part of tests for float aarch64 vector math functions.
|
||||
Copyright (C) 2019 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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <arm_neon.h>
|
||||
#include "test-float-vlen4.h"
|
||||
|
||||
#define VEC_TYPE float32x4_t
|
||||
|
||||
/* Hack: VECTOR_WRAPPER declares the vector function without the pcs attribute,
|
||||
placing it here happens to work, should be fixed in test-math-vector.h. */
|
||||
__attribute__ ((aarch64_vector_pcs))
|
||||
|
||||
VECTOR_WRAPPER (WRAPPER_NAME (cosf), _ZGVnN4v_cosf)
|
||||
|
||||
__attribute__ ((aarch64_vector_pcs))
|
||||
VECTOR_WRAPPER (WRAPPER_NAME (expf), _ZGVnN4v_expf)
|
||||
|
||||
__attribute__ ((aarch64_vector_pcs))
|
||||
VECTOR_WRAPPER (WRAPPER_NAME (logf), _ZGVnN4v_logf)
|
||||
|
||||
__attribute__ ((aarch64_vector_pcs))
|
||||
VECTOR_WRAPPER_ff (WRAPPER_NAME (powf), _ZGVnN4vv_powf)
|
||||
|
||||
__attribute__ ((aarch64_vector_pcs))
|
||||
VECTOR_WRAPPER (WRAPPER_NAME (sinf), _ZGVnN4v_sinf)
|
||||
@@ -1043,6 +1043,12 @@ ifloat: 1
|
||||
ildouble: 2
|
||||
ldouble: 2
|
||||
|
||||
Function: "cos_vlen2":
|
||||
double: 1
|
||||
|
||||
Function: "cos_vlen4":
|
||||
float: 1
|
||||
|
||||
Function: "cosh":
|
||||
double: 1
|
||||
float: 1
|
||||
@@ -1601,6 +1607,12 @@ float: 1
|
||||
idouble: 1
|
||||
ifloat: 1
|
||||
|
||||
Function: "exp_vlen2":
|
||||
double: 1
|
||||
|
||||
Function: "exp_vlen4":
|
||||
float: 1
|
||||
|
||||
Function: "expm1":
|
||||
double: 1
|
||||
float: 1
|
||||
@@ -1971,6 +1983,12 @@ ifloat: 1
|
||||
ildouble: 2
|
||||
ldouble: 2
|
||||
|
||||
Function: "pow_vlen2":
|
||||
double: 1
|
||||
|
||||
Function: "pow_vlen4":
|
||||
float: 1
|
||||
|
||||
Function: "sin":
|
||||
double: 1
|
||||
float: 1
|
||||
@@ -2003,6 +2021,12 @@ ifloat: 1
|
||||
ildouble: 3
|
||||
ldouble: 3
|
||||
|
||||
Function: "sin_vlen2":
|
||||
double: 1
|
||||
|
||||
Function: "sin_vlen4":
|
||||
float: 1
|
||||
|
||||
Function: "sincos":
|
||||
double: 1
|
||||
float: 1
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
GLIBC_2.30 _ZGVnN2v_cos F
|
||||
GLIBC_2.30 _ZGVnN2v_exp F
|
||||
GLIBC_2.30 _ZGVnN2v_log F
|
||||
GLIBC_2.30 _ZGVnN2v_sin F
|
||||
GLIBC_2.30 _ZGVnN2vv_pow F
|
||||
GLIBC_2.30 _ZGVnN4v_cosf F
|
||||
GLIBC_2.30 _ZGVnN4v_expf F
|
||||
GLIBC_2.30 _ZGVnN4v_logf F
|
||||
GLIBC_2.30 _ZGVnN4v_sinf F
|
||||
GLIBC_2.30 _ZGVnN4vv_powf F
|
||||
Reference in New Issue
Block a user