@@ -318,4 +318,15 @@
#define __DECL_SIMD_tanf32x
#define __DECL_SIMD_tanf64x
#define __DECL_SIMD_tanf128x
+
+#define __DECL_SIMD_tanh
+#define __DECL_SIMD_tanhf
+#define __DECL_SIMD_tanhl
+#define __DECL_SIMD_tanhf16
+#define __DECL_SIMD_tanhf32
+#define __DECL_SIMD_tanhf64
+#define __DECL_SIMD_tanhf128
+#define __DECL_SIMD_tanhf32x
+#define __DECL_SIMD_tanhf64x
+#define __DECL_SIMD_tanhf128x
#endif
@@ -72,7 +72,7 @@ __MATHCALL_VEC (cosh,, (_Mdouble_ __x));
/* Hyperbolic sine of X. */
__MATHCALL_VEC (sinh,, (_Mdouble_ __x));
/* Hyperbolic tangent of X. */
-__MATHCALL (tanh,, (_Mdouble_ __x));
+__MATHCALL_VEC (tanh,, (_Mdouble_ __x));
#ifdef __USE_GNU
/* Cosine and sine of X. */
@@ -64,6 +64,7 @@ GLIBC_2.35 _ZGVbN2v_log1p F
GLIBC_2.35 _ZGVbN2v_log2 F
GLIBC_2.35 _ZGVbN2v_sinh F
GLIBC_2.35 _ZGVbN2v_tan F
+GLIBC_2.35 _ZGVbN2v_tanh F
GLIBC_2.35 _ZGVbN2vv_atan2 F
GLIBC_2.35 _ZGVbN2vv_hypot F
GLIBC_2.35 _ZGVbN4v_acosf F
@@ -84,6 +85,7 @@ GLIBC_2.35 _ZGVbN4v_log1pf F
GLIBC_2.35 _ZGVbN4v_log2f F
GLIBC_2.35 _ZGVbN4v_sinhf F
GLIBC_2.35 _ZGVbN4v_tanf F
+GLIBC_2.35 _ZGVbN4v_tanhf F
GLIBC_2.35 _ZGVbN4vv_atan2f F
GLIBC_2.35 _ZGVbN4vv_hypotf F
GLIBC_2.35 _ZGVcN4v_acos F
@@ -104,6 +106,7 @@ GLIBC_2.35 _ZGVcN4v_log1p F
GLIBC_2.35 _ZGVcN4v_log2 F
GLIBC_2.35 _ZGVcN4v_sinh F
GLIBC_2.35 _ZGVcN4v_tan F
+GLIBC_2.35 _ZGVcN4v_tanh F
GLIBC_2.35 _ZGVcN4vv_atan2 F
GLIBC_2.35 _ZGVcN4vv_hypot F
GLIBC_2.35 _ZGVcN8v_acosf F
@@ -124,6 +127,7 @@ GLIBC_2.35 _ZGVcN8v_log1pf F
GLIBC_2.35 _ZGVcN8v_log2f F
GLIBC_2.35 _ZGVcN8v_sinhf F
GLIBC_2.35 _ZGVcN8v_tanf F
+GLIBC_2.35 _ZGVcN8v_tanhf F
GLIBC_2.35 _ZGVcN8vv_atan2f F
GLIBC_2.35 _ZGVcN8vv_hypotf F
GLIBC_2.35 _ZGVdN4v_acos F
@@ -144,6 +148,7 @@ GLIBC_2.35 _ZGVdN4v_log1p F
GLIBC_2.35 _ZGVdN4v_log2 F
GLIBC_2.35 _ZGVdN4v_sinh F
GLIBC_2.35 _ZGVdN4v_tan F
+GLIBC_2.35 _ZGVdN4v_tanh F
GLIBC_2.35 _ZGVdN4vv_atan2 F
GLIBC_2.35 _ZGVdN4vv_hypot F
GLIBC_2.35 _ZGVdN8v_acosf F
@@ -164,6 +169,7 @@ GLIBC_2.35 _ZGVdN8v_log1pf F
GLIBC_2.35 _ZGVdN8v_log2f F
GLIBC_2.35 _ZGVdN8v_sinhf F
GLIBC_2.35 _ZGVdN8v_tanf F
+GLIBC_2.35 _ZGVdN8v_tanhf F
GLIBC_2.35 _ZGVdN8vv_atan2f F
GLIBC_2.35 _ZGVdN8vv_hypotf F
GLIBC_2.35 _ZGVeN16v_acosf F
@@ -184,6 +190,7 @@ GLIBC_2.35 _ZGVeN16v_log1pf F
GLIBC_2.35 _ZGVeN16v_log2f F
GLIBC_2.35 _ZGVeN16v_sinhf F
GLIBC_2.35 _ZGVeN16v_tanf F
+GLIBC_2.35 _ZGVeN16v_tanhf F
GLIBC_2.35 _ZGVeN16vv_atan2f F
GLIBC_2.35 _ZGVeN16vv_hypotf F
GLIBC_2.35 _ZGVeN8v_acos F
@@ -204,5 +211,6 @@ GLIBC_2.35 _ZGVeN8v_log1p F
GLIBC_2.35 _ZGVeN8v_log2 F
GLIBC_2.35 _ZGVeN8v_sinh F
GLIBC_2.35 _ZGVeN8v_tan F
+GLIBC_2.35 _ZGVeN8v_tanh F
GLIBC_2.35 _ZGVeN8vv_atan2 F
GLIBC_2.35 _ZGVeN8vv_hypot F
@@ -138,6 +138,10 @@
# define __DECL_SIMD_tan __DECL_SIMD_x86_64
# undef __DECL_SIMD_tanf
# define __DECL_SIMD_tanf __DECL_SIMD_x86_64
+# undef __DECL_SIMD_tanh
+# define __DECL_SIMD_tanh __DECL_SIMD_x86_64
+# undef __DECL_SIMD_tanhf
+# define __DECL_SIMD_tanhf __DECL_SIMD_x86_64
# endif
#endif
@@ -68,6 +68,8 @@
!GCC$ builtin (sinhf) attributes simd (notinbranch) if('x86_64')
!GCC$ builtin (tan) attributes simd (notinbranch) if('x86_64')
!GCC$ builtin (tanf) attributes simd (notinbranch) if('x86_64')
+!GCC$ builtin (tanh) attributes simd (notinbranch) if('x86_64')
+!GCC$ builtin (tanhf) attributes simd (notinbranch) if('x86_64')
!GCC$ builtin (cos) attributes simd (notinbranch) if('x32')
!GCC$ builtin (cosf) attributes simd (notinbranch) if('x32')
@@ -121,3 +123,5 @@
!GCC$ builtin (sinhf) attributes simd (notinbranch) if('x32')
!GCC$ builtin (tan) attributes simd (notinbranch) if('x32')
!GCC$ builtin (tanf) attributes simd (notinbranch) if('x32')
+!GCC$ builtin (tanh) attributes simd (notinbranch) if('x32')
+!GCC$ builtin (tanhf) attributes simd (notinbranch) if('x32')
@@ -48,6 +48,7 @@ libmvec-funcs = \
sincos \
sinh \
tan \
+ tanh \
# Define libmvec function for benchtests directory.
libmvec-bench-funcs = \
@@ -32,6 +32,7 @@ libmvec {
_ZGVbN2v_log2; _ZGVcN4v_log2; _ZGVdN4v_log2; _ZGVeN8v_log2;
_ZGVbN2v_sinh; _ZGVcN4v_sinh; _ZGVdN4v_sinh; _ZGVeN8v_sinh;
_ZGVbN2v_tan; _ZGVcN4v_tan; _ZGVdN4v_tan; _ZGVeN8v_tan;
+ _ZGVbN2v_tanh; _ZGVcN4v_tanh; _ZGVdN4v_tanh; _ZGVeN8v_tanh;
_ZGVbN2vv_atan2; _ZGVcN4vv_atan2; _ZGVdN4vv_atan2; _ZGVeN8vv_atan2;
_ZGVbN2vv_hypot; _ZGVcN4vv_hypot; _ZGVdN4vv_hypot; _ZGVeN8vv_hypot;
_ZGVbN4v_acosf; _ZGVcN8v_acosf; _ZGVdN8v_acosf; _ZGVeN16v_acosf;
@@ -52,6 +53,7 @@ libmvec {
_ZGVbN4v_log2f; _ZGVcN8v_log2f; _ZGVdN8v_log2f; _ZGVeN16v_log2f;
_ZGVbN4v_sinhf; _ZGVcN8v_sinhf; _ZGVdN8v_sinhf; _ZGVeN16v_sinhf;
_ZGVbN4v_tanf; _ZGVcN8v_tanf; _ZGVdN8v_tanf; _ZGVeN16v_tanf;
+ _ZGVbN4v_tanhf; _ZGVcN8v_tanhf; _ZGVdN8v_tanhf; _ZGVeN16v_tanhf;
_ZGVbN4vv_atan2f; _ZGVcN8vv_atan2f; _ZGVdN8vv_atan2f; _ZGVeN16vv_atan2f;
_ZGVbN4vv_hypotf; _ZGVcN8vv_hypotf; _ZGVdN8vv_hypotf; _ZGVeN16vv_hypotf;
}
@@ -2124,6 +2124,21 @@ float: 3
float128: 3
ldouble: 4
+Function: "tanh_vlen16":
+float: 1
+
+Function: "tanh_vlen2":
+double: 1
+
+Function: "tanh_vlen4":
+double: 1
+
+Function: "tanh_vlen4_avx2":
+double: 1
+
+Function: "tanh_vlen8":
+double: 1
+
Function: "tgamma":
double: 9
float: 8
new file mode 100644
@@ -0,0 +1,20 @@
+/* SSE2 version of vectorized tanh, vector length is 2.
+ Copyright (C) 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/>. */
+
+#define _ZGVbN2v_tanh _ZGVbN2v_tanh_sse2
+#include "../svml_d_tanh2_core.S"
new file mode 100644
@@ -0,0 +1,27 @@
+/* Multiple versions of vectorized tanh, vector length is 2.
+ Copyright (C) 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/>. */
+
+#define SYMBOL_NAME _ZGVbN2v_tanh
+#include "ifunc-mathvec-sse4_1.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVbN2v_tanh, __GI__ZGVbN2v_tanh, __redirect__ZGVbN2v_tanh)
+ __attribute__ ((visibility ("hidden")));
+#endif
new file mode 100644
@@ -0,0 +1,3449 @@
+/* Function tanh vectorized with SSE4.
+ Copyright (C) 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/. */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ * NOTE: Since the hyperbolic tangent function is odd
+ * (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ * value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ * We use a table lookup method to compute tanh(|x|).
+ * The basic idea is to split the input range into a number of subintervals
+ * and to approximate tanh(.) with a polynomial on each of them.
+ *
+ * IEEE SPECIAL CONDITIONS:
+ * x = [+,-]0, r = [+,-]0
+ * x = +Inf, r = +1
+ * x = -Inf, r = -1
+ * x = QNaN, r = QNaN
+ * x = SNaN, r = QNaN
+ *
+ *
+ * ALGORITHM DETAILS
+ * We handle special values in a callout function, aside from main path
+ * computations. "Special" for this algorithm are:
+ * INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ * Main path computations are organized as follows:
+ * Actually we split the interval [0, SATURATION_THRESHOLD)
+ * into a number of subintervals. On each subinterval we approximate tanh(.)
+ * with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ * are computed beforehand and stored in table. We also use
+ *
+ * y := |x| + B,
+ *
+ * here B depends on subinterval and is used to make argument
+ * closer to zero.
+ * We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ * where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ * preserve main path computation logic but return 1.0 for all arguments.
+ *
+ * Hence reconstruction looks as follows:
+ * we extract proper polynomial and range reduction coefficients
+ * (Pj and B), corresponding to subinterval, to which |x| belongs,
+ * and return
+ *
+ * r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ * NOTE: we use multiprecision technique to multiply and sum the first
+ * K terms of the polynomial. So Pj, j = 0..K are stored in
+ * table each as a pair of target precision numbers (Pj and PLj) to
+ * achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+ .text
+ .section .text.sse4,"ax",@progbits
+ENTRY(_ZGVbN2v_tanh_sse4)
+ pushq %rbp
+ cfi_def_cfa_offset(16)
+ movq %rsp, %rbp
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+ andq $-64, %rsp
+ subq $192, %rsp
+ movaps %xmm0, %xmm7
+ movups %xmm14, 48(%rsp)
+ lea 2720+__svml_dtanh_data_internal(%rip), %r8
+ movq 10496+__svml_dtanh_data_internal(%rip), %xmm5
+
+/* if VMIN, VMAX is defined for I type */
+ pxor %xmm1, %xmm1
+ .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+ pshufd $221, %xmm7, %xmm14
+ movq 10624+__svml_dtanh_data_internal(%rip), %xmm4
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+ pand %xmm5, %xmm14
+ movdqa %xmm14, %xmm3
+ psubd %xmm4, %xmm14
+ movups %xmm13, 80(%rsp)
+ movdqa %xmm14, %xmm2
+ movups %xmm15, 32(%rsp)
+ .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+ movdqa %xmm14, %xmm15
+ movq 10688+__svml_dtanh_data_internal(%rip), %xmm13
+ pcmpgtd %xmm1, %xmm2
+ pcmpgtd %xmm13, %xmm15
+ pand %xmm2, %xmm14
+ movups %xmm9, 160(%rsp)
+ .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xff, 0xff, 0xff, 0x22
+ movdqa %xmm15, %xmm9
+ andnps %xmm14, %xmm9
+ andps %xmm15, %xmm13
+ orps %xmm13, %xmm9
+
+/*
+ * VSHRIMM( I, iIndex, = iIndex, (17 - 4) );
+ * VGATHER_MATRIX( L2D, p, TAB._dbP, iIndex, 0, T_ITEM_SIZE, T_ITEM_GRAN, 13, 0, 0 );
+ */
+ psrld $10, %xmm9
+ movups %xmm10, 144(%rsp)
+ movd %xmm9, %eax
+ .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xff, 0xff, 0xff, 0x22
+ pshufd $1, %xmm9, %xmm10
+ movups %xmm12, 96(%rsp)
+ movd %xmm10, %ecx
+ movups %xmm11, 112(%rsp)
+ movups 10432+__svml_dtanh_data_internal(%rip), %xmm0
+ movslq %eax, %rax
+ andps %xmm7, %xmm0
+ movslq %ecx, %rcx
+ .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xb0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+ movups 10368+__svml_dtanh_data_internal(%rip), %xmm12
+ movups %xmm8, 176(%rsp)
+ .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xff, 0xff, 0xff, 0x22
+ andps %xmm7, %xmm12
+ movups -96(%rax,%r8), %xmm11
+ movups %xmm7, (%rsp)
+ movups -96(%rcx,%r8), %xmm8
+ movups -80(%rax,%r8), %xmm9
+ movaps %xmm9, %xmm10
+
+/* Constant loading */
+ movq 10560+__svml_dtanh_data_internal(%rip), %xmm6
+ movups -80(%rcx,%r8), %xmm5
+ pcmpgtd %xmm6, %xmm3
+ movups -64(%rax,%r8), %xmm7
+ unpckhpd %xmm8, %xmm11
+ movaps %xmm7, %xmm8
+ unpcklpd %xmm5, %xmm10
+ unpckhpd %xmm5, %xmm9
+ movups -48(%rax,%r8), %xmm5
+ movups -64(%rcx,%r8), %xmm6
+ movmskps %xmm3, %edx
+ movups -48(%rcx,%r8), %xmm3
+ unpcklpd %xmm6, %xmm8
+ unpckhpd %xmm6, %xmm7
+ movaps %xmm5, %xmm6
+ unpcklpd %xmm3, %xmm6
+ unpckhpd %xmm3, %xmm5
+ movups -32(%rax,%r8), %xmm3
+ movups -16(%rax,%r8), %xmm2
+ movaps %xmm3, %xmm4
+ movups -32(%rcx,%r8), %xmm1
+ movups -16(%rcx,%r8), %xmm14
+ unpcklpd %xmm1, %xmm4
+ unpckhpd %xmm1, %xmm3
+ movaps %xmm2, %xmm1
+ movups (%rax,%r8), %xmm13
+ unpcklpd %xmm14, %xmm1
+ unpckhpd %xmm14, %xmm2
+ movaps %xmm13, %xmm14
+ movups (%rcx,%r8), %xmm15
+ unpcklpd %xmm15, %xmm14
+ addpd %xmm14, %xmm0
+ mulpd %xmm0, %xmm2
+ addpd %xmm1, %xmm2
+ mulpd %xmm0, %xmm2
+ addpd %xmm3, %xmm2
+ mulpd %xmm0, %xmm2
+ addpd %xmm4, %xmm2
+ mulpd %xmm0, %xmm2
+ addpd %xmm5, %xmm2
+ mulpd %xmm0, %xmm2
+ addpd %xmm6, %xmm2
+ mulpd %xmm0, %xmm2
+ addpd %xmm7, %xmm2
+ mulpd %xmm0, %xmm2
+ addpd %xmm8, %xmm2
+ mulpd %xmm0, %xmm2
+ addpd %xmm9, %xmm2
+ mulpd %xmm0, %xmm2
+ addpd %xmm10, %xmm2
+ mulpd %xmm2, %xmm0
+ addpd %xmm11, %xmm0
+ orps %xmm12, %xmm0
+ andl $3, %edx
+ jne L(2)
+
+L(1):
+ movups 176(%rsp), %xmm8
+ cfi_restore(25)
+ movups 160(%rsp), %xmm9
+ cfi_restore(26)
+ movups 144(%rsp), %xmm10
+ cfi_restore(27)
+ movups 112(%rsp), %xmm11
+ cfi_restore(28)
+ movups 96(%rsp), %xmm12
+ cfi_restore(29)
+ movups 80(%rsp), %xmm13
+ cfi_restore(30)
+ movups 48(%rsp), %xmm14
+ cfi_restore(31)
+ movups 32(%rsp), %xmm15
+ cfi_restore(32)
+ movq %rbp, %rsp
+ popq %rbp
+ cfi_def_cfa(7, 8)
+ cfi_restore(6)
+ ret
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+ .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xb0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+
+L(2):
+ movups (%rsp), %xmm1
+ movups %xmm1, 64(%rsp)
+ movups %xmm0, 128(%rsp)
+ je L(1)
+ xorl %eax, %eax
+ movq %rsi, 8(%rsp)
+ movq %rdi, (%rsp)
+ movq %r12, 24(%rsp)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+ movl %eax, %r12d
+ movq %r13, 16(%rsp)
+ .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+ movl %edx, %r13d
+
+L(3):
+ btl %r12d, %r13d
+ jc L(5)
+
+L(4):
+ incl %r12d
+ cmpl $2, %r12d
+ jl L(3)
+ movq 8(%rsp), %rsi
+ cfi_restore(4)
+ movq (%rsp), %rdi
+ cfi_restore(5)
+ movq 24(%rsp), %r12
+ cfi_restore(12)
+ movq 16(%rsp), %r13
+ cfi_restore(13)
+ movups 128(%rsp), %xmm0
+ jmp L(1)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+
+L(5):
+ lea 64(%rsp,%r12,8), %rdi
+ lea 128(%rsp,%r12,8), %rsi
+ call __svml_dtanh_cout_rare_internal
+ jmp L(4)
+
+END(_ZGVbN2v_tanh_sse4)
+
+ .align 16,0x90
+
+__svml_dtanh_cout_rare_internal:
+
+ cfi_startproc
+
+ lea __dtanh_la__imldTanhTab(%rip), %rdx
+ movb 7(%rdi), %al
+ andb $-128, %al
+ shrb $7, %al
+ movzbl %al, %ecx
+ movzwl 6(%rdi), %eax
+ andl $32752, %eax
+ shrl $4, %eax
+ movq (%rdx,%rcx,8), %rdx
+ cmpl $2047, %eax
+ je L(9)
+ cmpl $2046, %eax
+ jne L(7)
+
+L(6):
+ movq %rdx, (%rsi)
+ jmp L(8)
+
+L(7):
+ movsd (%rdi), %xmm1
+ movsd __dtanh_la__imldTanhTab(%rip), %xmm0
+ addsd %xmm1, %xmm0
+ mulsd %xmm0, %xmm1
+ movsd %xmm1, (%rsi)
+
+L(8):
+ xorl %eax, %eax
+ ret
+
+L(9):
+ testl $1048575, 4(%rdi)
+ jne L(10)
+ cmpl $0, (%rdi)
+ je L(6)
+
+L(10):
+ movsd (%rdi), %xmm0
+ addsd %xmm0, %xmm0
+ movsd %xmm0, (%rsi)
+ jmp L(8)
+
+ cfi_endproc
+
+ .type __svml_dtanh_cout_rare_internal,@function
+ .size __svml_dtanh_cout_rare_internal,.-__svml_dtanh_cout_rare_internal
+
+ .section .rodata, "a"
+ .align 64
+
+__svml_dtanh_data_internal:
+ .long 0
+ .long 0
+ .long 0
+ .long 1070333952
+ .long 0
+ .long 1070858240
+ .long 0
+ .long 1071382528
+ .long 0
+ .long 1071906816
+ .long 0
+ .long 1072431104
+ .long 0
+ .long 1072955392
+ .long 0
+ .long 1073479680
+ .long 0
+ .long 1074003968
+ .long 0
+ .long 1074528256
+ .long 0
+ .long 1075052544
+ .long 0
+ .long 1075576832
+ .long 0
+ .long 1076101120
+ .long 0
+ .long 1076625408
+ .long 0
+ .long 1077149696
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1097497746
+ .long 1070305232
+ .long 2699715854
+ .long 1070817176
+ .long 3997728823
+ .long 1071273769
+ .long 3938160533
+ .long 1071759175
+ .long 193732629
+ .long 1072072293
+ .long 3144363502
+ .long 1072375075
+ .long 2548249895
+ .long 1072570303
+ .long 638218690
+ .long 1072665176
+ .long 3325726839
+ .long 1072689426
+ .long 2523455249
+ .long 1072693057
+ .long 2200391922
+ .long 1072693244
+ .long 4257836853
+ .long 1072693247
+ .long 4294954840
+ .long 1072693247
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 3167993022
+ .long 1013310014
+ .long 2889539328
+ .long 3159121931
+ .long 394645568
+ .long 1013728265
+ .long 2799920971
+ .long 1015161303
+ .long 754366556
+ .long 1013577885
+ .long 3960180508
+ .long 1014215657
+ .long 69774042
+ .long 3162475851
+ .long 2161066944
+ .long 3162264280
+ .long 923362432
+ .long 1014879086
+ .long 2160345802
+ .long 1014714211
+ .long 3729195158
+ .long 3161626453
+ .long 675671997
+ .long 1015336837
+ .long 1141527416
+ .long 1013957883
+ .long 2209699952
+ .long 3160643600
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 2750448946
+ .long 1072596012
+ .long 1257606939
+ .long 1072501079
+ .long 2619663609
+ .long 1072338011
+ .long 863303701
+ .long 1072048204
+ .long 2694810990
+ .long 1071654144
+ .long 837003456
+ .long 1070723665
+ .long 472162617
+ .long 1069359818
+ .long 532307062
+ .long 1067137790
+ .long 431106849
+ .long 1064162173
+ .long 329904022
+ .long 1059572972
+ .long 4080160942
+ .long 1053550275
+ .long 1402271583
+ .long 1044493446
+ .long 467296040
+ .long 1032344560
+ .long 26734424
+ .long 1014207804
+ .long 0
+ .long 0
+ .long 1071622681
+ .long 3153114090
+ .long 3948133409
+ .long 3217705130
+ .long 4096956694
+ .long 3218184481
+ .long 2616164369
+ .long 3218465008
+ .long 2620770434
+ .long 3218641845
+ .long 3075958072
+ .long 3218520700
+ .long 1950184789
+ .long 3217978001
+ .long 2686385024
+ .long 3216731525
+ .long 1489441818
+ .long 3214597550
+ .long 1992796697
+ .long 3211642259
+ .long 1952936976
+ .long 3207056478
+ .long 3904162951
+ .long 3201033920
+ .long 1382745445
+ .long 3191977094
+ .long 468673444
+ .long 3179828208
+ .long 3843669553
+ .long 3161691483
+ .long 0
+ .long 0
+ .long 1431655765
+ .long 3218429269
+ .long 3264395793
+ .long 3218178991
+ .long 60595194
+ .long 3217824331
+ .long 1837960166
+ .long 3217124894
+ .long 1964918946
+ .long 3214033516
+ .long 2998587684
+ .long 1068822866
+ .long 3421467326
+ .long 1069267520
+ .long 952003133
+ .long 1068506016
+ .long 1215426504
+ .long 1066495476
+ .long 2650572912
+ .long 1063503494
+ .long 4178958376
+ .long 1059043758
+ .long 3799805457
+ .long 1052940753
+ .long 3704238924
+ .long 1043831645
+ .long 2076585114
+ .long 1031813109
+ .long 1352847351
+ .long 1013591371
+ .long 0
+ .long 0
+ .long 3830371894
+ .long 3169224254
+ .long 74893150
+ .long 1069567437
+ .long 1235750664
+ .long 1069825332
+ .long 916043751
+ .long 1069924975
+ .long 4138411315
+ .long 1069655686
+ .long 829220656
+ .long 1068441660
+ .long 663246204
+ .long 3213477792
+ .long 652268865
+ .long 3214415230
+ .long 3251098232
+ .long 3212868437
+ .long 1480792335
+ .long 3209929101
+ .long 3365608027
+ .long 3205478075
+ .long 3330582883
+ .long 3199375817
+ .long 3573234945
+ .long 3190266717
+ .long 2061970086
+ .long 3178248181
+ .long 3148320390
+ .long 3160026274
+ .long 0
+ .long 0
+ .long 286337717
+ .long 1069617425
+ .long 4261152941
+ .long 1068876190
+ .long 3694459820
+ .long 1067928728
+ .long 2399079031
+ .long 3212381546
+ .long 394897286
+ .long 3215735810
+ .long 3073534041
+ .long 3215860118
+ .long 301960234
+ .long 3214124960
+ .long 3353887502
+ .long 1064191753
+ .long 4200665425
+ .long 1063741482
+ .long 2003926207
+ .long 1061090030
+ .long 2196865207
+ .long 1056528964
+ .long 2107880963
+ .long 1050526402
+ .long 3656860478
+ .long 1041425071
+ .long 881228218
+ .long 1029305120
+ .long 2612840768
+ .long 1011136029
+ .long 0
+ .long 0
+ .long 3722294196
+ .long 3181505049
+ .long 2573001951
+ .long 3216029919
+ .long 4095639908
+ .long 3216151900
+ .long 3272210374
+ .long 3215957253
+ .long 3439280785
+ .long 3214441767
+ .long 628273304
+ .long 1066085542
+ .long 3354767370
+ .long 1066343670
+ .long 300170709
+ .long 1063270296
+ .long 1870156670
+ .long 3209139074
+ .long 1580606479
+ .long 3206808937
+ .long 3818710870
+ .long 3202408589
+ .long 3126817102
+ .long 3196311305
+ .long 3320734688
+ .long 3187224127
+ .long 821170446
+ .long 3175173312
+ .long 3906480775
+ .long 3156975650
+ .long 0
+ .long 0
+ .long 428888587
+ .long 3215696314
+ .long 3125999356
+ .long 3214336891
+ .long 407196569
+ .long 1053816799
+ .long 886258254
+ .long 1066874408
+ .long 2149075781
+ .long 1067351939
+ .long 3888390356
+ .long 1065784643
+ .long 1226056234
+ .long 3211994813
+ .long 178100474
+ .long 3210723675
+ .long 4201249718
+ .long 1058328572
+ .long 3854015760
+ .long 1057324616
+ .long 3621220964
+ .long 1052982118
+ .long 1468766992
+ .long 1046916174
+ .long 2369608770
+ .long 1037879115
+ .long 327127732
+ .long 1025754505
+ .long 747046817
+ .long 1007714190
+ .long 0
+ .long 0
+ .long 4036362527
+ .long 3191151783
+ .long 839661649
+ .long 1067363059
+ .long 4269154241
+ .long 1067251747
+ .long 391446303
+ .long 1066410535
+ .long 2090623151
+ .long 3211993063
+ .long 1751510141
+ .long 3213141508
+ .long 4072216875
+ .long 3209470961
+ .long 3769618983
+ .long 1061976030
+ .long 3462945146
+ .long 1057228123
+ .long 3030849095
+ .long 3202531084
+ .long 4269010901
+ .long 3198361258
+ .long 742615277
+ .long 3192302512
+ .long 3397417437
+ .long 3183265609
+ .long 943110610
+ .long 3171141000
+ .long 371608300
+ .long 3153099348
+ .long 0
+ .long 0
+ .long 1315619150
+ .long 1066820857
+ .long 1001273821
+ .long 3214201652
+ .long 3859675203
+ .long 3212560200
+ .long 725858949
+ .long 3213658423
+ .long 2464052346
+ .long 3212913056
+ .long 1297319750
+ .long 1063307355
+ .long 563735576
+ .long 1062988089
+ .long 2756222736
+ .long 3207203944
+ .long 31207338
+ .long 3204466214
+ .long 434022900
+ .long 1052227234
+ .long 2370591882
+ .long 1048628172
+ .long 588930601
+ .long 1042556347
+ .long 3198977634
+ .long 1033474724
+ .long 1590950759
+ .long 1021415866
+ .long 195904708
+ .long 1003000389
+ .long 0
+ .long 0
+ .long 4252521214
+ .long 3198731457
+ .long 2969857811
+ .long 3217870358
+ .long 575387574
+ .long 3212943727
+ .long 67550217
+ .long 3210922992
+ .long 2955736731
+ .long 1064678043
+ .long 4193848343
+ .long 1063288304
+ .long 1845975253
+ .long 3209397546
+ .long 1025213509
+ .long 3204479174
+ .long 3713384058
+ .long 1055658730
+ .long 4120057883
+ .long 3194988032
+ .long 1573797757
+ .long 3193584787
+ .long 2514726550
+ .long 3187678317
+ .long 15343571
+ .long 3178526042
+ .long 104576940
+ .long 3166444652
+ .long 1147207168
+ .long 3148070554
+ .long 0
+ .long 0
+ .long 1467656669
+ .long 3212977156
+ .long 4154993315
+ .long 1077775111
+ .long 2465966858
+ .long 3214886059
+ .long 71777642
+ .long 1068690118
+ .long 2419763912
+ .long 1061550205
+ .long 1896047360
+ .long 3210612806
+ .long 3723555648
+ .long 1058651288
+ .long 3163703016
+ .long 1057833732
+ .long 1601936705
+ .long 3201383489
+ .long 2535509424
+ .long 3195153293
+ .long 3610885824
+ .long 1043474022
+ .long 1031698712
+ .long 1037527637
+ .long 1497459257
+ .long 1028514042
+ .long 3476455860
+ .long 1016366870
+ .long 758110873
+ .long 998719391
+ .long 0
+ .long 0
+ .long 572446067
+ .long 3204307354
+ .long 926268084
+ .long 1081104698
+ .long 1313112926
+ .long 3217861477
+ .long 3660716
+ .long 1070677720
+ .long 124568711
+ .long 3210757561
+ .long 2123022704
+ .long 1059096046
+ .long 576783408
+ .long 1059279430
+ .long 1651052980
+ .long 3204387494
+ .long 3164866735
+ .long 1051430920
+ .long 409335328
+ .long 1046695415
+ .long 3481520755
+ .long 3188046619
+ .long 1140549474
+ .long 3182373569
+ .long 708689751
+ .long 3173247717
+ .long 2627769694
+ .long 3161153086
+ .long 3804346926
+ .long 3143551592
+ .long 0
+ .long 0
+ .long 2302818369
+ .long 1064188902
+ .long 526101185
+ .long 3235013457
+ .long 2975776348
+ .long 1075224435
+ .long 1103981749
+ .long 3223699933
+ .long 4261798097
+ .long 3210280329
+ .long 30781306
+ .long 1064564655
+ .long 3939597931
+ .long 3206430909
+ .long 1816466405
+ .long 1055007949
+ .long 3868125859
+ .long 3190076997
+ .long 4218600579
+ .long 3192569835
+ .long 4167655123
+ .long 1037376568
+ .long 952533803
+ .long 1032000428
+ .long 895641221
+ .long 1022851193
+ .long 1237761065
+ .long 1010835452
+ .long 2902086315
+ .long 3133082401
+ .long 0
+ .long 0
+ .long 1899646778
+ .long 3207205638
+ .long 2434183270
+ .long 3238288976
+ .long 621380814
+ .long 1078065849
+ .long 247717525
+ .long 3225783561
+ .long 1611742563
+ .long 3212088477
+ .long 537725662
+ .long 1065131990
+ .long 3769436831
+ .long 1057148224
+ .long 3759797009
+ .long 3196422840
+ .long 842759416
+ .long 3195613094
+ .long 1736926210
+ .long 1043198029
+ .long 3915271468
+ .long 3180709675
+ .long 807416070
+ .long 3176507548
+ .long 3147759461
+ .long 3167409843
+ .long 3443382404
+ .long 3155325020
+ .long 1202615797
+ .long 3129870924
+ .long 0
+ .long 0
+ .long 1841653873
+ .long 3210074087
+ .long 2157744327
+ .long 1095928888
+ .long 3038317314
+ .long 3229013375
+ .long 2291108570
+ .long 1082519711
+ .long 707775397
+ .long 1067599411
+ .long 445214669
+ .long 3216153989
+ .long 3815354898
+ .long 1054410330
+ .long 1285070896
+ .long 3199787450
+ .long 1722630166
+ .long 1047526663
+ .long 2672844635
+ .long 3188483010
+ .long 1805520457
+ .long 3179260705
+ .long 542550567
+ .long 1026041526
+ .long 392361251
+ .long 1017320419
+ .long 562647833
+ .long 1005205418
+ .long 4253488278
+ .long 988137457
+ .long 0
+ .long 0
+ .long 3077187303
+ .long 1060497018
+ .long 1652392454
+ .long 1099206368
+ .long 414484972
+ .long 3231848150
+ .long 130592591
+ .long 1084602513
+ .long 1951534810
+ .long 1068932483
+ .long 2677544726
+ .long 3216895313
+ .long 2338009969
+ .long 3203411240
+ .long 302629286
+ .long 1051889816
+ .long 1274412910
+ .long 3193339538
+ .long 3731558070
+ .long 1038350327
+ .long 3135499196
+ .long 1030352152
+ .long 1329461873
+ .long 3170325324
+ .long 4058709792
+ .long 3161656179
+ .long 2167788642
+ .long 3149540607
+ .long 1602064437
+ .long 3132466971
+ .long 0
+ .long 0
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 3616958675
+ .long 3172564458
+ .long 1431547708
+ .long 3218429269
+ .long 3390261318
+ .long 3188010876
+ .long 1446529494
+ .long 1069617425
+ .long 913571762
+ .long 3199219810
+ .long 1583612462
+ .long 3215695720
+ .long 2995724807
+ .long 3207222498
+ .long 847913742
+ .long 1066913721
+ .long 1634876930
+ .long 3212167789
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1694159514
+ .long 1010239653
+ .long 966318664
+ .long 1069606551
+ .long 2992375944
+ .long 1072656686
+ .long 1870405289
+ .long 3217070889
+ .long 1411308967
+ .long 3218333047
+ .long 4096824853
+ .long 1068863484
+ .long 2220740425
+ .long 1069365950
+ .long 1401698298
+ .long 3215430111
+ .long 4137473768
+ .long 3215259762
+ .long 2666938667
+ .long 1066889956
+ .long 121190665
+ .long 1066187784
+ .long 821637913
+ .long 3213226090
+ .long 0
+ .long 3217096704
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1463410348
+ .long 1012925678
+ .long 2389577058
+ .long 1069735062
+ .long 1617794783
+ .long 1072647710
+ .long 1889094329
+ .long 3217191869
+ .long 1210518828
+ .long 3218309813
+ .long 1479174953
+ .long 1069010221
+ .long 3435917531
+ .long 1069290104
+ .long 291210913
+ .long 3215575029
+ .long 464478606
+ .long 3215159746
+ .long 1063797118
+ .long 1067014292
+ .long 3489481042
+ .long 1065955541
+ .long 2916293494
+ .long 3213319415
+ .long 0
+ .long 3217227776
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1308961311
+ .long 1014934498
+ .long 2204208241
+ .long 1069862983
+ .long 2945950899
+ .long 1072637797
+ .long 1107689125
+ .long 3217310565
+ .long 545938327
+ .long 3218284334
+ .long 3174275192
+ .long 1069150773
+ .long 3754729793
+ .long 1069207728
+ .long 1611554958
+ .long 3215708601
+ .long 2936527704
+ .long 3215052478
+ .long 2983784402
+ .long 1067121823
+ .long 1327150338
+ .long 1065710404
+ .long 3371320326
+ .long 3213391099
+ .long 0
+ .long 3217358848
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3546392464
+ .long 1015001497
+ .long 631120375
+ .long 1069990256
+ .long 1201634405
+ .long 1072626967
+ .long 266657677
+ .long 3217426771
+ .long 1567732958
+ .long 3218256710
+ .long 883708059
+ .long 1069284653
+ .long 1008115966
+ .long 1069119372
+ .long 2657338981
+ .long 3215830093
+ .long 3402640736
+ .long 3214939036
+ .long 1000796573
+ .long 1067211764
+ .long 53805889
+ .long 1065455799
+ .long 1736607114
+ .long 3213440608
+ .long 0
+ .long 3217489920
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2741128528
+ .long 1013617020
+ .long 3111451323
+ .long 1070116823
+ .long 1649040643
+ .long 1072615239
+ .long 3411009101
+ .long 3217540290
+ .long 3408666525
+ .long 3218227049
+ .long 60831764
+ .long 1069411415
+ .long 64016149
+ .long 1069025616
+ .long 1202785467
+ .long 3215938891
+ .long 1072151579
+ .long 3214707060
+ .long 1534357116
+ .long 1067283570
+ .long 4218468492
+ .long 1065037194
+ .long 2285827787
+ .long 3213467810
+ .long 0
+ .long 3217620992
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2659584459
+ .long 1014368295
+ .long 3537749475
+ .long 1070242630
+ .long 3072983457
+ .long 1072602635
+ .long 3507245872
+ .long 3217650938
+ .long 3434758212
+ .long 3218195466
+ .long 3801643091
+ .long 1069530660
+ .long 1128653951
+ .long 1068927067
+ .long 3580298628
+ .long 3216008547
+ .long 1645082338
+ .long 3214462237
+ .long 1048857889
+ .long 1067336943
+ .long 21547694
+ .long 1064510970
+ .long 1433152914
+ .long 3213472968
+ .long 0
+ .long 3217752064
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2718912981
+ .long 1013914074
+ .long 1823051285
+ .long 1070367623
+ .long 1714227149
+ .long 1072589179
+ .long 2128046799
+ .long 3217758540
+ .long 2655098722
+ .long 3218162081
+ .long 1690074008
+ .long 1069594780
+ .long 353091525
+ .long 1068824353
+ .long 4206393496
+ .long 3216049578
+ .long 824478721
+ .long 3214211899
+ .long 3850924188
+ .long 1067371825
+ .long 2738209029
+ .long 1063668369
+ .long 853664366
+ .long 3213456718
+ .long 0
+ .long 3217883136
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2312638749
+ .long 1013630664
+ .long 4267025360
+ .long 1070491748
+ .long 3776362539
+ .long 1072574894
+ .long 3063840907
+ .long 3217862932
+ .long 2436606365
+ .long 3218127019
+ .long 582931594
+ .long 1069646387
+ .long 3079837843
+ .long 1068718114
+ .long 3430470362
+ .long 3216083715
+ .long 1015897693
+ .long 3213958348
+ .long 765047087
+ .long 1067388396
+ .long 2337193368
+ .long 1061824569
+ .long 3002775972
+ .long 3213420044
+ .long 0
+ .long 3218014208
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2001712669
+ .long 1015665334
+ .long 1330879460
+ .long 1070636148
+ .long 2956987714
+ .long 1072551971
+ .long 4281360332
+ .long 3218013175
+ .long 3304213057
+ .long 3218063389
+ .long 3261945160
+ .long 1069715874
+ .long 3866284424
+ .long 1068553570
+ .long 3423706630
+ .long 3216121886
+ .long 259493169
+ .long 3213268437
+ .long 4223676832
+ .long 1067379852
+ .long 2765317642
+ .long 3210752240
+ .long 2292494069
+ .long 3213329490
+ .long 0
+ .long 3218145280
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1632443533
+ .long 1015769771
+ .long 3788472163
+ .long 1070757367
+ .long 2406795724
+ .long 1072518757
+ .long 1173083542
+ .long 3218140352
+ .long 3726086528
+ .long 3217906251
+ .long 1205028711
+ .long 1069793280
+ .long 2231197855
+ .long 1068156878
+ .long 2368637763
+ .long 3216148628
+ .long 2866127296
+ .long 3211617797
+ .long 2424606359
+ .long 1067309831
+ .long 2444940724
+ .long 3212180962
+ .long 3308128888
+ .long 3213151909
+ .long 0
+ .long 3218276352
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 478834383
+ .long 1014053288
+ .long 1342399495
+ .long 1070876422
+ .long 2650660168
+ .long 1072482726
+ .long 976724127
+ .long 3218226669
+ .long 962417089
+ .long 3217740546
+ .long 1060150306
+ .long 1069852926
+ .long 411739190
+ .long 1067700577
+ .long 3846786712
+ .long 3216148687
+ .long 4007187252
+ .long 1064073475
+ .long 3455779574
+ .long 1067180067
+ .long 1865169557
+ .long 3212900393
+ .long 1200620699
+ .long 3212923615
+ .long 0
+ .long 3218407424
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 267289397
+ .long 1014452734
+ .long 302318249
+ .long 1070993143
+ .long 1373990511
+ .long 1072444121
+ .long 1606419704
+ .long 3218305061
+ .long 3955669825
+ .long 3217568496
+ .long 2701083439
+ .long 1069894809
+ .long 3425188888
+ .long 1067047616
+ .long 2305426029
+ .long 3216123827
+ .long 1692531481
+ .long 1065641523
+ .long 232815703
+ .long 1067000535
+ .long 3949954748
+ .long 3213214884
+ .long 558890519
+ .long 3212487521
+ .long 0
+ .long 3218538496
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1719941932
+ .long 1006528498
+ .long 368840470
+ .long 1071107377
+ .long 1825320027
+ .long 1072403193
+ .long 538136722
+ .long 3218375283
+ .long 1431312010
+ .long 3217392305
+ .long 2586725425
+ .long 1069919291
+ .long 2680871675
+ .long 1065941593
+ .long 4123661982
+ .long 3216076488
+ .long 4235496382
+ .long 1066406926
+ .long 2618960092
+ .long 1066782660
+ .long 2333865044
+ .long 3213444845
+ .long 1545458959
+ .long 3211934181
+ .long 0
+ .long 3218669568
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 26286236
+ .long 1013191219
+ .long 990113957
+ .long 1071218987
+ .long 3284199501
+ .long 1072360200
+ .long 2981906127
+ .long 3218437190
+ .long 3154396333
+ .long 3217214106
+ .long 4182117656
+ .long 1069927061
+ .long 903677379
+ .long 3207343530
+ .long 384743261
+ .long 3216009637
+ .long 1679228359
+ .long 1066734193
+ .long 3407026595
+ .long 1066538544
+ .long 784962854
+ .long 3213588186
+ .long 1956733412
+ .long 3210979700
+ .long 0
+ .long 3218800640
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1468217372
+ .long 1015658399
+ .long 2570814109
+ .long 1071327852
+ .long 532296332
+ .long 1072315404
+ .long 318213600
+ .long 3218490738
+ .long 3661105766
+ .long 3217035931
+ .long 4085840862
+ .long 1069919095
+ .long 2798312316
+ .long 3213370099
+ .long 1668326589
+ .long 3215870599
+ .long 3158013712
+ .long 1066998409
+ .long 673205579
+ .long 1066158659
+ .long 486665227
+ .long 3213647762
+ .long 3317145528
+ .long 3208570948
+ .long 0
+ .long 3218931712
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2060955015
+ .long 1014233667
+ .long 2567098181
+ .long 1071433868
+ .long 1159081245
+ .long 1072269064
+ .long 1492598184
+ .long 3218535971
+ .long 1567055841
+ .long 3216688180
+ .long 2821222425
+ .long 1069896605
+ .long 3691290783
+ .long 3214336992
+ .long 343679101
+ .long 3215679175
+ .long 1878686296
+ .long 1067197462
+ .long 125933636
+ .long 1065636281
+ .long 421076939
+ .long 3213630573
+ .long 3748848474
+ .long 1062499186
+ .long 0
+ .long 3219062784
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1860475216
+ .long 1015320544
+ .long 439764829
+ .long 1071587361
+ .long 3870821058
+ .long 1072197223
+ .long 1430736283
+ .long 3218588540
+ .long 1597812790
+ .long 3216174065
+ .long 2398544810
+ .long 1069838732
+ .long 961452807
+ .long 3215095800
+ .long 716310499
+ .long 3215360049
+ .long 2337792646
+ .long 1067375770
+ .long 3863538422
+ .long 1064417477
+ .long 2203480844
+ .long 3213482785
+ .long 2389621902
+ .long 1063978354
+ .long 0
+ .long 3219193856
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 517838046
+ .long 1015294339
+ .long 2114713104
+ .long 1071713012
+ .long 2046328558
+ .long 1072098392
+ .long 29352448
+ .long 3218631376
+ .long 1533416325
+ .long 3215079684
+ .long 765247815
+ .long 1069724759
+ .long 24381189
+ .long 3215564623
+ .long 1213155449
+ .long 3214886044
+ .long 379420126
+ .long 1067409218
+ .long 3127061143
+ .long 3210809777
+ .long 3193663073
+ .long 3213128287
+ .long 2557278876
+ .long 1064581282
+ .long 0
+ .long 3219324928
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 201012485
+ .long 1013704982
+ .long 4147262407
+ .long 1071803766
+ .long 3048814903
+ .long 1071997795
+ .long 1260857726
+ .long 3218645540
+ .long 270462819
+ .long 3209873967
+ .long 874660781
+ .long 1069580732
+ .long 1251156804
+ .long 3215866075
+ .long 3568210118
+ .long 3214014484
+ .long 3784557811
+ .long 1067255146
+ .long 47772576
+ .long 3212562613
+ .long 2075700783
+ .long 3212539455
+ .long 1121561449
+ .long 1064698735
+ .long 0
+ .long 3219456000
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 72370286
+ .long 1015768239
+ .long 2345366573
+ .long 1071888223
+ .long 3155310239
+ .long 1071897123
+ .long 4105462806
+ .long 3218634383
+ .long 2329529114
+ .long 1067280331
+ .long 3078782452
+ .long 1069291148
+ .long 2210998062
+ .long 3215997483
+ .long 1498585052
+ .long 3212353515
+ .long 3032692199
+ .long 1066974465
+ .long 809329973
+ .long 3213081308
+ .long 2713838579
+ .long 3211547879
+ .long 1266611175
+ .long 1064568889
+ .long 0
+ .long 3219587072
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2137918782
+ .long 1013598293
+ .long 2511343836
+ .long 1071966424
+ .long 4205808243
+ .long 1071797842
+ .long 2776384587
+ .long 3218601667
+ .long 3824787134
+ .long 1068202086
+ .long 4101819712
+ .long 1068956189
+ .long 3547601806
+ .long 3216004360
+ .long 4156237724
+ .long 1064058621
+ .long 3714924071
+ .long 1066627770
+ .long 2925917146
+ .long 3213234133
+ .long 4211598888
+ .long 3209111151
+ .long 2569808389
+ .long 1064277859
+ .long 0
+ .long 3219718144
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2979324843
+ .long 1013692066
+ .long 2595126306
+ .long 1072038496
+ .long 4263058559
+ .long 1071701178
+ .long 2217257467
+ .long 3218551298
+ .long 2310932059
+ .long 1068685603
+ .long 3368327571
+ .long 1068627625
+ .long 3037419246
+ .long 3215935424
+ .long 3509936675
+ .long 1065724141
+ .long 1557247226
+ .long 1066131548
+ .long 3830787958
+ .long 3213205743
+ .long 1781883284
+ .long 1062575914
+ .long 3918078093
+ .long 1063614197
+ .long 0
+ .long 3219849216
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3630992244
+ .long 1015034507
+ .long 461360001
+ .long 1072104635
+ .long 2866201612
+ .long 1071571556
+ .long 1021729265
+ .long 3218487113
+ .long 1039036234
+ .long 1068940858
+ .long 1685105679
+ .long 1068140011
+ .long 1856275853
+ .long 3215769620
+ .long 2211306181
+ .long 1066373046
+ .long 3739405201
+ .long 1065456917
+ .long 3870269089
+ .long 3213053509
+ .long 427599213
+ .long 1063593231
+ .long 40698732
+ .long 1062709094
+ .long 0
+ .long 3219980288
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4017840557
+ .long 1014067070
+ .long 2764932206
+ .long 1072165089
+ .long 3362970633
+ .long 1071394124
+ .long 2677206355
+ .long 3218412713
+ .long 1827861303
+ .long 1069122666
+ .long 2476388705
+ .long 1067583638
+ .long 523365901
+ .long 3215556224
+ .long 1203249285
+ .long 1066574111
+ .long 4264074292
+ .long 1064402288
+ .long 3556167213
+ .long 3212827889
+ .long 3894081206
+ .long 1063908871
+ .long 2161178761
+ .long 1061130844
+ .long 0
+ .long 3220111360
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3622330478
+ .long 1016273425
+ .long 923638641
+ .long 1072245755
+ .long 239419665
+ .long 1071146518
+ .long 4085259706
+ .long 3218288969
+ .long 1284806809
+ .long 1069276013
+ .long 2806747971
+ .long 1066232498
+ .long 75259250
+ .long 3215197393
+ .long 2597116185
+ .long 1066648701
+ .long 1680670491
+ .long 3208755029
+ .long 446818184
+ .long 3212096816
+ .long 1529495144
+ .long 1063888972
+ .long 808619025
+ .long 3208443000
+ .long 0
+ .long 3220242432
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 462410646
+ .long 1015565639
+ .long 3157363066
+ .long 1072336316
+ .long 87541994
+ .long 1070853747
+ .long 2905067058
+ .long 3218115077
+ .long 1081050294
+ .long 1069306453
+ .long 4130581086
+ .long 3212259234
+ .long 1279737796
+ .long 3214531982
+ .long 901138781
+ .long 1066501065
+ .long 978916480
+ .long 3211806490
+ .long 1307294116
+ .long 3210755549
+ .long 1154728319
+ .long 1063409950
+ .long 983243444
+ .long 3209435485
+ .long 0
+ .long 3220373504
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2617212772
+ .long 1016126748
+ .long 2762378177
+ .long 1072409936
+ .long 1926160805
+ .long 1070604218
+ .long 4131898582
+ .long 3217810482
+ .long 3068505203
+ .long 1069203346
+ .long 2854543895
+ .long 3214027139
+ .long 1276437050
+ .long 3213652513
+ .long 523800203
+ .long 1066060621
+ .long 3030576699
+ .long 3212054264
+ .long 210618624
+ .long 3205409267
+ .long 3515290542
+ .long 1062456384
+ .long 1613351841
+ .long 3209185464
+ .long 0
+ .long 3220504576
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2178033281
+ .long 1016051223
+ .long 859883711
+ .long 1072469258
+ .long 4248327203
+ .long 1070195167
+ .long 4170103331
+ .long 3217497647
+ .long 3497702842
+ .long 1069026027
+ .long 669705965
+ .long 3214426190
+ .long 548733038
+ .long 3212258725
+ .long 1756337187
+ .long 1065503890
+ .long 1830841059
+ .long 3211930343
+ .long 1445563742
+ .long 1061912703
+ .long 2113494314
+ .long 1060991234
+ .long 1734825467
+ .long 3208559895
+ .long 0
+ .long 3220635648
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1674478116
+ .long 1016412476
+ .long 1178764976
+ .long 1072516719
+ .long 1119346206
+ .long 1069851736
+ .long 1526584272
+ .long 3217221512
+ .long 3575463915
+ .long 1068817773
+ .long 2913683612
+ .long 3214542291
+ .long 1135909212
+ .long 3207879094
+ .long 1952394810
+ .long 1064725296
+ .long 508910559
+ .long 3211537545
+ .long 225204077
+ .long 1062311155
+ .long 1009857186
+ .long 1056234420
+ .long 2872841632
+ .long 3207480811
+ .long 0
+ .long 3220766720
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1768234410
+ .long 1014305046
+ .long 1496797583
+ .long 1072554475
+ .long 3351833521
+ .long 1069572393
+ .long 68183265
+ .long 3216938851
+ .long 4178655528
+ .long 1068606905
+ .long 60791550
+ .long 3214483781
+ .long 1856281737
+ .long 1063701265
+ .long 4260560897
+ .long 1063778674
+ .long 2539586291
+ .long 3210979253
+ .long 2272785608
+ .long 1062198907
+ .long 1986161572
+ .long 3206910344
+ .long 1016667904
+ .long 3205797138
+ .long 0
+ .long 3220897792
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3074583847
+ .long 1017063845
+ .long 4092570620
+ .long 1072584374
+ .long 3645618684
+ .long 1069147119
+ .long 1980755111
+ .long 3216542681
+ .long 889928399
+ .long 1068320928
+ .long 1360064809
+ .long 3214330986
+ .long 2266432388
+ .long 1064407878
+ .long 4147854841
+ .long 1062471610
+ .long 1812350685
+ .long 3210287970
+ .long 3710399832
+ .long 1061728481
+ .long 2458127659
+ .long 3207279138
+ .long 287360833
+ .long 3197756422
+ .long 0
+ .long 3221028864
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 68970445
+ .long 1013643458
+ .long 3990219923
+ .long 1072607967
+ .long 97498680
+ .long 1068787106
+ .long 4136450559
+ .long 3216216395
+ .long 147179316
+ .long 1067971098
+ .long 1625987424
+ .long 3214138005
+ .long 3965878798
+ .long 1064539455
+ .long 3777445436
+ .long 1059539413
+ .long 3029913178
+ .long 3209512624
+ .long 2162291908
+ .long 1061245910
+ .long 351053474
+ .long 3207087984
+ .long 3766283083
+ .long 1056943188
+ .long 0
+ .long 3221159936
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3139580402
+ .long 1014663922
+ .long 3748810696
+ .long 1072634260
+ .long 3154943320
+ .long 1068262833
+ .long 3181856712
+ .long 3215694135
+ .long 3656356636
+ .long 1067539266
+ .long 3897588284
+ .long 3213798616
+ .long 1461831298
+ .long 1064461217
+ .long 2900114226
+ .long 3208814642
+ .long 2606420357
+ .long 3207868903
+ .long 1741152094
+ .long 1060222230
+ .long 1469206701
+ .long 3206514441
+ .long 3518993813
+ .long 1057090958
+ .long 0
+ .long 3221291008
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3285908565
+ .long 1015477239
+ .long 1797956315
+ .long 1072657271
+ .long 3302471936
+ .long 1067543167
+ .long 2151339553
+ .long 3215007235
+ .long 362228095
+ .long 1066797401
+ .long 3986406156
+ .long 3213131380
+ .long 388353381
+ .long 1064042359
+ .long 4147910906
+ .long 3209239839
+ .long 1739922885
+ .long 1056259812
+ .long 3188561056
+ .long 1058406709
+ .long 489122368
+ .long 3205182155
+ .long 202560853
+ .long 1056234231
+ .long 0
+ .long 3221422080
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3806705628
+ .long 1008327668
+ .long 884432573
+ .long 1072671353
+ .long 137405484
+ .long 1066747168
+ .long 3531994812
+ .long 3214216262
+ .long 3217445183
+ .long 1066105333
+ .long 2910288024
+ .long 3212464301
+ .long 3196212707
+ .long 1063467545
+ .long 3156563895
+ .long 3208963593
+ .long 3591285453
+ .long 1058733242
+ .long 2889132271
+ .long 1055392886
+ .long 1038377961
+ .long 3203561698
+ .long 4084672077
+ .long 1055001082
+ .long 0
+ .long 3221553152
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1881957148
+ .long 1016569186
+ .long 3451706443
+ .long 1072679940
+ .long 143468186
+ .long 1066002557
+ .long 553724800
+ .long 3213475431
+ .long 1049442771
+ .long 1065415105
+ .long 3378521943
+ .long 3211821787
+ .long 3176008209
+ .long 1062800361
+ .long 4016898691
+ .long 3208498219
+ .long 1548390021
+ .long 1058670598
+ .long 2097418483
+ .long 3202689041
+ .long 2756703589
+ .long 3201351283
+ .long 506736184
+ .long 1053405377
+ .long 0
+ .long 3221684224
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 450339788
+ .long 1015040915
+ .long 2959639058
+ .long 1072685166
+ .long 2289443405
+ .long 1065320893
+ .long 3331959139
+ .long 3212796584
+ .long 724199976
+ .long 1064616734
+ .long 938566183
+ .long 3211030741
+ .long 1640535667
+ .long 1062186735
+ .long 187996035
+ .long 3207841256
+ .long 822311531
+ .long 1058246461
+ .long 160890851
+ .long 3203087480
+ .long 3163291388
+ .long 1050479733
+ .long 578249940
+ .long 1051474021
+ .long 0
+ .long 3221815296
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 539445753
+ .long 1012635531
+ .long 3085578536
+ .long 1072688342
+ .long 2019637246
+ .long 1064510347
+ .long 2901018414
+ .long 3211991061
+ .long 2171427566
+ .long 1063868144
+ .long 678185093
+ .long 3210287638
+ .long 2685165718
+ .long 1061401571
+ .long 710336199
+ .long 3207152667
+ .long 2733135798
+ .long 1057659331
+ .long 886948177
+ .long 3202751664
+ .long 3345834247
+ .long 1052218043
+ .long 908728048
+ .long 1047925874
+ .long 0
+ .long 3221946368
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4240302093
+ .long 1016867082
+ .long 1832260410
+ .long 1072690271
+ .long 154153694
+ .long 1063730412
+ .long 2094548181
+ .long 3211211898
+ .long 1392727515
+ .long 1063180837
+ .long 3132890025
+ .long 3209604411
+ .long 483611698
+ .long 1060651750
+ .long 4246355421
+ .long 3206519479
+ .long 1424637421
+ .long 1057044161
+ .long 2138185318
+ .long 3202290304
+ .long 2276282642
+ .long 1052095798
+ .long 4227780935
+ .long 3196067472
+ .long 0
+ .long 3222077440
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2485733495
+ .long 1017000498
+ .long 484092514
+ .long 1072691442
+ .long 1653085170
+ .long 1063007344
+ .long 2893019346
+ .long 3210489400
+ .long 878866243
+ .long 1062388018
+ .long 2113174452
+ .long 3208818852
+ .long 2654141437
+ .long 1059959432
+ .long 3578550869
+ .long 3205727739
+ .long 315005006
+ .long 1056288680
+ .long 3246956604
+ .long 3201593495
+ .long 2197286540
+ .long 1051718329
+ .long 3044885069
+ .long 3196227269
+ .long 0
+ .long 3222208512
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2794994668
+ .long 1016833037
+ .long 3287420517
+ .long 1072692394
+ .long 4133778764
+ .long 1061857404
+ .long 689562148
+ .long 3209340342
+ .long 1404089106
+ .long 1061273627
+ .long 1292441425
+ .long 3207706805
+ .long 93671116
+ .long 1058816787
+ .long 2903327974
+ .long 3204626398
+ .long 4279279273
+ .long 1055202414
+ .long 134688023
+ .long 3200552187
+ .long 3315379764
+ .long 1050761310
+ .long 2945780649
+ .long 3195568939
+ .long 0
+ .long 3222339584
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2135621136
+ .long 1016053539
+ .long 309961636
+ .long 1072692934
+ .long 672792810
+ .long 1060347512
+ .long 2960305506
+ .long 3207830967
+ .long 1703867620
+ .long 1059726750
+ .long 824905914
+ .long 3206160796
+ .long 3036017847
+ .long 1057284422
+ .long 923304464
+ .long 3203122673
+ .long 1848642304
+ .long 1053791859
+ .long 2215350763
+ .long 3199158388
+ .long 3049848127
+ .long 1049324210
+ .long 3861893815
+ .long 3194293196
+ .long 0
+ .long 3222470656
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2236028675
+ .long 1016891036
+ .long 2177293363
+ .long 1072693132
+ .long 776830057
+ .long 1058856794
+ .long 4190004158
+ .long 3206340337
+ .long 209955488
+ .long 1058225857
+ .long 845130443
+ .long 3204660651
+ .long 4204313304
+ .long 1055835544
+ .long 364525198
+ .long 3201597210
+ .long 3889299905
+ .long 1052205563
+ .long 1514389355
+ .long 3197586647
+ .long 1706817756
+ .long 1047834665
+ .long 3817417318
+ .long 3192934132
+ .long 0
+ .long 3222601728
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1074033072
+ .long 1013200912
+ .long 2197899301
+ .long 1072693205
+ .long 1097614282
+ .long 1057308273
+ .long 209489097
+ .long 3204791893
+ .long 3641526339
+ .long 1056723664
+ .long 1792794946
+ .long 3203158586
+ .long 584598707
+ .long 1054254910
+ .long 253996240
+ .long 3200135633
+ .long 642640562
+ .long 1050754580
+ .long 3147361740
+ .long 3196139610
+ .long 1167319222
+ .long 1046395158
+ .long 3488053038
+ .long 3191370264
+ .long 0
+ .long 3222732800
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 871679747
+ .long 1016222468
+ .long 1586311569
+ .long 1072693232
+ .long 4199724405
+ .long 1055867613
+ .long 3041006250
+ .long 3203351246
+ .long 482130003
+ .long 1055184672
+ .long 1689676855
+ .long 3201619703
+ .long 116121201
+ .long 1052814264
+ .long 4166318198
+ .long 3198564764
+ .long 388552649
+ .long 1049191609
+ .long 1384400086
+ .long 3194577312
+ .long 135589376
+ .long 1044819515
+ .long 2497367318
+ .long 3189906305
+ .long 0
+ .long 3222863872
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 752986014
+ .long 1014740322
+ .long 1072834312
+ .long 1072693242
+ .long 1389704451
+ .long 1054277685
+ .long 817998738
+ .long 3201761329
+ .long 996777029
+ .long 1053731553
+ .long 811547911
+ .long 3200166603
+ .long 1604093935
+ .long 1051232383
+ .long 2381858127
+ .long 3197131472
+ .long 806055999
+ .long 1047703656
+ .long 443662424
+ .long 3193089938
+ .long 2855612429
+ .long 1043379518
+ .long 3671581230
+ .long 3188373004
+ .long 0
+ .long 3222994944
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4161630806
+ .long 1015796140
+ .long 3799386689
+ .long 1072693245
+ .long 516062805
+ .long 1052830799
+ .long 6188716
+ .long 3200314446
+ .long 79447568
+ .long 1052151909
+ .long 223529141
+ .long 3198586975
+ .long 1557009707
+ .long 1049758991
+ .long 1527834451
+ .long 3195539792
+ .long 3841571054
+ .long 1046184222
+ .long 3228035136
+ .long 3191570603
+ .long 2497745717
+ .long 1041799395
+ .long 3127975351
+ .long 3186863029
+ .long 0
+ .long 3223126016
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3013228433
+ .long 1015734301
+ .long 952591976
+ .long 1072693247
+ .long 3849195912
+ .long 1051256594
+ .long 1248135057
+ .long 3198740242
+ .long 1658384276
+ .long 1050712587
+ .long 3312197895
+ .long 3197147657
+ .long 2426751598
+ .long 1048219658
+ .long 2075412918
+ .long 3194074453
+ .long 1194511818
+ .long 1044659399
+ .long 2861395540
+ .long 3190045864
+ .long 1105252788
+ .long 1040325059
+ .long 278204179
+ .long 3185374362
+ .long 0
+ .long 3223257088
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4084683796
+ .long 1014352664
+ .long 3549182448
+ .long 1072693247
+ .long 4170486715
+ .long 1048984034
+ .long 3652359522
+ .long 3196467682
+ .long 1780445294
+ .long 1048420995
+ .long 3329441198
+ .long 3194856066
+ .long 663245309
+ .long 1045935418
+ .long 1918070306
+ .long 3191839818
+ .long 4225866973
+ .long 1042419329
+ .long 1974315224
+ .long 3187805832
+ .long 847480060
+ .long 1038120500
+ .long 2386310431
+ .long 3183105031
+ .long 0
+ .long 3223388160
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 951119343
+ .long 1016641415
+ .long 4194036288
+ .long 1072693247
+ .long 4207053894
+ .long 1045958742
+ .long 4131013457
+ .long 3193442390
+ .long 2503178506
+ .long 1045433060
+ .long 2309798544
+ .long 3191868132
+ .long 1503762043
+ .long 1042918157
+ .long 762244907
+ .long 3188792499
+ .long 3745081608
+ .long 1039371450
+ .long 3106729171
+ .long 3184757959
+ .long 3799011378
+ .long 1035063995
+ .long 693003136
+ .long 3180102041
+ .long 0
+ .long 3223519232
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1712896388
+ .long 1016000193
+ .long 4281307769
+ .long 1072693247
+ .long 3495080264
+ .long 1042943408
+ .long 3483806577
+ .long 3190427056
+ .long 3577360645
+ .long 1042374261
+ .long 3557467263
+ .long 3188809333
+ .long 3692227868
+ .long 1039911516
+ .long 1459944482
+ .long 3185739496
+ .long 624248087
+ .long 1036331657
+ .long 3930021706
+ .long 3181718167
+ .long 439009527
+ .long 1032014849
+ .long 3184212578
+ .long 3177110789
+ .long 0
+ .long 3223650304
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1958475666
+ .long 1013700788
+ .long 4293118680
+ .long 1072693247
+ .long 3829159519
+ .long 1039938855
+ .long 3827364885
+ .long 3187422503
+ .long 2374004141
+ .long 1039322650
+ .long 2380228874
+ .long 3185757722
+ .long 853065064
+ .long 1036916376
+ .long 3897809499
+ .long 3182694159
+ .long 2467115425
+ .long 1033300621
+ .long 2966460473
+ .long 3178687133
+ .long 4249027489
+ .long 1028973684
+ .long 3391824522
+ .long 3174085926
+ .long 0
+ .long 3223781376
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1028808661
+ .long 1012328597
+ .long 4294717113
+ .long 1072693247
+ .long 2759857858
+ .long 1036945975
+ .long 2759440340
+ .long 3184429623
+ .long 217750550
+ .long 1036278821
+ .long 228557927
+ .long 3182713893
+ .long 868996329
+ .long 1033914811
+ .long 130294465
+ .long 3179657124
+ .long 3979034581
+ .long 1030279068
+ .long 1690522291
+ .long 3175665582
+ .long 141102418
+ .long 1025941166
+ .long 3942643114
+ .long 3171030731
+ .long 0
+ .long 3223912448
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2461075155
+ .long 1015729939
+ .long 4294933437
+ .long 1072693247
+ .long 2559161110
+ .long 1033930834
+ .long 2559046852
+ .long 3181414482
+ .long 3206412049
+ .long 1033243416
+ .long 3218709064
+ .long 3179678488
+ .long 2091270467
+ .long 1030857342
+ .long 245853585
+ .long 3176629075
+ .long 1555900931
+ .long 1027267783
+ .long 1186881303
+ .long 3172654298
+ .long 1695278520
+ .long 1022918007
+ .long 1853146834
+ .long 3167983022
+ .long 0
+ .long 3224043520
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2502502488
+ .long 1016572066
+ .long 4294962713
+ .long 1072693247
+ .long 3137376149
+ .long 1030874690
+ .long 3137268820
+ .long 3178358338
+ .long 1097103169
+ .long 1030217134
+ .long 1110504267
+ .long 3176652206
+ .long 1068377398
+ .long 1027807171
+ .long 222176953
+ .long 3173610756
+ .long 3440315131
+ .long 1024267613
+ .long 1199778592
+ .long 3169654130
+ .long 257981480
+ .long 1019904983
+ .long 1388437918
+ .long 3164943417
+ .long 0
+ .long 3224174592
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3418697838
+ .long 1016821878
+ .long 4294966675
+ .long 1072693247
+ .long 3798207862
+ .long 1027825953
+ .long 3798094058
+ .long 3175309601
+ .long 3391459718
+ .long 1027200727
+ .long 3405981646
+ .long 3173635799
+ .long 3694208074
+ .long 1024764900
+ .long 2192272311
+ .long 3170602971
+ .long 1464408928
+ .long 1021279479
+ .long 2201370875
+ .long 3166665997
+ .long 4139632468
+ .long 1016902930
+ .long 2981161402
+ .long 3161912586
+ .long 0
+ .long 3224305664
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3589768515
+ .long 1013972501
+ .long 4294967265
+ .long 1072693247
+ .long 2293865510
+ .long 1023336450
+ .long 2097549026
+ .long 3170820098
+ .long 2721138850
+ .long 1022661962
+ .long 1571631120
+ .long 3169097035
+ .long 3716649917
+ .long 1020295299
+ .long 3146231247
+ .long 3166041588
+ .long 84506245
+ .long 1016656297
+ .long 2231398946
+ .long 3162043093
+ .long 3305646943
+ .long 1012441980
+ .long 402214167
+ .long 3157503609
+ .long 0
+ .long 3224436736
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2152156943
+ .long 1016184605
+ .long 4294967294
+ .long 1072693247
+ .long 1074684533
+ .long 1018634353
+ .long 1074437943
+ .long 3166118001
+ .long 967276073
+ .long 1018090988
+ .long 995296768
+ .long 3164526060
+ .long 4275132894
+ .long 1015589675
+ .long 304133116
+ .long 3161485853
+ .long 1232215992
+ .long 1012058464
+ .long 559363548
+ .long 3157444977
+ .long 1487618473
+ .long 1007759094
+ .long 2355811294
+ .long 3152771929
+ .long 3381626085
+ .long 3224537056
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .type __svml_dtanh_data_internal,@object
+ .size __svml_dtanh_data_internal,10816
+ .align 8
+
+__dtanh_la__imldTanhTab:
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 3220176896
+ .type __dtanh_la__imldTanhTab,@object
+ .size __dtanh_la__imldTanhTab,16
new file mode 100644
@@ -0,0 +1,20 @@
+/* SSE version of vectorized tanh, vector length is 4.
+ Copyright (C) 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/>. */
+
+#define _ZGVdN4v_tanh _ZGVdN4v_tanh_sse_wrapper
+#include "../svml_d_tanh4_core.S"
new file mode 100644
@@ -0,0 +1,27 @@
+/* Multiple versions of vectorized tanh, vector length is 4.
+ Copyright (C) 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/>. */
+
+#define SYMBOL_NAME _ZGVdN4v_tanh
+#include "ifunc-mathvec-avx2.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVdN4v_tanh, __GI__ZGVdN4v_tanh, __redirect__ZGVdN4v_tanh)
+ __attribute__ ((visibility ("hidden")));
+#endif
new file mode 100644
@@ -0,0 +1,3308 @@
+/* Function tanh vectorized with AVX2.
+ Copyright (C) 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/. */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ * NOTE: Since the hyperbolic tangent function is odd
+ * (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ * value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ * We use a table lookup method to compute tanh(|x|).
+ * The basic idea is to split the input range into a number of subintervals
+ * and to approximate tanh(.) with a polynomial on each of them.
+ *
+ * IEEE SPECIAL CONDITIONS:
+ * x = [+,-]0, r = [+,-]0
+ * x = +Inf, r = +1
+ * x = -Inf, r = -1
+ * x = QNaN, r = QNaN
+ * x = SNaN, r = QNaN
+ *
+ *
+ * ALGORITHM DETAILS
+ * We handle special values in a callout function, aside from main path
+ * computations. "Special" for this algorithm are:
+ * INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ * Main path computations are organized as follows:
+ * Actually we split the interval [0, SATURATION_THRESHOLD)
+ * into a number of subintervals. On each subinterval we approximate tanh(.)
+ * with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ * are computed beforehand and stored in table. We also use
+ *
+ * y := |x| + B,
+ *
+ * here B depends on subinterval and is used to make argument
+ * closer to zero.
+ * We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ * where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ * preserve main path computation logic but return 1.0 for all arguments.
+ *
+ * Hence reconstruction looks as follows:
+ * we extract proper polynomial and range reduction coefficients
+ * (Pj and B), corresponding to subinterval, to which |x| belongs,
+ * and return
+ *
+ * r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ * NOTE: we use multiprecision technique to multiply and sum the first
+ * K terms of the polynomial. So Pj, j = 0..K are stored in
+ * table each as a pair of target precision numbers (Pj and PLj) to
+ * achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+ .text
+ .section .text.avx2,"ax",@progbits
+ENTRY(_ZGVdN4v_tanh_avx2)
+ pushq %rbp
+ cfi_def_cfa_offset(16)
+ movq %rsp, %rbp
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+ andq $-64, %rsp
+ subq $384, %rsp
+ lea 2720+__svml_dtanh_data_internal(%rip), %rcx
+ vmovupd %ymm0, (%rsp)
+
+/* if VMIN, VMAX is defined for I type */
+ vpxor %xmm5, %xmm5, %xmm5
+ vmovups %ymm15, 320(%rsp)
+ vmovups %ymm14, 288(%rsp)
+ .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22
+
+/* Constant loading */
+ vmovups 10688+__svml_dtanh_data_internal(%rip), %xmm14
+ vmovups %ymm13, 256(%rsp)
+ vmovups %ymm12, 224(%rsp)
+ vmovups %ymm11, 192(%rsp)
+ vmovups %ymm10, 160(%rsp)
+ vmovups %ymm8, 32(%rsp)
+ vmovups %ymm9, 96(%rsp)
+ vandpd 10432+__svml_dtanh_data_internal(%rip), %ymm0, %ymm1
+ vandpd 10368+__svml_dtanh_data_internal(%rip), %ymm0, %ymm2
+ vextractf128 $1, %ymm0, %xmm7
+ vshufps $221, %xmm7, %xmm0, %xmm6
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+ vpand 10496+__svml_dtanh_data_internal(%rip), %xmm6, %xmm4
+ .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22
+ vpsubd 10624+__svml_dtanh_data_internal(%rip), %xmm4, %xmm15
+ vpcmpgtd %xmm5, %xmm15, %xmm0
+ vpand %xmm0, %xmm15, %xmm13
+ vpcmpgtd %xmm14, %xmm15, %xmm0
+ blendvps %xmm0, %xmm14, %xmm13
+
+/*
+ * VSHRIMM( I, iIndex, = iIndex, (17 - 4) );
+ * VGATHER_MATRIX( L2D, p, TAB._dbP, iIndex, 0, T_ITEM_SIZE, T_ITEM_GRAN, 13, 0, 0 );
+ */
+ vpsrld $10, %xmm13, %xmm12
+ vmovd %xmm12, %edx
+ vpcmpgtd 10560+__svml_dtanh_data_internal(%rip), %xmm4, %xmm3
+ vmovmskps %xmm3, %r8d
+ vpextrd $1, %xmm12, %eax
+ movslq %edx, %rdx
+ movslq %eax, %rax
+ vpextrd $2, %xmm12, %r9d
+ vpextrd $3, %xmm12, %r10d
+ movslq %r9d, %r9
+ movslq %r10d, %r10
+ vmovupd -96(%rdx,%rcx), %xmm11
+ vmovupd -96(%rax,%rcx), %xmm10
+ vmovupd -80(%rax,%rcx), %xmm3
+ vmovupd -80(%rdx,%rcx), %xmm6
+ vmovupd -64(%rdx,%rcx), %xmm13
+ vmovupd -64(%rax,%rcx), %xmm12
+ vinsertf128 $1, -96(%r9,%rcx), %ymm11, %ymm8
+ vinsertf128 $1, -96(%r10,%rcx), %ymm10, %ymm7
+ vmovupd -48(%rdx,%rcx), %xmm9
+ vunpckhpd %ymm7, %ymm8, %ymm0
+ vmovupd -48(%rax,%rcx), %xmm8
+ vinsertf128 $1, -80(%r9,%rcx), %ymm6, %ymm4
+ vinsertf128 $1, -80(%r10,%rcx), %ymm3, %ymm5
+ vunpcklpd %ymm5, %ymm4, %ymm15
+ vunpckhpd %ymm5, %ymm4, %ymm14
+ vmovupd -32(%rdx,%rcx), %xmm3
+ vmovupd -32(%rax,%rcx), %xmm4
+ vinsertf128 $1, -64(%r9,%rcx), %ymm13, %ymm11
+ vinsertf128 $1, -48(%r9,%rcx), %ymm9, %ymm7
+ vinsertf128 $1, -64(%r10,%rcx), %ymm12, %ymm10
+ vinsertf128 $1, -48(%r10,%rcx), %ymm8, %ymm6
+ vunpcklpd %ymm10, %ymm11, %ymm13
+ vunpckhpd %ymm10, %ymm11, %ymm12
+ vunpcklpd %ymm6, %ymm7, %ymm11
+ vunpckhpd %ymm6, %ymm7, %ymm10
+ vmovupd -16(%rdx,%rcx), %xmm7
+ vmovupd -16(%rax,%rcx), %xmm6
+ vinsertf128 $1, -32(%r9,%rcx), %ymm3, %ymm5
+ vinsertf128 $1, -32(%r10,%rcx), %ymm4, %ymm8
+ vunpcklpd %ymm8, %ymm5, %ymm9
+ vunpckhpd %ymm8, %ymm5, %ymm8
+ vmovupd (%rax,%rcx), %xmm5
+ vinsertf128 $1, -16(%r9,%rcx), %ymm7, %ymm3
+ vinsertf128 $1, -16(%r10,%rcx), %ymm6, %ymm4
+ vunpcklpd %ymm4, %ymm3, %ymm7
+ vunpckhpd %ymm4, %ymm3, %ymm6
+ vmovupd (%rdx,%rcx), %xmm3
+ vinsertf128 $1, (%r9,%rcx), %ymm3, %ymm4
+ vinsertf128 $1, (%r10,%rcx), %ymm5, %ymm5
+ vunpcklpd %ymm5, %ymm4, %ymm3
+ vaddpd %ymm3, %ymm1, %ymm1
+ vfmadd213pd %ymm7, %ymm1, %ymm6
+ vfmadd213pd %ymm8, %ymm1, %ymm6
+ vfmadd213pd %ymm9, %ymm1, %ymm6
+ vfmadd213pd %ymm10, %ymm1, %ymm6
+ vfmadd213pd %ymm11, %ymm1, %ymm6
+ vfmadd213pd %ymm12, %ymm1, %ymm6
+ vfmadd213pd %ymm13, %ymm1, %ymm6
+ vfmadd213pd %ymm14, %ymm1, %ymm6
+ vfmadd213pd %ymm15, %ymm1, %ymm6
+ vfmadd213pd %ymm0, %ymm1, %ymm6
+ vorpd %ymm2, %ymm6, %ymm0
+ testl %r8d, %r8d
+ jne L(2)
+
+L(1):
+ vmovups 32(%rsp), %ymm8
+ cfi_restore(91)
+ vmovups 96(%rsp), %ymm9
+ cfi_restore(92)
+ vmovups 160(%rsp), %ymm10
+ cfi_restore(93)
+ vmovups 192(%rsp), %ymm11
+ cfi_restore(94)
+ vmovups 224(%rsp), %ymm12
+ cfi_restore(95)
+ vmovups 256(%rsp), %ymm13
+ cfi_restore(96)
+ vmovups 288(%rsp), %ymm14
+ cfi_restore(97)
+ vmovups 320(%rsp), %ymm15
+ cfi_restore(98)
+ movq %rbp, %rsp
+ popq %rbp
+ cfi_def_cfa(7, 8)
+ cfi_restore(6)
+ ret
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+ .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22
+
+L(2):
+ vmovupd (%rsp), %ymm1
+ vmovupd %ymm0, 128(%rsp)
+ vmovupd %ymm1, 64(%rsp)
+ je L(1)
+ xorl %eax, %eax
+ vzeroupper
+ movq %rsi, 8(%rsp)
+ movq %rdi, (%rsp)
+ movq %r12, 24(%rsp)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x98, 0xfe, 0xff, 0xff, 0x22
+ movl %eax, %r12d
+ movq %r13, 16(%rsp)
+ .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xfe, 0xff, 0xff, 0x22
+ movl %r8d, %r13d
+
+L(3):
+ btl %r12d, %r13d
+ jc L(5)
+
+L(4):
+ incl %r12d
+ cmpl $4, %r12d
+ jl L(3)
+ movq 8(%rsp), %rsi
+ cfi_restore(4)
+ movq (%rsp), %rdi
+ cfi_restore(5)
+ movq 24(%rsp), %r12
+ cfi_restore(12)
+ movq 16(%rsp), %r13
+ cfi_restore(13)
+ vmovupd 128(%rsp), %ymm0
+ jmp L(1)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x98, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xfe, 0xff, 0xff, 0x22
+
+L(5):
+ lea 64(%rsp,%r12,8), %rdi
+ lea 128(%rsp,%r12,8), %rsi
+ call __svml_dtanh_cout_rare_internal
+ jmp L(4)
+
+END(_ZGVdN4v_tanh_avx2)
+
+ .align 16,0x90
+
+__svml_dtanh_cout_rare_internal:
+
+ cfi_startproc
+
+ lea __dtanh_la__imldTanhTab(%rip), %rdx
+ movb 7(%rdi), %al
+ andb $-128, %al
+ shrb $7, %al
+ movzbl %al, %ecx
+ movzwl 6(%rdi), %eax
+ andl $32752, %eax
+ shrl $4, %eax
+ movq (%rdx,%rcx,8), %rdx
+ cmpl $2047, %eax
+ je L(9)
+ cmpl $2046, %eax
+ jne L(7)
+
+L(6):
+ movq %rdx, (%rsi)
+ jmp L(8)
+
+L(7):
+ movsd (%rdi), %xmm1
+ movsd __dtanh_la__imldTanhTab(%rip), %xmm0
+ addsd %xmm1, %xmm0
+ mulsd %xmm0, %xmm1
+ movsd %xmm1, (%rsi)
+
+L(8):
+ xorl %eax, %eax
+ ret
+
+L(9):
+ testl $1048575, 4(%rdi)
+ jne L(10)
+ cmpl $0, (%rdi)
+ je L(6)
+
+L(10):
+ movsd (%rdi), %xmm0
+ addsd %xmm0, %xmm0
+ movsd %xmm0, (%rsi)
+ jmp L(8)
+
+ cfi_endproc
+
+ .type __svml_dtanh_cout_rare_internal,@function
+ .size __svml_dtanh_cout_rare_internal,.-__svml_dtanh_cout_rare_internal
+
+ .section .rodata, "a"
+ .align 64
+
+__svml_dtanh_data_internal:
+ .long 0
+ .long 0
+ .long 0
+ .long 1070333952
+ .long 0
+ .long 1070858240
+ .long 0
+ .long 1071382528
+ .long 0
+ .long 1071906816
+ .long 0
+ .long 1072431104
+ .long 0
+ .long 1072955392
+ .long 0
+ .long 1073479680
+ .long 0
+ .long 1074003968
+ .long 0
+ .long 1074528256
+ .long 0
+ .long 1075052544
+ .long 0
+ .long 1075576832
+ .long 0
+ .long 1076101120
+ .long 0
+ .long 1076625408
+ .long 0
+ .long 1077149696
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1097497746
+ .long 1070305232
+ .long 2699715854
+ .long 1070817176
+ .long 3997728823
+ .long 1071273769
+ .long 3938160533
+ .long 1071759175
+ .long 193732629
+ .long 1072072293
+ .long 3144363502
+ .long 1072375075
+ .long 2548249895
+ .long 1072570303
+ .long 638218690
+ .long 1072665176
+ .long 3325726839
+ .long 1072689426
+ .long 2523455249
+ .long 1072693057
+ .long 2200391922
+ .long 1072693244
+ .long 4257836853
+ .long 1072693247
+ .long 4294954840
+ .long 1072693247
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 3167993022
+ .long 1013310014
+ .long 2889539328
+ .long 3159121931
+ .long 394645568
+ .long 1013728265
+ .long 2799920971
+ .long 1015161303
+ .long 754366556
+ .long 1013577885
+ .long 3960180508
+ .long 1014215657
+ .long 69774042
+ .long 3162475851
+ .long 2161066944
+ .long 3162264280
+ .long 923362432
+ .long 1014879086
+ .long 2160345802
+ .long 1014714211
+ .long 3729195158
+ .long 3161626453
+ .long 675671997
+ .long 1015336837
+ .long 1141527416
+ .long 1013957883
+ .long 2209699952
+ .long 3160643600
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 2750448946
+ .long 1072596012
+ .long 1257606939
+ .long 1072501079
+ .long 2619663609
+ .long 1072338011
+ .long 863303701
+ .long 1072048204
+ .long 2694810990
+ .long 1071654144
+ .long 837003456
+ .long 1070723665
+ .long 472162617
+ .long 1069359818
+ .long 532307062
+ .long 1067137790
+ .long 431106849
+ .long 1064162173
+ .long 329904022
+ .long 1059572972
+ .long 4080160942
+ .long 1053550275
+ .long 1402271583
+ .long 1044493446
+ .long 467296040
+ .long 1032344560
+ .long 26734424
+ .long 1014207804
+ .long 0
+ .long 0
+ .long 1071622681
+ .long 3153114090
+ .long 3948133409
+ .long 3217705130
+ .long 4096956694
+ .long 3218184481
+ .long 2616164369
+ .long 3218465008
+ .long 2620770434
+ .long 3218641845
+ .long 3075958072
+ .long 3218520700
+ .long 1950184789
+ .long 3217978001
+ .long 2686385024
+ .long 3216731525
+ .long 1489441818
+ .long 3214597550
+ .long 1992796697
+ .long 3211642259
+ .long 1952936976
+ .long 3207056478
+ .long 3904162951
+ .long 3201033920
+ .long 1382745445
+ .long 3191977094
+ .long 468673444
+ .long 3179828208
+ .long 3843669553
+ .long 3161691483
+ .long 0
+ .long 0
+ .long 1431655765
+ .long 3218429269
+ .long 3264395793
+ .long 3218178991
+ .long 60595194
+ .long 3217824331
+ .long 1837960166
+ .long 3217124894
+ .long 1964918946
+ .long 3214033516
+ .long 2998587684
+ .long 1068822866
+ .long 3421467326
+ .long 1069267520
+ .long 952003133
+ .long 1068506016
+ .long 1215426504
+ .long 1066495476
+ .long 2650572912
+ .long 1063503494
+ .long 4178958376
+ .long 1059043758
+ .long 3799805457
+ .long 1052940753
+ .long 3704238924
+ .long 1043831645
+ .long 2076585114
+ .long 1031813109
+ .long 1352847351
+ .long 1013591371
+ .long 0
+ .long 0
+ .long 3830371894
+ .long 3169224254
+ .long 74893150
+ .long 1069567437
+ .long 1235750664
+ .long 1069825332
+ .long 916043751
+ .long 1069924975
+ .long 4138411315
+ .long 1069655686
+ .long 829220656
+ .long 1068441660
+ .long 663246204
+ .long 3213477792
+ .long 652268865
+ .long 3214415230
+ .long 3251098232
+ .long 3212868437
+ .long 1480792335
+ .long 3209929101
+ .long 3365608027
+ .long 3205478075
+ .long 3330582883
+ .long 3199375817
+ .long 3573234945
+ .long 3190266717
+ .long 2061970086
+ .long 3178248181
+ .long 3148320390
+ .long 3160026274
+ .long 0
+ .long 0
+ .long 286337717
+ .long 1069617425
+ .long 4261152941
+ .long 1068876190
+ .long 3694459820
+ .long 1067928728
+ .long 2399079031
+ .long 3212381546
+ .long 394897286
+ .long 3215735810
+ .long 3073534041
+ .long 3215860118
+ .long 301960234
+ .long 3214124960
+ .long 3353887502
+ .long 1064191753
+ .long 4200665425
+ .long 1063741482
+ .long 2003926207
+ .long 1061090030
+ .long 2196865207
+ .long 1056528964
+ .long 2107880963
+ .long 1050526402
+ .long 3656860478
+ .long 1041425071
+ .long 881228218
+ .long 1029305120
+ .long 2612840768
+ .long 1011136029
+ .long 0
+ .long 0
+ .long 3722294196
+ .long 3181505049
+ .long 2573001951
+ .long 3216029919
+ .long 4095639908
+ .long 3216151900
+ .long 3272210374
+ .long 3215957253
+ .long 3439280785
+ .long 3214441767
+ .long 628273304
+ .long 1066085542
+ .long 3354767370
+ .long 1066343670
+ .long 300170709
+ .long 1063270296
+ .long 1870156670
+ .long 3209139074
+ .long 1580606479
+ .long 3206808937
+ .long 3818710870
+ .long 3202408589
+ .long 3126817102
+ .long 3196311305
+ .long 3320734688
+ .long 3187224127
+ .long 821170446
+ .long 3175173312
+ .long 3906480775
+ .long 3156975650
+ .long 0
+ .long 0
+ .long 428888587
+ .long 3215696314
+ .long 3125999356
+ .long 3214336891
+ .long 407196569
+ .long 1053816799
+ .long 886258254
+ .long 1066874408
+ .long 2149075781
+ .long 1067351939
+ .long 3888390356
+ .long 1065784643
+ .long 1226056234
+ .long 3211994813
+ .long 178100474
+ .long 3210723675
+ .long 4201249718
+ .long 1058328572
+ .long 3854015760
+ .long 1057324616
+ .long 3621220964
+ .long 1052982118
+ .long 1468766992
+ .long 1046916174
+ .long 2369608770
+ .long 1037879115
+ .long 327127732
+ .long 1025754505
+ .long 747046817
+ .long 1007714190
+ .long 0
+ .long 0
+ .long 4036362527
+ .long 3191151783
+ .long 839661649
+ .long 1067363059
+ .long 4269154241
+ .long 1067251747
+ .long 391446303
+ .long 1066410535
+ .long 2090623151
+ .long 3211993063
+ .long 1751510141
+ .long 3213141508
+ .long 4072216875
+ .long 3209470961
+ .long 3769618983
+ .long 1061976030
+ .long 3462945146
+ .long 1057228123
+ .long 3030849095
+ .long 3202531084
+ .long 4269010901
+ .long 3198361258
+ .long 742615277
+ .long 3192302512
+ .long 3397417437
+ .long 3183265609
+ .long 943110610
+ .long 3171141000
+ .long 371608300
+ .long 3153099348
+ .long 0
+ .long 0
+ .long 1315619150
+ .long 1066820857
+ .long 1001273821
+ .long 3214201652
+ .long 3859675203
+ .long 3212560200
+ .long 725858949
+ .long 3213658423
+ .long 2464052346
+ .long 3212913056
+ .long 1297319750
+ .long 1063307355
+ .long 563735576
+ .long 1062988089
+ .long 2756222736
+ .long 3207203944
+ .long 31207338
+ .long 3204466214
+ .long 434022900
+ .long 1052227234
+ .long 2370591882
+ .long 1048628172
+ .long 588930601
+ .long 1042556347
+ .long 3198977634
+ .long 1033474724
+ .long 1590950759
+ .long 1021415866
+ .long 195904708
+ .long 1003000389
+ .long 0
+ .long 0
+ .long 4252521214
+ .long 3198731457
+ .long 2969857811
+ .long 3217870358
+ .long 575387574
+ .long 3212943727
+ .long 67550217
+ .long 3210922992
+ .long 2955736731
+ .long 1064678043
+ .long 4193848343
+ .long 1063288304
+ .long 1845975253
+ .long 3209397546
+ .long 1025213509
+ .long 3204479174
+ .long 3713384058
+ .long 1055658730
+ .long 4120057883
+ .long 3194988032
+ .long 1573797757
+ .long 3193584787
+ .long 2514726550
+ .long 3187678317
+ .long 15343571
+ .long 3178526042
+ .long 104576940
+ .long 3166444652
+ .long 1147207168
+ .long 3148070554
+ .long 0
+ .long 0
+ .long 1467656669
+ .long 3212977156
+ .long 4154993315
+ .long 1077775111
+ .long 2465966858
+ .long 3214886059
+ .long 71777642
+ .long 1068690118
+ .long 2419763912
+ .long 1061550205
+ .long 1896047360
+ .long 3210612806
+ .long 3723555648
+ .long 1058651288
+ .long 3163703016
+ .long 1057833732
+ .long 1601936705
+ .long 3201383489
+ .long 2535509424
+ .long 3195153293
+ .long 3610885824
+ .long 1043474022
+ .long 1031698712
+ .long 1037527637
+ .long 1497459257
+ .long 1028514042
+ .long 3476455860
+ .long 1016366870
+ .long 758110873
+ .long 998719391
+ .long 0
+ .long 0
+ .long 572446067
+ .long 3204307354
+ .long 926268084
+ .long 1081104698
+ .long 1313112926
+ .long 3217861477
+ .long 3660716
+ .long 1070677720
+ .long 124568711
+ .long 3210757561
+ .long 2123022704
+ .long 1059096046
+ .long 576783408
+ .long 1059279430
+ .long 1651052980
+ .long 3204387494
+ .long 3164866735
+ .long 1051430920
+ .long 409335328
+ .long 1046695415
+ .long 3481520755
+ .long 3188046619
+ .long 1140549474
+ .long 3182373569
+ .long 708689751
+ .long 3173247717
+ .long 2627769694
+ .long 3161153086
+ .long 3804346926
+ .long 3143551592
+ .long 0
+ .long 0
+ .long 2302818369
+ .long 1064188902
+ .long 526101185
+ .long 3235013457
+ .long 2975776348
+ .long 1075224435
+ .long 1103981749
+ .long 3223699933
+ .long 4261798097
+ .long 3210280329
+ .long 30781306
+ .long 1064564655
+ .long 3939597931
+ .long 3206430909
+ .long 1816466405
+ .long 1055007949
+ .long 3868125859
+ .long 3190076997
+ .long 4218600579
+ .long 3192569835
+ .long 4167655123
+ .long 1037376568
+ .long 952533803
+ .long 1032000428
+ .long 895641221
+ .long 1022851193
+ .long 1237761065
+ .long 1010835452
+ .long 2902086315
+ .long 3133082401
+ .long 0
+ .long 0
+ .long 1899646778
+ .long 3207205638
+ .long 2434183270
+ .long 3238288976
+ .long 621380814
+ .long 1078065849
+ .long 247717525
+ .long 3225783561
+ .long 1611742563
+ .long 3212088477
+ .long 537725662
+ .long 1065131990
+ .long 3769436831
+ .long 1057148224
+ .long 3759797009
+ .long 3196422840
+ .long 842759416
+ .long 3195613094
+ .long 1736926210
+ .long 1043198029
+ .long 3915271468
+ .long 3180709675
+ .long 807416070
+ .long 3176507548
+ .long 3147759461
+ .long 3167409843
+ .long 3443382404
+ .long 3155325020
+ .long 1202615797
+ .long 3129870924
+ .long 0
+ .long 0
+ .long 1841653873
+ .long 3210074087
+ .long 2157744327
+ .long 1095928888
+ .long 3038317314
+ .long 3229013375
+ .long 2291108570
+ .long 1082519711
+ .long 707775397
+ .long 1067599411
+ .long 445214669
+ .long 3216153989
+ .long 3815354898
+ .long 1054410330
+ .long 1285070896
+ .long 3199787450
+ .long 1722630166
+ .long 1047526663
+ .long 2672844635
+ .long 3188483010
+ .long 1805520457
+ .long 3179260705
+ .long 542550567
+ .long 1026041526
+ .long 392361251
+ .long 1017320419
+ .long 562647833
+ .long 1005205418
+ .long 4253488278
+ .long 988137457
+ .long 0
+ .long 0
+ .long 3077187303
+ .long 1060497018
+ .long 1652392454
+ .long 1099206368
+ .long 414484972
+ .long 3231848150
+ .long 130592591
+ .long 1084602513
+ .long 1951534810
+ .long 1068932483
+ .long 2677544726
+ .long 3216895313
+ .long 2338009969
+ .long 3203411240
+ .long 302629286
+ .long 1051889816
+ .long 1274412910
+ .long 3193339538
+ .long 3731558070
+ .long 1038350327
+ .long 3135499196
+ .long 1030352152
+ .long 1329461873
+ .long 3170325324
+ .long 4058709792
+ .long 3161656179
+ .long 2167788642
+ .long 3149540607
+ .long 1602064437
+ .long 3132466971
+ .long 0
+ .long 0
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 3616958675
+ .long 3172564458
+ .long 1431547708
+ .long 3218429269
+ .long 3390261318
+ .long 3188010876
+ .long 1446529494
+ .long 1069617425
+ .long 913571762
+ .long 3199219810
+ .long 1583612462
+ .long 3215695720
+ .long 2995724807
+ .long 3207222498
+ .long 847913742
+ .long 1066913721
+ .long 1634876930
+ .long 3212167789
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1694159514
+ .long 1010239653
+ .long 966318664
+ .long 1069606551
+ .long 2992375944
+ .long 1072656686
+ .long 1870405289
+ .long 3217070889
+ .long 1411308967
+ .long 3218333047
+ .long 4096824853
+ .long 1068863484
+ .long 2220740425
+ .long 1069365950
+ .long 1401698298
+ .long 3215430111
+ .long 4137473768
+ .long 3215259762
+ .long 2666938667
+ .long 1066889956
+ .long 121190665
+ .long 1066187784
+ .long 821637913
+ .long 3213226090
+ .long 0
+ .long 3217096704
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1463410348
+ .long 1012925678
+ .long 2389577058
+ .long 1069735062
+ .long 1617794783
+ .long 1072647710
+ .long 1889094329
+ .long 3217191869
+ .long 1210518828
+ .long 3218309813
+ .long 1479174953
+ .long 1069010221
+ .long 3435917531
+ .long 1069290104
+ .long 291210913
+ .long 3215575029
+ .long 464478606
+ .long 3215159746
+ .long 1063797118
+ .long 1067014292
+ .long 3489481042
+ .long 1065955541
+ .long 2916293494
+ .long 3213319415
+ .long 0
+ .long 3217227776
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1308961311
+ .long 1014934498
+ .long 2204208241
+ .long 1069862983
+ .long 2945950899
+ .long 1072637797
+ .long 1107689125
+ .long 3217310565
+ .long 545938327
+ .long 3218284334
+ .long 3174275192
+ .long 1069150773
+ .long 3754729793
+ .long 1069207728
+ .long 1611554958
+ .long 3215708601
+ .long 2936527704
+ .long 3215052478
+ .long 2983784402
+ .long 1067121823
+ .long 1327150338
+ .long 1065710404
+ .long 3371320326
+ .long 3213391099
+ .long 0
+ .long 3217358848
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3546392464
+ .long 1015001497
+ .long 631120375
+ .long 1069990256
+ .long 1201634405
+ .long 1072626967
+ .long 266657677
+ .long 3217426771
+ .long 1567732958
+ .long 3218256710
+ .long 883708059
+ .long 1069284653
+ .long 1008115966
+ .long 1069119372
+ .long 2657338981
+ .long 3215830093
+ .long 3402640736
+ .long 3214939036
+ .long 1000796573
+ .long 1067211764
+ .long 53805889
+ .long 1065455799
+ .long 1736607114
+ .long 3213440608
+ .long 0
+ .long 3217489920
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2741128528
+ .long 1013617020
+ .long 3111451323
+ .long 1070116823
+ .long 1649040643
+ .long 1072615239
+ .long 3411009101
+ .long 3217540290
+ .long 3408666525
+ .long 3218227049
+ .long 60831764
+ .long 1069411415
+ .long 64016149
+ .long 1069025616
+ .long 1202785467
+ .long 3215938891
+ .long 1072151579
+ .long 3214707060
+ .long 1534357116
+ .long 1067283570
+ .long 4218468492
+ .long 1065037194
+ .long 2285827787
+ .long 3213467810
+ .long 0
+ .long 3217620992
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2659584459
+ .long 1014368295
+ .long 3537749475
+ .long 1070242630
+ .long 3072983457
+ .long 1072602635
+ .long 3507245872
+ .long 3217650938
+ .long 3434758212
+ .long 3218195466
+ .long 3801643091
+ .long 1069530660
+ .long 1128653951
+ .long 1068927067
+ .long 3580298628
+ .long 3216008547
+ .long 1645082338
+ .long 3214462237
+ .long 1048857889
+ .long 1067336943
+ .long 21547694
+ .long 1064510970
+ .long 1433152914
+ .long 3213472968
+ .long 0
+ .long 3217752064
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2718912981
+ .long 1013914074
+ .long 1823051285
+ .long 1070367623
+ .long 1714227149
+ .long 1072589179
+ .long 2128046799
+ .long 3217758540
+ .long 2655098722
+ .long 3218162081
+ .long 1690074008
+ .long 1069594780
+ .long 353091525
+ .long 1068824353
+ .long 4206393496
+ .long 3216049578
+ .long 824478721
+ .long 3214211899
+ .long 3850924188
+ .long 1067371825
+ .long 2738209029
+ .long 1063668369
+ .long 853664366
+ .long 3213456718
+ .long 0
+ .long 3217883136
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2312638749
+ .long 1013630664
+ .long 4267025360
+ .long 1070491748
+ .long 3776362539
+ .long 1072574894
+ .long 3063840907
+ .long 3217862932
+ .long 2436606365
+ .long 3218127019
+ .long 582931594
+ .long 1069646387
+ .long 3079837843
+ .long 1068718114
+ .long 3430470362
+ .long 3216083715
+ .long 1015897693
+ .long 3213958348
+ .long 765047087
+ .long 1067388396
+ .long 2337193368
+ .long 1061824569
+ .long 3002775972
+ .long 3213420044
+ .long 0
+ .long 3218014208
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2001712669
+ .long 1015665334
+ .long 1330879460
+ .long 1070636148
+ .long 2956987714
+ .long 1072551971
+ .long 4281360332
+ .long 3218013175
+ .long 3304213057
+ .long 3218063389
+ .long 3261945160
+ .long 1069715874
+ .long 3866284424
+ .long 1068553570
+ .long 3423706630
+ .long 3216121886
+ .long 259493169
+ .long 3213268437
+ .long 4223676832
+ .long 1067379852
+ .long 2765317642
+ .long 3210752240
+ .long 2292494069
+ .long 3213329490
+ .long 0
+ .long 3218145280
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1632443533
+ .long 1015769771
+ .long 3788472163
+ .long 1070757367
+ .long 2406795724
+ .long 1072518757
+ .long 1173083542
+ .long 3218140352
+ .long 3726086528
+ .long 3217906251
+ .long 1205028711
+ .long 1069793280
+ .long 2231197855
+ .long 1068156878
+ .long 2368637763
+ .long 3216148628
+ .long 2866127296
+ .long 3211617797
+ .long 2424606359
+ .long 1067309831
+ .long 2444940724
+ .long 3212180962
+ .long 3308128888
+ .long 3213151909
+ .long 0
+ .long 3218276352
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 478834383
+ .long 1014053288
+ .long 1342399495
+ .long 1070876422
+ .long 2650660168
+ .long 1072482726
+ .long 976724127
+ .long 3218226669
+ .long 962417089
+ .long 3217740546
+ .long 1060150306
+ .long 1069852926
+ .long 411739190
+ .long 1067700577
+ .long 3846786712
+ .long 3216148687
+ .long 4007187252
+ .long 1064073475
+ .long 3455779574
+ .long 1067180067
+ .long 1865169557
+ .long 3212900393
+ .long 1200620699
+ .long 3212923615
+ .long 0
+ .long 3218407424
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 267289397
+ .long 1014452734
+ .long 302318249
+ .long 1070993143
+ .long 1373990511
+ .long 1072444121
+ .long 1606419704
+ .long 3218305061
+ .long 3955669825
+ .long 3217568496
+ .long 2701083439
+ .long 1069894809
+ .long 3425188888
+ .long 1067047616
+ .long 2305426029
+ .long 3216123827
+ .long 1692531481
+ .long 1065641523
+ .long 232815703
+ .long 1067000535
+ .long 3949954748
+ .long 3213214884
+ .long 558890519
+ .long 3212487521
+ .long 0
+ .long 3218538496
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1719941932
+ .long 1006528498
+ .long 368840470
+ .long 1071107377
+ .long 1825320027
+ .long 1072403193
+ .long 538136722
+ .long 3218375283
+ .long 1431312010
+ .long 3217392305
+ .long 2586725425
+ .long 1069919291
+ .long 2680871675
+ .long 1065941593
+ .long 4123661982
+ .long 3216076488
+ .long 4235496382
+ .long 1066406926
+ .long 2618960092
+ .long 1066782660
+ .long 2333865044
+ .long 3213444845
+ .long 1545458959
+ .long 3211934181
+ .long 0
+ .long 3218669568
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 26286236
+ .long 1013191219
+ .long 990113957
+ .long 1071218987
+ .long 3284199501
+ .long 1072360200
+ .long 2981906127
+ .long 3218437190
+ .long 3154396333
+ .long 3217214106
+ .long 4182117656
+ .long 1069927061
+ .long 903677379
+ .long 3207343530
+ .long 384743261
+ .long 3216009637
+ .long 1679228359
+ .long 1066734193
+ .long 3407026595
+ .long 1066538544
+ .long 784962854
+ .long 3213588186
+ .long 1956733412
+ .long 3210979700
+ .long 0
+ .long 3218800640
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1468217372
+ .long 1015658399
+ .long 2570814109
+ .long 1071327852
+ .long 532296332
+ .long 1072315404
+ .long 318213600
+ .long 3218490738
+ .long 3661105766
+ .long 3217035931
+ .long 4085840862
+ .long 1069919095
+ .long 2798312316
+ .long 3213370099
+ .long 1668326589
+ .long 3215870599
+ .long 3158013712
+ .long 1066998409
+ .long 673205579
+ .long 1066158659
+ .long 486665227
+ .long 3213647762
+ .long 3317145528
+ .long 3208570948
+ .long 0
+ .long 3218931712
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2060955015
+ .long 1014233667
+ .long 2567098181
+ .long 1071433868
+ .long 1159081245
+ .long 1072269064
+ .long 1492598184
+ .long 3218535971
+ .long 1567055841
+ .long 3216688180
+ .long 2821222425
+ .long 1069896605
+ .long 3691290783
+ .long 3214336992
+ .long 343679101
+ .long 3215679175
+ .long 1878686296
+ .long 1067197462
+ .long 125933636
+ .long 1065636281
+ .long 421076939
+ .long 3213630573
+ .long 3748848474
+ .long 1062499186
+ .long 0
+ .long 3219062784
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1860475216
+ .long 1015320544
+ .long 439764829
+ .long 1071587361
+ .long 3870821058
+ .long 1072197223
+ .long 1430736283
+ .long 3218588540
+ .long 1597812790
+ .long 3216174065
+ .long 2398544810
+ .long 1069838732
+ .long 961452807
+ .long 3215095800
+ .long 716310499
+ .long 3215360049
+ .long 2337792646
+ .long 1067375770
+ .long 3863538422
+ .long 1064417477
+ .long 2203480844
+ .long 3213482785
+ .long 2389621902
+ .long 1063978354
+ .long 0
+ .long 3219193856
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 517838046
+ .long 1015294339
+ .long 2114713104
+ .long 1071713012
+ .long 2046328558
+ .long 1072098392
+ .long 29352448
+ .long 3218631376
+ .long 1533416325
+ .long 3215079684
+ .long 765247815
+ .long 1069724759
+ .long 24381189
+ .long 3215564623
+ .long 1213155449
+ .long 3214886044
+ .long 379420126
+ .long 1067409218
+ .long 3127061143
+ .long 3210809777
+ .long 3193663073
+ .long 3213128287
+ .long 2557278876
+ .long 1064581282
+ .long 0
+ .long 3219324928
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 201012485
+ .long 1013704982
+ .long 4147262407
+ .long 1071803766
+ .long 3048814903
+ .long 1071997795
+ .long 1260857726
+ .long 3218645540
+ .long 270462819
+ .long 3209873967
+ .long 874660781
+ .long 1069580732
+ .long 1251156804
+ .long 3215866075
+ .long 3568210118
+ .long 3214014484
+ .long 3784557811
+ .long 1067255146
+ .long 47772576
+ .long 3212562613
+ .long 2075700783
+ .long 3212539455
+ .long 1121561449
+ .long 1064698735
+ .long 0
+ .long 3219456000
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 72370286
+ .long 1015768239
+ .long 2345366573
+ .long 1071888223
+ .long 3155310239
+ .long 1071897123
+ .long 4105462806
+ .long 3218634383
+ .long 2329529114
+ .long 1067280331
+ .long 3078782452
+ .long 1069291148
+ .long 2210998062
+ .long 3215997483
+ .long 1498585052
+ .long 3212353515
+ .long 3032692199
+ .long 1066974465
+ .long 809329973
+ .long 3213081308
+ .long 2713838579
+ .long 3211547879
+ .long 1266611175
+ .long 1064568889
+ .long 0
+ .long 3219587072
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2137918782
+ .long 1013598293
+ .long 2511343836
+ .long 1071966424
+ .long 4205808243
+ .long 1071797842
+ .long 2776384587
+ .long 3218601667
+ .long 3824787134
+ .long 1068202086
+ .long 4101819712
+ .long 1068956189
+ .long 3547601806
+ .long 3216004360
+ .long 4156237724
+ .long 1064058621
+ .long 3714924071
+ .long 1066627770
+ .long 2925917146
+ .long 3213234133
+ .long 4211598888
+ .long 3209111151
+ .long 2569808389
+ .long 1064277859
+ .long 0
+ .long 3219718144
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2979324843
+ .long 1013692066
+ .long 2595126306
+ .long 1072038496
+ .long 4263058559
+ .long 1071701178
+ .long 2217257467
+ .long 3218551298
+ .long 2310932059
+ .long 1068685603
+ .long 3368327571
+ .long 1068627625
+ .long 3037419246
+ .long 3215935424
+ .long 3509936675
+ .long 1065724141
+ .long 1557247226
+ .long 1066131548
+ .long 3830787958
+ .long 3213205743
+ .long 1781883284
+ .long 1062575914
+ .long 3918078093
+ .long 1063614197
+ .long 0
+ .long 3219849216
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3630992244
+ .long 1015034507
+ .long 461360001
+ .long 1072104635
+ .long 2866201612
+ .long 1071571556
+ .long 1021729265
+ .long 3218487113
+ .long 1039036234
+ .long 1068940858
+ .long 1685105679
+ .long 1068140011
+ .long 1856275853
+ .long 3215769620
+ .long 2211306181
+ .long 1066373046
+ .long 3739405201
+ .long 1065456917
+ .long 3870269089
+ .long 3213053509
+ .long 427599213
+ .long 1063593231
+ .long 40698732
+ .long 1062709094
+ .long 0
+ .long 3219980288
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4017840557
+ .long 1014067070
+ .long 2764932206
+ .long 1072165089
+ .long 3362970633
+ .long 1071394124
+ .long 2677206355
+ .long 3218412713
+ .long 1827861303
+ .long 1069122666
+ .long 2476388705
+ .long 1067583638
+ .long 523365901
+ .long 3215556224
+ .long 1203249285
+ .long 1066574111
+ .long 4264074292
+ .long 1064402288
+ .long 3556167213
+ .long 3212827889
+ .long 3894081206
+ .long 1063908871
+ .long 2161178761
+ .long 1061130844
+ .long 0
+ .long 3220111360
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3622330478
+ .long 1016273425
+ .long 923638641
+ .long 1072245755
+ .long 239419665
+ .long 1071146518
+ .long 4085259706
+ .long 3218288969
+ .long 1284806809
+ .long 1069276013
+ .long 2806747971
+ .long 1066232498
+ .long 75259250
+ .long 3215197393
+ .long 2597116185
+ .long 1066648701
+ .long 1680670491
+ .long 3208755029
+ .long 446818184
+ .long 3212096816
+ .long 1529495144
+ .long 1063888972
+ .long 808619025
+ .long 3208443000
+ .long 0
+ .long 3220242432
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 462410646
+ .long 1015565639
+ .long 3157363066
+ .long 1072336316
+ .long 87541994
+ .long 1070853747
+ .long 2905067058
+ .long 3218115077
+ .long 1081050294
+ .long 1069306453
+ .long 4130581086
+ .long 3212259234
+ .long 1279737796
+ .long 3214531982
+ .long 901138781
+ .long 1066501065
+ .long 978916480
+ .long 3211806490
+ .long 1307294116
+ .long 3210755549
+ .long 1154728319
+ .long 1063409950
+ .long 983243444
+ .long 3209435485
+ .long 0
+ .long 3220373504
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2617212772
+ .long 1016126748
+ .long 2762378177
+ .long 1072409936
+ .long 1926160805
+ .long 1070604218
+ .long 4131898582
+ .long 3217810482
+ .long 3068505203
+ .long 1069203346
+ .long 2854543895
+ .long 3214027139
+ .long 1276437050
+ .long 3213652513
+ .long 523800203
+ .long 1066060621
+ .long 3030576699
+ .long 3212054264
+ .long 210618624
+ .long 3205409267
+ .long 3515290542
+ .long 1062456384
+ .long 1613351841
+ .long 3209185464
+ .long 0
+ .long 3220504576
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2178033281
+ .long 1016051223
+ .long 859883711
+ .long 1072469258
+ .long 4248327203
+ .long 1070195167
+ .long 4170103331
+ .long 3217497647
+ .long 3497702842
+ .long 1069026027
+ .long 669705965
+ .long 3214426190
+ .long 548733038
+ .long 3212258725
+ .long 1756337187
+ .long 1065503890
+ .long 1830841059
+ .long 3211930343
+ .long 1445563742
+ .long 1061912703
+ .long 2113494314
+ .long 1060991234
+ .long 1734825467
+ .long 3208559895
+ .long 0
+ .long 3220635648
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1674478116
+ .long 1016412476
+ .long 1178764976
+ .long 1072516719
+ .long 1119346206
+ .long 1069851736
+ .long 1526584272
+ .long 3217221512
+ .long 3575463915
+ .long 1068817773
+ .long 2913683612
+ .long 3214542291
+ .long 1135909212
+ .long 3207879094
+ .long 1952394810
+ .long 1064725296
+ .long 508910559
+ .long 3211537545
+ .long 225204077
+ .long 1062311155
+ .long 1009857186
+ .long 1056234420
+ .long 2872841632
+ .long 3207480811
+ .long 0
+ .long 3220766720
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1768234410
+ .long 1014305046
+ .long 1496797583
+ .long 1072554475
+ .long 3351833521
+ .long 1069572393
+ .long 68183265
+ .long 3216938851
+ .long 4178655528
+ .long 1068606905
+ .long 60791550
+ .long 3214483781
+ .long 1856281737
+ .long 1063701265
+ .long 4260560897
+ .long 1063778674
+ .long 2539586291
+ .long 3210979253
+ .long 2272785608
+ .long 1062198907
+ .long 1986161572
+ .long 3206910344
+ .long 1016667904
+ .long 3205797138
+ .long 0
+ .long 3220897792
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3074583847
+ .long 1017063845
+ .long 4092570620
+ .long 1072584374
+ .long 3645618684
+ .long 1069147119
+ .long 1980755111
+ .long 3216542681
+ .long 889928399
+ .long 1068320928
+ .long 1360064809
+ .long 3214330986
+ .long 2266432388
+ .long 1064407878
+ .long 4147854841
+ .long 1062471610
+ .long 1812350685
+ .long 3210287970
+ .long 3710399832
+ .long 1061728481
+ .long 2458127659
+ .long 3207279138
+ .long 287360833
+ .long 3197756422
+ .long 0
+ .long 3221028864
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 68970445
+ .long 1013643458
+ .long 3990219923
+ .long 1072607967
+ .long 97498680
+ .long 1068787106
+ .long 4136450559
+ .long 3216216395
+ .long 147179316
+ .long 1067971098
+ .long 1625987424
+ .long 3214138005
+ .long 3965878798
+ .long 1064539455
+ .long 3777445436
+ .long 1059539413
+ .long 3029913178
+ .long 3209512624
+ .long 2162291908
+ .long 1061245910
+ .long 351053474
+ .long 3207087984
+ .long 3766283083
+ .long 1056943188
+ .long 0
+ .long 3221159936
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3139580402
+ .long 1014663922
+ .long 3748810696
+ .long 1072634260
+ .long 3154943320
+ .long 1068262833
+ .long 3181856712
+ .long 3215694135
+ .long 3656356636
+ .long 1067539266
+ .long 3897588284
+ .long 3213798616
+ .long 1461831298
+ .long 1064461217
+ .long 2900114226
+ .long 3208814642
+ .long 2606420357
+ .long 3207868903
+ .long 1741152094
+ .long 1060222230
+ .long 1469206701
+ .long 3206514441
+ .long 3518993813
+ .long 1057090958
+ .long 0
+ .long 3221291008
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3285908565
+ .long 1015477239
+ .long 1797956315
+ .long 1072657271
+ .long 3302471936
+ .long 1067543167
+ .long 2151339553
+ .long 3215007235
+ .long 362228095
+ .long 1066797401
+ .long 3986406156
+ .long 3213131380
+ .long 388353381
+ .long 1064042359
+ .long 4147910906
+ .long 3209239839
+ .long 1739922885
+ .long 1056259812
+ .long 3188561056
+ .long 1058406709
+ .long 489122368
+ .long 3205182155
+ .long 202560853
+ .long 1056234231
+ .long 0
+ .long 3221422080
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3806705628
+ .long 1008327668
+ .long 884432573
+ .long 1072671353
+ .long 137405484
+ .long 1066747168
+ .long 3531994812
+ .long 3214216262
+ .long 3217445183
+ .long 1066105333
+ .long 2910288024
+ .long 3212464301
+ .long 3196212707
+ .long 1063467545
+ .long 3156563895
+ .long 3208963593
+ .long 3591285453
+ .long 1058733242
+ .long 2889132271
+ .long 1055392886
+ .long 1038377961
+ .long 3203561698
+ .long 4084672077
+ .long 1055001082
+ .long 0
+ .long 3221553152
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1881957148
+ .long 1016569186
+ .long 3451706443
+ .long 1072679940
+ .long 143468186
+ .long 1066002557
+ .long 553724800
+ .long 3213475431
+ .long 1049442771
+ .long 1065415105
+ .long 3378521943
+ .long 3211821787
+ .long 3176008209
+ .long 1062800361
+ .long 4016898691
+ .long 3208498219
+ .long 1548390021
+ .long 1058670598
+ .long 2097418483
+ .long 3202689041
+ .long 2756703589
+ .long 3201351283
+ .long 506736184
+ .long 1053405377
+ .long 0
+ .long 3221684224
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 450339788
+ .long 1015040915
+ .long 2959639058
+ .long 1072685166
+ .long 2289443405
+ .long 1065320893
+ .long 3331959139
+ .long 3212796584
+ .long 724199976
+ .long 1064616734
+ .long 938566183
+ .long 3211030741
+ .long 1640535667
+ .long 1062186735
+ .long 187996035
+ .long 3207841256
+ .long 822311531
+ .long 1058246461
+ .long 160890851
+ .long 3203087480
+ .long 3163291388
+ .long 1050479733
+ .long 578249940
+ .long 1051474021
+ .long 0
+ .long 3221815296
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 539445753
+ .long 1012635531
+ .long 3085578536
+ .long 1072688342
+ .long 2019637246
+ .long 1064510347
+ .long 2901018414
+ .long 3211991061
+ .long 2171427566
+ .long 1063868144
+ .long 678185093
+ .long 3210287638
+ .long 2685165718
+ .long 1061401571
+ .long 710336199
+ .long 3207152667
+ .long 2733135798
+ .long 1057659331
+ .long 886948177
+ .long 3202751664
+ .long 3345834247
+ .long 1052218043
+ .long 908728048
+ .long 1047925874
+ .long 0
+ .long 3221946368
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4240302093
+ .long 1016867082
+ .long 1832260410
+ .long 1072690271
+ .long 154153694
+ .long 1063730412
+ .long 2094548181
+ .long 3211211898
+ .long 1392727515
+ .long 1063180837
+ .long 3132890025
+ .long 3209604411
+ .long 483611698
+ .long 1060651750
+ .long 4246355421
+ .long 3206519479
+ .long 1424637421
+ .long 1057044161
+ .long 2138185318
+ .long 3202290304
+ .long 2276282642
+ .long 1052095798
+ .long 4227780935
+ .long 3196067472
+ .long 0
+ .long 3222077440
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2485733495
+ .long 1017000498
+ .long 484092514
+ .long 1072691442
+ .long 1653085170
+ .long 1063007344
+ .long 2893019346
+ .long 3210489400
+ .long 878866243
+ .long 1062388018
+ .long 2113174452
+ .long 3208818852
+ .long 2654141437
+ .long 1059959432
+ .long 3578550869
+ .long 3205727739
+ .long 315005006
+ .long 1056288680
+ .long 3246956604
+ .long 3201593495
+ .long 2197286540
+ .long 1051718329
+ .long 3044885069
+ .long 3196227269
+ .long 0
+ .long 3222208512
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2794994668
+ .long 1016833037
+ .long 3287420517
+ .long 1072692394
+ .long 4133778764
+ .long 1061857404
+ .long 689562148
+ .long 3209340342
+ .long 1404089106
+ .long 1061273627
+ .long 1292441425
+ .long 3207706805
+ .long 93671116
+ .long 1058816787
+ .long 2903327974
+ .long 3204626398
+ .long 4279279273
+ .long 1055202414
+ .long 134688023
+ .long 3200552187
+ .long 3315379764
+ .long 1050761310
+ .long 2945780649
+ .long 3195568939
+ .long 0
+ .long 3222339584
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2135621136
+ .long 1016053539
+ .long 309961636
+ .long 1072692934
+ .long 672792810
+ .long 1060347512
+ .long 2960305506
+ .long 3207830967
+ .long 1703867620
+ .long 1059726750
+ .long 824905914
+ .long 3206160796
+ .long 3036017847
+ .long 1057284422
+ .long 923304464
+ .long 3203122673
+ .long 1848642304
+ .long 1053791859
+ .long 2215350763
+ .long 3199158388
+ .long 3049848127
+ .long 1049324210
+ .long 3861893815
+ .long 3194293196
+ .long 0
+ .long 3222470656
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2236028675
+ .long 1016891036
+ .long 2177293363
+ .long 1072693132
+ .long 776830057
+ .long 1058856794
+ .long 4190004158
+ .long 3206340337
+ .long 209955488
+ .long 1058225857
+ .long 845130443
+ .long 3204660651
+ .long 4204313304
+ .long 1055835544
+ .long 364525198
+ .long 3201597210
+ .long 3889299905
+ .long 1052205563
+ .long 1514389355
+ .long 3197586647
+ .long 1706817756
+ .long 1047834665
+ .long 3817417318
+ .long 3192934132
+ .long 0
+ .long 3222601728
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1074033072
+ .long 1013200912
+ .long 2197899301
+ .long 1072693205
+ .long 1097614282
+ .long 1057308273
+ .long 209489097
+ .long 3204791893
+ .long 3641526339
+ .long 1056723664
+ .long 1792794946
+ .long 3203158586
+ .long 584598707
+ .long 1054254910
+ .long 253996240
+ .long 3200135633
+ .long 642640562
+ .long 1050754580
+ .long 3147361740
+ .long 3196139610
+ .long 1167319222
+ .long 1046395158
+ .long 3488053038
+ .long 3191370264
+ .long 0
+ .long 3222732800
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 871679747
+ .long 1016222468
+ .long 1586311569
+ .long 1072693232
+ .long 4199724405
+ .long 1055867613
+ .long 3041006250
+ .long 3203351246
+ .long 482130003
+ .long 1055184672
+ .long 1689676855
+ .long 3201619703
+ .long 116121201
+ .long 1052814264
+ .long 4166318198
+ .long 3198564764
+ .long 388552649
+ .long 1049191609
+ .long 1384400086
+ .long 3194577312
+ .long 135589376
+ .long 1044819515
+ .long 2497367318
+ .long 3189906305
+ .long 0
+ .long 3222863872
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 752986014
+ .long 1014740322
+ .long 1072834312
+ .long 1072693242
+ .long 1389704451
+ .long 1054277685
+ .long 817998738
+ .long 3201761329
+ .long 996777029
+ .long 1053731553
+ .long 811547911
+ .long 3200166603
+ .long 1604093935
+ .long 1051232383
+ .long 2381858127
+ .long 3197131472
+ .long 806055999
+ .long 1047703656
+ .long 443662424
+ .long 3193089938
+ .long 2855612429
+ .long 1043379518
+ .long 3671581230
+ .long 3188373004
+ .long 0
+ .long 3222994944
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4161630806
+ .long 1015796140
+ .long 3799386689
+ .long 1072693245
+ .long 516062805
+ .long 1052830799
+ .long 6188716
+ .long 3200314446
+ .long 79447568
+ .long 1052151909
+ .long 223529141
+ .long 3198586975
+ .long 1557009707
+ .long 1049758991
+ .long 1527834451
+ .long 3195539792
+ .long 3841571054
+ .long 1046184222
+ .long 3228035136
+ .long 3191570603
+ .long 2497745717
+ .long 1041799395
+ .long 3127975351
+ .long 3186863029
+ .long 0
+ .long 3223126016
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3013228433
+ .long 1015734301
+ .long 952591976
+ .long 1072693247
+ .long 3849195912
+ .long 1051256594
+ .long 1248135057
+ .long 3198740242
+ .long 1658384276
+ .long 1050712587
+ .long 3312197895
+ .long 3197147657
+ .long 2426751598
+ .long 1048219658
+ .long 2075412918
+ .long 3194074453
+ .long 1194511818
+ .long 1044659399
+ .long 2861395540
+ .long 3190045864
+ .long 1105252788
+ .long 1040325059
+ .long 278204179
+ .long 3185374362
+ .long 0
+ .long 3223257088
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4084683796
+ .long 1014352664
+ .long 3549182448
+ .long 1072693247
+ .long 4170486715
+ .long 1048984034
+ .long 3652359522
+ .long 3196467682
+ .long 1780445294
+ .long 1048420995
+ .long 3329441198
+ .long 3194856066
+ .long 663245309
+ .long 1045935418
+ .long 1918070306
+ .long 3191839818
+ .long 4225866973
+ .long 1042419329
+ .long 1974315224
+ .long 3187805832
+ .long 847480060
+ .long 1038120500
+ .long 2386310431
+ .long 3183105031
+ .long 0
+ .long 3223388160
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 951119343
+ .long 1016641415
+ .long 4194036288
+ .long 1072693247
+ .long 4207053894
+ .long 1045958742
+ .long 4131013457
+ .long 3193442390
+ .long 2503178506
+ .long 1045433060
+ .long 2309798544
+ .long 3191868132
+ .long 1503762043
+ .long 1042918157
+ .long 762244907
+ .long 3188792499
+ .long 3745081608
+ .long 1039371450
+ .long 3106729171
+ .long 3184757959
+ .long 3799011378
+ .long 1035063995
+ .long 693003136
+ .long 3180102041
+ .long 0
+ .long 3223519232
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1712896388
+ .long 1016000193
+ .long 4281307769
+ .long 1072693247
+ .long 3495080264
+ .long 1042943408
+ .long 3483806577
+ .long 3190427056
+ .long 3577360645
+ .long 1042374261
+ .long 3557467263
+ .long 3188809333
+ .long 3692227868
+ .long 1039911516
+ .long 1459944482
+ .long 3185739496
+ .long 624248087
+ .long 1036331657
+ .long 3930021706
+ .long 3181718167
+ .long 439009527
+ .long 1032014849
+ .long 3184212578
+ .long 3177110789
+ .long 0
+ .long 3223650304
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1958475666
+ .long 1013700788
+ .long 4293118680
+ .long 1072693247
+ .long 3829159519
+ .long 1039938855
+ .long 3827364885
+ .long 3187422503
+ .long 2374004141
+ .long 1039322650
+ .long 2380228874
+ .long 3185757722
+ .long 853065064
+ .long 1036916376
+ .long 3897809499
+ .long 3182694159
+ .long 2467115425
+ .long 1033300621
+ .long 2966460473
+ .long 3178687133
+ .long 4249027489
+ .long 1028973684
+ .long 3391824522
+ .long 3174085926
+ .long 0
+ .long 3223781376
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1028808661
+ .long 1012328597
+ .long 4294717113
+ .long 1072693247
+ .long 2759857858
+ .long 1036945975
+ .long 2759440340
+ .long 3184429623
+ .long 217750550
+ .long 1036278821
+ .long 228557927
+ .long 3182713893
+ .long 868996329
+ .long 1033914811
+ .long 130294465
+ .long 3179657124
+ .long 3979034581
+ .long 1030279068
+ .long 1690522291
+ .long 3175665582
+ .long 141102418
+ .long 1025941166
+ .long 3942643114
+ .long 3171030731
+ .long 0
+ .long 3223912448
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2461075155
+ .long 1015729939
+ .long 4294933437
+ .long 1072693247
+ .long 2559161110
+ .long 1033930834
+ .long 2559046852
+ .long 3181414482
+ .long 3206412049
+ .long 1033243416
+ .long 3218709064
+ .long 3179678488
+ .long 2091270467
+ .long 1030857342
+ .long 245853585
+ .long 3176629075
+ .long 1555900931
+ .long 1027267783
+ .long 1186881303
+ .long 3172654298
+ .long 1695278520
+ .long 1022918007
+ .long 1853146834
+ .long 3167983022
+ .long 0
+ .long 3224043520
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2502502488
+ .long 1016572066
+ .long 4294962713
+ .long 1072693247
+ .long 3137376149
+ .long 1030874690
+ .long 3137268820
+ .long 3178358338
+ .long 1097103169
+ .long 1030217134
+ .long 1110504267
+ .long 3176652206
+ .long 1068377398
+ .long 1027807171
+ .long 222176953
+ .long 3173610756
+ .long 3440315131
+ .long 1024267613
+ .long 1199778592
+ .long 3169654130
+ .long 257981480
+ .long 1019904983
+ .long 1388437918
+ .long 3164943417
+ .long 0
+ .long 3224174592
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3418697838
+ .long 1016821878
+ .long 4294966675
+ .long 1072693247
+ .long 3798207862
+ .long 1027825953
+ .long 3798094058
+ .long 3175309601
+ .long 3391459718
+ .long 1027200727
+ .long 3405981646
+ .long 3173635799
+ .long 3694208074
+ .long 1024764900
+ .long 2192272311
+ .long 3170602971
+ .long 1464408928
+ .long 1021279479
+ .long 2201370875
+ .long 3166665997
+ .long 4139632468
+ .long 1016902930
+ .long 2981161402
+ .long 3161912586
+ .long 0
+ .long 3224305664
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3589768515
+ .long 1013972501
+ .long 4294967265
+ .long 1072693247
+ .long 2293865510
+ .long 1023336450
+ .long 2097549026
+ .long 3170820098
+ .long 2721138850
+ .long 1022661962
+ .long 1571631120
+ .long 3169097035
+ .long 3716649917
+ .long 1020295299
+ .long 3146231247
+ .long 3166041588
+ .long 84506245
+ .long 1016656297
+ .long 2231398946
+ .long 3162043093
+ .long 3305646943
+ .long 1012441980
+ .long 402214167
+ .long 3157503609
+ .long 0
+ .long 3224436736
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2152156943
+ .long 1016184605
+ .long 4294967294
+ .long 1072693247
+ .long 1074684533
+ .long 1018634353
+ .long 1074437943
+ .long 3166118001
+ .long 967276073
+ .long 1018090988
+ .long 995296768
+ .long 3164526060
+ .long 4275132894
+ .long 1015589675
+ .long 304133116
+ .long 3161485853
+ .long 1232215992
+ .long 1012058464
+ .long 559363548
+ .long 3157444977
+ .long 1487618473
+ .long 1007759094
+ .long 2355811294
+ .long 3152771929
+ .long 3381626085
+ .long 3224537056
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .type __svml_dtanh_data_internal,@object
+ .size __svml_dtanh_data_internal,10816
+ .align 8
+
+__dtanh_la__imldTanhTab:
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 3220176896
+ .type __dtanh_la__imldTanhTab,@object
+ .size __dtanh_la__imldTanhTab,16
new file mode 100644
@@ -0,0 +1,20 @@
+/* AVX2 version of vectorized tanh, vector length is 8.
+ Copyright (C) 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/>. */
+
+#define _ZGVeN8v_tanh _ZGVeN8v_tanh_avx2_wrapper
+#include "../svml_d_tanh8_core.S"
new file mode 100644
@@ -0,0 +1,27 @@
+/* Multiple versions of vectorized tanh, vector length is 8.
+ Copyright (C) 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/>. */
+
+#define SYMBOL_NAME _ZGVeN8v_tanh
+#include "ifunc-mathvec-avx512-skx.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVeN8v_tanh, __GI__ZGVeN8v_tanh, __redirect__ZGVeN8v_tanh)
+ __attribute__ ((visibility ("hidden")));
+#endif
new file mode 100644
@@ -0,0 +1,3017 @@
+/* Function tanh vectorized with AVX-512.
+ Copyright (C) 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/. */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ * NOTE: Since the hyperbolic tangent function is odd
+ * (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ * value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ * We use a table lookup method to compute tanh(|x|).
+ * The basic idea is to split the input range into a number of subintervals
+ * and to approximate tanh(.) with a polynomial on each of them.
+ *
+ * IEEE SPECIAL CONDITIONS:
+ * x = [+,-]0, r = [+,-]0
+ * x = +Inf, r = +1
+ * x = -Inf, r = -1
+ * x = QNaN, r = QNaN
+ * x = SNaN, r = QNaN
+ *
+ *
+ * ALGORITHM DETAILS
+ * We handle special values in a callout function, aside from main path
+ * computations. "Special" for this algorithm are:
+ * INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ * Main path computations are organized as follows:
+ * Actually we split the interval [0, SATURATION_THRESHOLD)
+ * into a number of subintervals. On each subinterval we approximate tanh(.)
+ * with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ * are computed beforehand and stored in table. We also use
+ *
+ * y := |x| + B,
+ *
+ * here B depends on subinterval and is used to make argument
+ * closer to zero.
+ * We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ * where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ * preserve main path computation logic but return 1.0 for all arguments.
+ *
+ * Hence reconstruction looks as follows:
+ * we extract proper polynomial and range reduction coefficients
+ * (Pj and B), corresponding to subinterval, to which |x| belongs,
+ * and return
+ *
+ * r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ * NOTE: we use multiprecision technique to multiply and sum the first
+ * K terms of the polynomial. So Pj, j = 0..K are stored in
+ * table each as a pair of target precision numbers (Pj and PLj) to
+ * achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+ .text
+ .section .text.evex512,"ax",@progbits
+ENTRY(_ZGVeN8v_tanh_skx)
+ pushq %rbp
+ cfi_def_cfa_offset(16)
+ movq %rsp, %rbp
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+ andq $-64, %rsp
+ subq $320, %rsp
+ vpsrlq $32, %zmm0, %zmm4
+ vmovups %zmm0, (%rsp)
+ vmovups __svml_dtanh_data_internal(%rip), %zmm14
+ vmovups 128+__svml_dtanh_data_internal(%rip), %zmm15
+ vpmovqd %zmm4, %ymm5
+
+/* Constant loading */
+ vandpd 10432+__svml_dtanh_data_internal(%rip), %zmm0, %zmm13
+ vandpd 10368+__svml_dtanh_data_internal(%rip), %zmm0, %zmm3
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+ vpand 2432+__svml_dtanh_data_internal(%rip), %ymm5, %ymm7
+ vmovups 384+__svml_dtanh_data_internal(%rip), %zmm0
+ vmovups 2176+__svml_dtanh_data_internal(%rip), %zmm4
+ vmovups 2048+__svml_dtanh_data_internal(%rip), %zmm5
+ vmovups %zmm3, 64(%rsp)
+ vmovups 512+__svml_dtanh_data_internal(%rip), %zmm3
+ vpsubd 2496+__svml_dtanh_data_internal(%rip), %ymm7, %ymm8
+
+/* if VMIN, VMAX is defined for I type */
+ vxorps %ymm9, %ymm9, %ymm9
+ vpmaxsd %ymm9, %ymm8, %ymm10
+ vpminsd 2560+__svml_dtanh_data_internal(%rip), %ymm10, %ymm11
+ vpsrld $19, %ymm11, %ymm12
+ vmovups 1664+__svml_dtanh_data_internal(%rip), %zmm8
+ vmovups 1536+__svml_dtanh_data_internal(%rip), %zmm9
+ vmovups 1408+__svml_dtanh_data_internal(%rip), %zmm10
+ vmovups 1280+__svml_dtanh_data_internal(%rip), %zmm11
+ vpmovzxdq %ymm12, %zmm2
+ vmovups 1152+__svml_dtanh_data_internal(%rip), %zmm12
+ vpermt2pd 448+__svml_dtanh_data_internal(%rip), %zmm2, %zmm0
+ vpermt2pd 64+__svml_dtanh_data_internal(%rip), %zmm2, %zmm14
+ vpermt2pd 2240+__svml_dtanh_data_internal(%rip), %zmm2, %zmm4
+ vpermt2pd 2112+__svml_dtanh_data_internal(%rip), %zmm2, %zmm5
+ vsubpd {rn-sae}, %zmm14, %zmm13, %zmm1
+ vpermt2pd 1728+__svml_dtanh_data_internal(%rip), %zmm2, %zmm8
+ vpermt2pd 1600+__svml_dtanh_data_internal(%rip), %zmm2, %zmm9
+ vpermt2pd 1472+__svml_dtanh_data_internal(%rip), %zmm2, %zmm10
+ vpermt2pd 1344+__svml_dtanh_data_internal(%rip), %zmm2, %zmm11
+ vpermt2pd 1216+__svml_dtanh_data_internal(%rip), %zmm2, %zmm12
+ vpermt2pd 576+__svml_dtanh_data_internal(%rip), %zmm2, %zmm3
+ vpermt2pd 192+__svml_dtanh_data_internal(%rip), %zmm2, %zmm15
+ vmovups %zmm0, 192(%rsp)
+ vmovups 2304+__svml_dtanh_data_internal(%rip), %zmm0
+ vmovups 1024+__svml_dtanh_data_internal(%rip), %zmm13
+ vmovups 896+__svml_dtanh_data_internal(%rip), %zmm14
+ vmovups %zmm3, 256(%rsp)
+ vmovups 768+__svml_dtanh_data_internal(%rip), %zmm3
+ vmovups %zmm15, 128(%rsp)
+ vmovups 640+__svml_dtanh_data_internal(%rip), %zmm15
+ vpermt2pd 2368+__svml_dtanh_data_internal(%rip), %zmm2, %zmm0
+ vpermt2pd 1088+__svml_dtanh_data_internal(%rip), %zmm2, %zmm13
+ vpermt2pd 960+__svml_dtanh_data_internal(%rip), %zmm2, %zmm14
+ vpermt2pd 832+__svml_dtanh_data_internal(%rip), %zmm2, %zmm3
+ vpermt2pd 704+__svml_dtanh_data_internal(%rip), %zmm2, %zmm15
+ vfmadd213pd {rn-sae}, %zmm4, %zmm1, %zmm0
+ vpcmpgtd 10560+__svml_dtanh_data_internal(%rip), %ymm7, %ymm6
+ vmovmskps %ymm6, %edx
+ vmovups 1920+__svml_dtanh_data_internal(%rip), %zmm6
+ vfmadd213pd {rn-sae}, %zmm5, %zmm1, %zmm0
+ vmovups 1792+__svml_dtanh_data_internal(%rip), %zmm7
+ vpermt2pd 1984+__svml_dtanh_data_internal(%rip), %zmm2, %zmm6
+ vpermt2pd 1856+__svml_dtanh_data_internal(%rip), %zmm2, %zmm7
+ vfmadd213pd {rn-sae}, %zmm6, %zmm1, %zmm0
+ vmovups 256(%rsp), %zmm2
+ vfmadd213pd {rn-sae}, %zmm7, %zmm1, %zmm0
+ vfmadd213pd {rn-sae}, %zmm8, %zmm1, %zmm0
+ vfmadd213pd {rn-sae}, %zmm9, %zmm1, %zmm0
+ vfmadd213pd {rn-sae}, %zmm10, %zmm1, %zmm0
+ vfmadd213pd {rn-sae}, %zmm11, %zmm1, %zmm0
+ vfmadd213pd {rn-sae}, %zmm12, %zmm1, %zmm0
+ vfmadd213pd {rn-sae}, %zmm13, %zmm1, %zmm0
+ vfmadd213pd {rn-sae}, %zmm14, %zmm1, %zmm0
+ vfmadd213pd {rn-sae}, %zmm3, %zmm1, %zmm0
+ vmovups 128(%rsp), %zmm3
+ vfmadd213pd {rn-sae}, %zmm15, %zmm1, %zmm0
+ vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0
+ vmovups 192(%rsp), %zmm2
+ vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0
+ vfmadd213pd {rn-sae}, %zmm3, %zmm1, %zmm0
+ vorpd 64(%rsp), %zmm0, %zmm0
+ testl %edx, %edx
+ jne L(2)
+
+L(1):
+ movq %rbp, %rsp
+ popq %rbp
+ cfi_def_cfa(7, 8)
+ cfi_restore(6)
+ ret
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+
+L(2):
+ vmovups (%rsp), %zmm1
+ vmovups %zmm0, 128(%rsp)
+ vmovups %zmm1, 64(%rsp)
+ je L(1)
+ xorl %eax, %eax
+ vzeroupper
+ kmovw %k4, 24(%rsp)
+ kmovw %k5, 16(%rsp)
+ kmovw %k6, 8(%rsp)
+ kmovw %k7, (%rsp)
+ movq %rsi, 40(%rsp)
+ movq %rdi, 32(%rsp)
+ movq %r12, 56(%rsp)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe8, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf8, 0xfe, 0xff, 0xff, 0x22
+ movl %eax, %r12d
+ movq %r13, 48(%rsp)
+ .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xfe, 0xff, 0xff, 0x22
+ movl %edx, %r13d
+ .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd8, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc8, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xfe, 0xff, 0xff, 0x22
+
+L(3):
+ btl %r12d, %r13d
+ jc L(5)
+
+L(4):
+ incl %r12d
+ cmpl $8, %r12d
+ jl L(3)
+ kmovw 24(%rsp), %k4
+ cfi_restore(122)
+ kmovw 16(%rsp), %k5
+ cfi_restore(123)
+ kmovw 8(%rsp), %k6
+ cfi_restore(124)
+ kmovw (%rsp), %k7
+ cfi_restore(125)
+ vmovups 128(%rsp), %zmm0
+ movq 40(%rsp), %rsi
+ cfi_restore(4)
+ movq 32(%rsp), %rdi
+ cfi_restore(5)
+ movq 56(%rsp), %r12
+ cfi_restore(12)
+ movq 48(%rsp), %r13
+ cfi_restore(13)
+ jmp L(1)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe8, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf8, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd8, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc8, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xfe, 0xff, 0xff, 0x22
+
+L(5):
+ lea 64(%rsp,%r12,8), %rdi
+ lea 128(%rsp,%r12,8), %rsi
+ call __svml_dtanh_cout_rare_internal
+ jmp L(4)
+
+END(_ZGVeN8v_tanh_skx)
+
+ .align 16,0x90
+
+__svml_dtanh_cout_rare_internal:
+
+ cfi_startproc
+
+ lea __dtanh_la__imldTanhTab(%rip), %rdx
+ movb 7(%rdi), %al
+ andb $-128, %al
+ shrb $7, %al
+ movzbl %al, %ecx
+ movzwl 6(%rdi), %eax
+ andl $32752, %eax
+ shrl $4, %eax
+ movq (%rdx,%rcx,8), %rdx
+ cmpl $2047, %eax
+ je L(9)
+ cmpl $2046, %eax
+ jne L(7)
+
+L(6):
+ movq %rdx, (%rsi)
+ jmp L(8)
+
+L(7):
+ movsd (%rdi), %xmm1
+ movsd __dtanh_la__imldTanhTab(%rip), %xmm0
+ addsd %xmm1, %xmm0
+ mulsd %xmm0, %xmm1
+ movsd %xmm1, (%rsi)
+
+L(8):
+ xorl %eax, %eax
+ ret
+
+L(9):
+ testl $1048575, 4(%rdi)
+ jne L(10)
+ cmpl $0, (%rdi)
+ je L(6)
+
+L(10):
+ movsd (%rdi), %xmm0
+ addsd %xmm0, %xmm0
+ movsd %xmm0, (%rsi)
+ jmp L(8)
+
+ cfi_endproc
+
+ .type __svml_dtanh_cout_rare_internal,@function
+ .size __svml_dtanh_cout_rare_internal,.-__svml_dtanh_cout_rare_internal
+
+ .section .rodata, "a"
+ .align 64
+
+__svml_dtanh_data_internal:
+ .long 0
+ .long 0
+ .long 0
+ .long 1070333952
+ .long 0
+ .long 1070858240
+ .long 0
+ .long 1071382528
+ .long 0
+ .long 1071906816
+ .long 0
+ .long 1072431104
+ .long 0
+ .long 1072955392
+ .long 0
+ .long 1073479680
+ .long 0
+ .long 1074003968
+ .long 0
+ .long 1074528256
+ .long 0
+ .long 1075052544
+ .long 0
+ .long 1075576832
+ .long 0
+ .long 1076101120
+ .long 0
+ .long 1076625408
+ .long 0
+ .long 1077149696
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1097497746
+ .long 1070305232
+ .long 2699715854
+ .long 1070817176
+ .long 3997728823
+ .long 1071273769
+ .long 3938160533
+ .long 1071759175
+ .long 193732629
+ .long 1072072293
+ .long 3144363502
+ .long 1072375075
+ .long 2548249895
+ .long 1072570303
+ .long 638218690
+ .long 1072665176
+ .long 3325726839
+ .long 1072689426
+ .long 2523455249
+ .long 1072693057
+ .long 2200391922
+ .long 1072693244
+ .long 4257836853
+ .long 1072693247
+ .long 4294954840
+ .long 1072693247
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 3167993022
+ .long 1013310014
+ .long 2889539328
+ .long 3159121931
+ .long 394645568
+ .long 1013728265
+ .long 2799920971
+ .long 1015161303
+ .long 754366556
+ .long 1013577885
+ .long 3960180508
+ .long 1014215657
+ .long 69774042
+ .long 3162475851
+ .long 2161066944
+ .long 3162264280
+ .long 923362432
+ .long 1014879086
+ .long 2160345802
+ .long 1014714211
+ .long 3729195158
+ .long 3161626453
+ .long 675671997
+ .long 1015336837
+ .long 1141527416
+ .long 1013957883
+ .long 2209699952
+ .long 3160643600
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 2750448946
+ .long 1072596012
+ .long 1257606939
+ .long 1072501079
+ .long 2619663609
+ .long 1072338011
+ .long 863303701
+ .long 1072048204
+ .long 2694810990
+ .long 1071654144
+ .long 837003456
+ .long 1070723665
+ .long 472162617
+ .long 1069359818
+ .long 532307062
+ .long 1067137790
+ .long 431106849
+ .long 1064162173
+ .long 329904022
+ .long 1059572972
+ .long 4080160942
+ .long 1053550275
+ .long 1402271583
+ .long 1044493446
+ .long 467296040
+ .long 1032344560
+ .long 26734424
+ .long 1014207804
+ .long 0
+ .long 0
+ .long 1071622681
+ .long 3153114090
+ .long 3948133409
+ .long 3217705130
+ .long 4096956694
+ .long 3218184481
+ .long 2616164369
+ .long 3218465008
+ .long 2620770434
+ .long 3218641845
+ .long 3075958072
+ .long 3218520700
+ .long 1950184789
+ .long 3217978001
+ .long 2686385024
+ .long 3216731525
+ .long 1489441818
+ .long 3214597550
+ .long 1992796697
+ .long 3211642259
+ .long 1952936976
+ .long 3207056478
+ .long 3904162951
+ .long 3201033920
+ .long 1382745445
+ .long 3191977094
+ .long 468673444
+ .long 3179828208
+ .long 3843669553
+ .long 3161691483
+ .long 0
+ .long 0
+ .long 1431655765
+ .long 3218429269
+ .long 3264395793
+ .long 3218178991
+ .long 60595194
+ .long 3217824331
+ .long 1837960166
+ .long 3217124894
+ .long 1964918946
+ .long 3214033516
+ .long 2998587684
+ .long 1068822866
+ .long 3421467326
+ .long 1069267520
+ .long 952003133
+ .long 1068506016
+ .long 1215426504
+ .long 1066495476
+ .long 2650572912
+ .long 1063503494
+ .long 4178958376
+ .long 1059043758
+ .long 3799805457
+ .long 1052940753
+ .long 3704238924
+ .long 1043831645
+ .long 2076585114
+ .long 1031813109
+ .long 1352847351
+ .long 1013591371
+ .long 0
+ .long 0
+ .long 3830371894
+ .long 3169224254
+ .long 74893150
+ .long 1069567437
+ .long 1235750664
+ .long 1069825332
+ .long 916043751
+ .long 1069924975
+ .long 4138411315
+ .long 1069655686
+ .long 829220656
+ .long 1068441660
+ .long 663246204
+ .long 3213477792
+ .long 652268865
+ .long 3214415230
+ .long 3251098232
+ .long 3212868437
+ .long 1480792335
+ .long 3209929101
+ .long 3365608027
+ .long 3205478075
+ .long 3330582883
+ .long 3199375817
+ .long 3573234945
+ .long 3190266717
+ .long 2061970086
+ .long 3178248181
+ .long 3148320390
+ .long 3160026274
+ .long 0
+ .long 0
+ .long 286337717
+ .long 1069617425
+ .long 4261152941
+ .long 1068876190
+ .long 3694459820
+ .long 1067928728
+ .long 2399079031
+ .long 3212381546
+ .long 394897286
+ .long 3215735810
+ .long 3073534041
+ .long 3215860118
+ .long 301960234
+ .long 3214124960
+ .long 3353887502
+ .long 1064191753
+ .long 4200665425
+ .long 1063741482
+ .long 2003926207
+ .long 1061090030
+ .long 2196865207
+ .long 1056528964
+ .long 2107880963
+ .long 1050526402
+ .long 3656860478
+ .long 1041425071
+ .long 881228218
+ .long 1029305120
+ .long 2612840768
+ .long 1011136029
+ .long 0
+ .long 0
+ .long 3722294196
+ .long 3181505049
+ .long 2573001951
+ .long 3216029919
+ .long 4095639908
+ .long 3216151900
+ .long 3272210374
+ .long 3215957253
+ .long 3439280785
+ .long 3214441767
+ .long 628273304
+ .long 1066085542
+ .long 3354767370
+ .long 1066343670
+ .long 300170709
+ .long 1063270296
+ .long 1870156670
+ .long 3209139074
+ .long 1580606479
+ .long 3206808937
+ .long 3818710870
+ .long 3202408589
+ .long 3126817102
+ .long 3196311305
+ .long 3320734688
+ .long 3187224127
+ .long 821170446
+ .long 3175173312
+ .long 3906480775
+ .long 3156975650
+ .long 0
+ .long 0
+ .long 428888587
+ .long 3215696314
+ .long 3125999356
+ .long 3214336891
+ .long 407196569
+ .long 1053816799
+ .long 886258254
+ .long 1066874408
+ .long 2149075781
+ .long 1067351939
+ .long 3888390356
+ .long 1065784643
+ .long 1226056234
+ .long 3211994813
+ .long 178100474
+ .long 3210723675
+ .long 4201249718
+ .long 1058328572
+ .long 3854015760
+ .long 1057324616
+ .long 3621220964
+ .long 1052982118
+ .long 1468766992
+ .long 1046916174
+ .long 2369608770
+ .long 1037879115
+ .long 327127732
+ .long 1025754505
+ .long 747046817
+ .long 1007714190
+ .long 0
+ .long 0
+ .long 4036362527
+ .long 3191151783
+ .long 839661649
+ .long 1067363059
+ .long 4269154241
+ .long 1067251747
+ .long 391446303
+ .long 1066410535
+ .long 2090623151
+ .long 3211993063
+ .long 1751510141
+ .long 3213141508
+ .long 4072216875
+ .long 3209470961
+ .long 3769618983
+ .long 1061976030
+ .long 3462945146
+ .long 1057228123
+ .long 3030849095
+ .long 3202531084
+ .long 4269010901
+ .long 3198361258
+ .long 742615277
+ .long 3192302512
+ .long 3397417437
+ .long 3183265609
+ .long 943110610
+ .long 3171141000
+ .long 371608300
+ .long 3153099348
+ .long 0
+ .long 0
+ .long 1315619150
+ .long 1066820857
+ .long 1001273821
+ .long 3214201652
+ .long 3859675203
+ .long 3212560200
+ .long 725858949
+ .long 3213658423
+ .long 2464052346
+ .long 3212913056
+ .long 1297319750
+ .long 1063307355
+ .long 563735576
+ .long 1062988089
+ .long 2756222736
+ .long 3207203944
+ .long 31207338
+ .long 3204466214
+ .long 434022900
+ .long 1052227234
+ .long 2370591882
+ .long 1048628172
+ .long 588930601
+ .long 1042556347
+ .long 3198977634
+ .long 1033474724
+ .long 1590950759
+ .long 1021415866
+ .long 195904708
+ .long 1003000389
+ .long 0
+ .long 0
+ .long 4252521214
+ .long 3198731457
+ .long 2969857811
+ .long 3217870358
+ .long 575387574
+ .long 3212943727
+ .long 67550217
+ .long 3210922992
+ .long 2955736731
+ .long 1064678043
+ .long 4193848343
+ .long 1063288304
+ .long 1845975253
+ .long 3209397546
+ .long 1025213509
+ .long 3204479174
+ .long 3713384058
+ .long 1055658730
+ .long 4120057883
+ .long 3194988032
+ .long 1573797757
+ .long 3193584787
+ .long 2514726550
+ .long 3187678317
+ .long 15343571
+ .long 3178526042
+ .long 104576940
+ .long 3166444652
+ .long 1147207168
+ .long 3148070554
+ .long 0
+ .long 0
+ .long 1467656669
+ .long 3212977156
+ .long 4154993315
+ .long 1077775111
+ .long 2465966858
+ .long 3214886059
+ .long 71777642
+ .long 1068690118
+ .long 2419763912
+ .long 1061550205
+ .long 1896047360
+ .long 3210612806
+ .long 3723555648
+ .long 1058651288
+ .long 3163703016
+ .long 1057833732
+ .long 1601936705
+ .long 3201383489
+ .long 2535509424
+ .long 3195153293
+ .long 3610885824
+ .long 1043474022
+ .long 1031698712
+ .long 1037527637
+ .long 1497459257
+ .long 1028514042
+ .long 3476455860
+ .long 1016366870
+ .long 758110873
+ .long 998719391
+ .long 0
+ .long 0
+ .long 572446067
+ .long 3204307354
+ .long 926268084
+ .long 1081104698
+ .long 1313112926
+ .long 3217861477
+ .long 3660716
+ .long 1070677720
+ .long 124568711
+ .long 3210757561
+ .long 2123022704
+ .long 1059096046
+ .long 576783408
+ .long 1059279430
+ .long 1651052980
+ .long 3204387494
+ .long 3164866735
+ .long 1051430920
+ .long 409335328
+ .long 1046695415
+ .long 3481520755
+ .long 3188046619
+ .long 1140549474
+ .long 3182373569
+ .long 708689751
+ .long 3173247717
+ .long 2627769694
+ .long 3161153086
+ .long 3804346926
+ .long 3143551592
+ .long 0
+ .long 0
+ .long 2302818369
+ .long 1064188902
+ .long 526101185
+ .long 3235013457
+ .long 2975776348
+ .long 1075224435
+ .long 1103981749
+ .long 3223699933
+ .long 4261798097
+ .long 3210280329
+ .long 30781306
+ .long 1064564655
+ .long 3939597931
+ .long 3206430909
+ .long 1816466405
+ .long 1055007949
+ .long 3868125859
+ .long 3190076997
+ .long 4218600579
+ .long 3192569835
+ .long 4167655123
+ .long 1037376568
+ .long 952533803
+ .long 1032000428
+ .long 895641221
+ .long 1022851193
+ .long 1237761065
+ .long 1010835452
+ .long 2902086315
+ .long 3133082401
+ .long 0
+ .long 0
+ .long 1899646778
+ .long 3207205638
+ .long 2434183270
+ .long 3238288976
+ .long 621380814
+ .long 1078065849
+ .long 247717525
+ .long 3225783561
+ .long 1611742563
+ .long 3212088477
+ .long 537725662
+ .long 1065131990
+ .long 3769436831
+ .long 1057148224
+ .long 3759797009
+ .long 3196422840
+ .long 842759416
+ .long 3195613094
+ .long 1736926210
+ .long 1043198029
+ .long 3915271468
+ .long 3180709675
+ .long 807416070
+ .long 3176507548
+ .long 3147759461
+ .long 3167409843
+ .long 3443382404
+ .long 3155325020
+ .long 1202615797
+ .long 3129870924
+ .long 0
+ .long 0
+ .long 1841653873
+ .long 3210074087
+ .long 2157744327
+ .long 1095928888
+ .long 3038317314
+ .long 3229013375
+ .long 2291108570
+ .long 1082519711
+ .long 707775397
+ .long 1067599411
+ .long 445214669
+ .long 3216153989
+ .long 3815354898
+ .long 1054410330
+ .long 1285070896
+ .long 3199787450
+ .long 1722630166
+ .long 1047526663
+ .long 2672844635
+ .long 3188483010
+ .long 1805520457
+ .long 3179260705
+ .long 542550567
+ .long 1026041526
+ .long 392361251
+ .long 1017320419
+ .long 562647833
+ .long 1005205418
+ .long 4253488278
+ .long 988137457
+ .long 0
+ .long 0
+ .long 3077187303
+ .long 1060497018
+ .long 1652392454
+ .long 1099206368
+ .long 414484972
+ .long 3231848150
+ .long 130592591
+ .long 1084602513
+ .long 1951534810
+ .long 1068932483
+ .long 2677544726
+ .long 3216895313
+ .long 2338009969
+ .long 3203411240
+ .long 302629286
+ .long 1051889816
+ .long 1274412910
+ .long 3193339538
+ .long 3731558070
+ .long 1038350327
+ .long 3135499196
+ .long 1030352152
+ .long 1329461873
+ .long 3170325324
+ .long 4058709792
+ .long 3161656179
+ .long 2167788642
+ .long 3149540607
+ .long 1602064437
+ .long 3132466971
+ .long 0
+ .long 0
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 1069547520
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 7864320
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 3616958675
+ .long 3172564458
+ .long 1431547708
+ .long 3218429269
+ .long 3390261318
+ .long 3188010876
+ .long 1446529494
+ .long 1069617425
+ .long 913571762
+ .long 3199219810
+ .long 1583612462
+ .long 3215695720
+ .long 2995724807
+ .long 3207222498
+ .long 847913742
+ .long 1066913721
+ .long 1634876930
+ .long 3212167789
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1694159514
+ .long 1010239653
+ .long 966318664
+ .long 1069606551
+ .long 2992375944
+ .long 1072656686
+ .long 1870405289
+ .long 3217070889
+ .long 1411308967
+ .long 3218333047
+ .long 4096824853
+ .long 1068863484
+ .long 2220740425
+ .long 1069365950
+ .long 1401698298
+ .long 3215430111
+ .long 4137473768
+ .long 3215259762
+ .long 2666938667
+ .long 1066889956
+ .long 121190665
+ .long 1066187784
+ .long 821637913
+ .long 3213226090
+ .long 0
+ .long 3217096704
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1463410348
+ .long 1012925678
+ .long 2389577058
+ .long 1069735062
+ .long 1617794783
+ .long 1072647710
+ .long 1889094329
+ .long 3217191869
+ .long 1210518828
+ .long 3218309813
+ .long 1479174953
+ .long 1069010221
+ .long 3435917531
+ .long 1069290104
+ .long 291210913
+ .long 3215575029
+ .long 464478606
+ .long 3215159746
+ .long 1063797118
+ .long 1067014292
+ .long 3489481042
+ .long 1065955541
+ .long 2916293494
+ .long 3213319415
+ .long 0
+ .long 3217227776
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1308961311
+ .long 1014934498
+ .long 2204208241
+ .long 1069862983
+ .long 2945950899
+ .long 1072637797
+ .long 1107689125
+ .long 3217310565
+ .long 545938327
+ .long 3218284334
+ .long 3174275192
+ .long 1069150773
+ .long 3754729793
+ .long 1069207728
+ .long 1611554958
+ .long 3215708601
+ .long 2936527704
+ .long 3215052478
+ .long 2983784402
+ .long 1067121823
+ .long 1327150338
+ .long 1065710404
+ .long 3371320326
+ .long 3213391099
+ .long 0
+ .long 3217358848
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3546392464
+ .long 1015001497
+ .long 631120375
+ .long 1069990256
+ .long 1201634405
+ .long 1072626967
+ .long 266657677
+ .long 3217426771
+ .long 1567732958
+ .long 3218256710
+ .long 883708059
+ .long 1069284653
+ .long 1008115966
+ .long 1069119372
+ .long 2657338981
+ .long 3215830093
+ .long 3402640736
+ .long 3214939036
+ .long 1000796573
+ .long 1067211764
+ .long 53805889
+ .long 1065455799
+ .long 1736607114
+ .long 3213440608
+ .long 0
+ .long 3217489920
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2741128528
+ .long 1013617020
+ .long 3111451323
+ .long 1070116823
+ .long 1649040643
+ .long 1072615239
+ .long 3411009101
+ .long 3217540290
+ .long 3408666525
+ .long 3218227049
+ .long 60831764
+ .long 1069411415
+ .long 64016149
+ .long 1069025616
+ .long 1202785467
+ .long 3215938891
+ .long 1072151579
+ .long 3214707060
+ .long 1534357116
+ .long 1067283570
+ .long 4218468492
+ .long 1065037194
+ .long 2285827787
+ .long 3213467810
+ .long 0
+ .long 3217620992
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2659584459
+ .long 1014368295
+ .long 3537749475
+ .long 1070242630
+ .long 3072983457
+ .long 1072602635
+ .long 3507245872
+ .long 3217650938
+ .long 3434758212
+ .long 3218195466
+ .long 3801643091
+ .long 1069530660
+ .long 1128653951
+ .long 1068927067
+ .long 3580298628
+ .long 3216008547
+ .long 1645082338
+ .long 3214462237
+ .long 1048857889
+ .long 1067336943
+ .long 21547694
+ .long 1064510970
+ .long 1433152914
+ .long 3213472968
+ .long 0
+ .long 3217752064
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2718912981
+ .long 1013914074
+ .long 1823051285
+ .long 1070367623
+ .long 1714227149
+ .long 1072589179
+ .long 2128046799
+ .long 3217758540
+ .long 2655098722
+ .long 3218162081
+ .long 1690074008
+ .long 1069594780
+ .long 353091525
+ .long 1068824353
+ .long 4206393496
+ .long 3216049578
+ .long 824478721
+ .long 3214211899
+ .long 3850924188
+ .long 1067371825
+ .long 2738209029
+ .long 1063668369
+ .long 853664366
+ .long 3213456718
+ .long 0
+ .long 3217883136
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2312638749
+ .long 1013630664
+ .long 4267025360
+ .long 1070491748
+ .long 3776362539
+ .long 1072574894
+ .long 3063840907
+ .long 3217862932
+ .long 2436606365
+ .long 3218127019
+ .long 582931594
+ .long 1069646387
+ .long 3079837843
+ .long 1068718114
+ .long 3430470362
+ .long 3216083715
+ .long 1015897693
+ .long 3213958348
+ .long 765047087
+ .long 1067388396
+ .long 2337193368
+ .long 1061824569
+ .long 3002775972
+ .long 3213420044
+ .long 0
+ .long 3218014208
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2001712669
+ .long 1015665334
+ .long 1330879460
+ .long 1070636148
+ .long 2956987714
+ .long 1072551971
+ .long 4281360332
+ .long 3218013175
+ .long 3304213057
+ .long 3218063389
+ .long 3261945160
+ .long 1069715874
+ .long 3866284424
+ .long 1068553570
+ .long 3423706630
+ .long 3216121886
+ .long 259493169
+ .long 3213268437
+ .long 4223676832
+ .long 1067379852
+ .long 2765317642
+ .long 3210752240
+ .long 2292494069
+ .long 3213329490
+ .long 0
+ .long 3218145280
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1632443533
+ .long 1015769771
+ .long 3788472163
+ .long 1070757367
+ .long 2406795724
+ .long 1072518757
+ .long 1173083542
+ .long 3218140352
+ .long 3726086528
+ .long 3217906251
+ .long 1205028711
+ .long 1069793280
+ .long 2231197855
+ .long 1068156878
+ .long 2368637763
+ .long 3216148628
+ .long 2866127296
+ .long 3211617797
+ .long 2424606359
+ .long 1067309831
+ .long 2444940724
+ .long 3212180962
+ .long 3308128888
+ .long 3213151909
+ .long 0
+ .long 3218276352
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 478834383
+ .long 1014053288
+ .long 1342399495
+ .long 1070876422
+ .long 2650660168
+ .long 1072482726
+ .long 976724127
+ .long 3218226669
+ .long 962417089
+ .long 3217740546
+ .long 1060150306
+ .long 1069852926
+ .long 411739190
+ .long 1067700577
+ .long 3846786712
+ .long 3216148687
+ .long 4007187252
+ .long 1064073475
+ .long 3455779574
+ .long 1067180067
+ .long 1865169557
+ .long 3212900393
+ .long 1200620699
+ .long 3212923615
+ .long 0
+ .long 3218407424
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 267289397
+ .long 1014452734
+ .long 302318249
+ .long 1070993143
+ .long 1373990511
+ .long 1072444121
+ .long 1606419704
+ .long 3218305061
+ .long 3955669825
+ .long 3217568496
+ .long 2701083439
+ .long 1069894809
+ .long 3425188888
+ .long 1067047616
+ .long 2305426029
+ .long 3216123827
+ .long 1692531481
+ .long 1065641523
+ .long 232815703
+ .long 1067000535
+ .long 3949954748
+ .long 3213214884
+ .long 558890519
+ .long 3212487521
+ .long 0
+ .long 3218538496
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1719941932
+ .long 1006528498
+ .long 368840470
+ .long 1071107377
+ .long 1825320027
+ .long 1072403193
+ .long 538136722
+ .long 3218375283
+ .long 1431312010
+ .long 3217392305
+ .long 2586725425
+ .long 1069919291
+ .long 2680871675
+ .long 1065941593
+ .long 4123661982
+ .long 3216076488
+ .long 4235496382
+ .long 1066406926
+ .long 2618960092
+ .long 1066782660
+ .long 2333865044
+ .long 3213444845
+ .long 1545458959
+ .long 3211934181
+ .long 0
+ .long 3218669568
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 26286236
+ .long 1013191219
+ .long 990113957
+ .long 1071218987
+ .long 3284199501
+ .long 1072360200
+ .long 2981906127
+ .long 3218437190
+ .long 3154396333
+ .long 3217214106
+ .long 4182117656
+ .long 1069927061
+ .long 903677379
+ .long 3207343530
+ .long 384743261
+ .long 3216009637
+ .long 1679228359
+ .long 1066734193
+ .long 3407026595
+ .long 1066538544
+ .long 784962854
+ .long 3213588186
+ .long 1956733412
+ .long 3210979700
+ .long 0
+ .long 3218800640
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1468217372
+ .long 1015658399
+ .long 2570814109
+ .long 1071327852
+ .long 532296332
+ .long 1072315404
+ .long 318213600
+ .long 3218490738
+ .long 3661105766
+ .long 3217035931
+ .long 4085840862
+ .long 1069919095
+ .long 2798312316
+ .long 3213370099
+ .long 1668326589
+ .long 3215870599
+ .long 3158013712
+ .long 1066998409
+ .long 673205579
+ .long 1066158659
+ .long 486665227
+ .long 3213647762
+ .long 3317145528
+ .long 3208570948
+ .long 0
+ .long 3218931712
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2060955015
+ .long 1014233667
+ .long 2567098181
+ .long 1071433868
+ .long 1159081245
+ .long 1072269064
+ .long 1492598184
+ .long 3218535971
+ .long 1567055841
+ .long 3216688180
+ .long 2821222425
+ .long 1069896605
+ .long 3691290783
+ .long 3214336992
+ .long 343679101
+ .long 3215679175
+ .long 1878686296
+ .long 1067197462
+ .long 125933636
+ .long 1065636281
+ .long 421076939
+ .long 3213630573
+ .long 3748848474
+ .long 1062499186
+ .long 0
+ .long 3219062784
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1860475216
+ .long 1015320544
+ .long 439764829
+ .long 1071587361
+ .long 3870821058
+ .long 1072197223
+ .long 1430736283
+ .long 3218588540
+ .long 1597812790
+ .long 3216174065
+ .long 2398544810
+ .long 1069838732
+ .long 961452807
+ .long 3215095800
+ .long 716310499
+ .long 3215360049
+ .long 2337792646
+ .long 1067375770
+ .long 3863538422
+ .long 1064417477
+ .long 2203480844
+ .long 3213482785
+ .long 2389621902
+ .long 1063978354
+ .long 0
+ .long 3219193856
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 517838046
+ .long 1015294339
+ .long 2114713104
+ .long 1071713012
+ .long 2046328558
+ .long 1072098392
+ .long 29352448
+ .long 3218631376
+ .long 1533416325
+ .long 3215079684
+ .long 765247815
+ .long 1069724759
+ .long 24381189
+ .long 3215564623
+ .long 1213155449
+ .long 3214886044
+ .long 379420126
+ .long 1067409218
+ .long 3127061143
+ .long 3210809777
+ .long 3193663073
+ .long 3213128287
+ .long 2557278876
+ .long 1064581282
+ .long 0
+ .long 3219324928
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 201012485
+ .long 1013704982
+ .long 4147262407
+ .long 1071803766
+ .long 3048814903
+ .long 1071997795
+ .long 1260857726
+ .long 3218645540
+ .long 270462819
+ .long 3209873967
+ .long 874660781
+ .long 1069580732
+ .long 1251156804
+ .long 3215866075
+ .long 3568210118
+ .long 3214014484
+ .long 3784557811
+ .long 1067255146
+ .long 47772576
+ .long 3212562613
+ .long 2075700783
+ .long 3212539455
+ .long 1121561449
+ .long 1064698735
+ .long 0
+ .long 3219456000
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 72370286
+ .long 1015768239
+ .long 2345366573
+ .long 1071888223
+ .long 3155310239
+ .long 1071897123
+ .long 4105462806
+ .long 3218634383
+ .long 2329529114
+ .long 1067280331
+ .long 3078782452
+ .long 1069291148
+ .long 2210998062
+ .long 3215997483
+ .long 1498585052
+ .long 3212353515
+ .long 3032692199
+ .long 1066974465
+ .long 809329973
+ .long 3213081308
+ .long 2713838579
+ .long 3211547879
+ .long 1266611175
+ .long 1064568889
+ .long 0
+ .long 3219587072
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2137918782
+ .long 1013598293
+ .long 2511343836
+ .long 1071966424
+ .long 4205808243
+ .long 1071797842
+ .long 2776384587
+ .long 3218601667
+ .long 3824787134
+ .long 1068202086
+ .long 4101819712
+ .long 1068956189
+ .long 3547601806
+ .long 3216004360
+ .long 4156237724
+ .long 1064058621
+ .long 3714924071
+ .long 1066627770
+ .long 2925917146
+ .long 3213234133
+ .long 4211598888
+ .long 3209111151
+ .long 2569808389
+ .long 1064277859
+ .long 0
+ .long 3219718144
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2979324843
+ .long 1013692066
+ .long 2595126306
+ .long 1072038496
+ .long 4263058559
+ .long 1071701178
+ .long 2217257467
+ .long 3218551298
+ .long 2310932059
+ .long 1068685603
+ .long 3368327571
+ .long 1068627625
+ .long 3037419246
+ .long 3215935424
+ .long 3509936675
+ .long 1065724141
+ .long 1557247226
+ .long 1066131548
+ .long 3830787958
+ .long 3213205743
+ .long 1781883284
+ .long 1062575914
+ .long 3918078093
+ .long 1063614197
+ .long 0
+ .long 3219849216
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3630992244
+ .long 1015034507
+ .long 461360001
+ .long 1072104635
+ .long 2866201612
+ .long 1071571556
+ .long 1021729265
+ .long 3218487113
+ .long 1039036234
+ .long 1068940858
+ .long 1685105679
+ .long 1068140011
+ .long 1856275853
+ .long 3215769620
+ .long 2211306181
+ .long 1066373046
+ .long 3739405201
+ .long 1065456917
+ .long 3870269089
+ .long 3213053509
+ .long 427599213
+ .long 1063593231
+ .long 40698732
+ .long 1062709094
+ .long 0
+ .long 3219980288
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4017840557
+ .long 1014067070
+ .long 2764932206
+ .long 1072165089
+ .long 3362970633
+ .long 1071394124
+ .long 2677206355
+ .long 3218412713
+ .long 1827861303
+ .long 1069122666
+ .long 2476388705
+ .long 1067583638
+ .long 523365901
+ .long 3215556224
+ .long 1203249285
+ .long 1066574111
+ .long 4264074292
+ .long 1064402288
+ .long 3556167213
+ .long 3212827889
+ .long 3894081206
+ .long 1063908871
+ .long 2161178761
+ .long 1061130844
+ .long 0
+ .long 3220111360
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3622330478
+ .long 1016273425
+ .long 923638641
+ .long 1072245755
+ .long 239419665
+ .long 1071146518
+ .long 4085259706
+ .long 3218288969
+ .long 1284806809
+ .long 1069276013
+ .long 2806747971
+ .long 1066232498
+ .long 75259250
+ .long 3215197393
+ .long 2597116185
+ .long 1066648701
+ .long 1680670491
+ .long 3208755029
+ .long 446818184
+ .long 3212096816
+ .long 1529495144
+ .long 1063888972
+ .long 808619025
+ .long 3208443000
+ .long 0
+ .long 3220242432
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 462410646
+ .long 1015565639
+ .long 3157363066
+ .long 1072336316
+ .long 87541994
+ .long 1070853747
+ .long 2905067058
+ .long 3218115077
+ .long 1081050294
+ .long 1069306453
+ .long 4130581086
+ .long 3212259234
+ .long 1279737796
+ .long 3214531982
+ .long 901138781
+ .long 1066501065
+ .long 978916480
+ .long 3211806490
+ .long 1307294116
+ .long 3210755549
+ .long 1154728319
+ .long 1063409950
+ .long 983243444
+ .long 3209435485
+ .long 0
+ .long 3220373504
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2617212772
+ .long 1016126748
+ .long 2762378177
+ .long 1072409936
+ .long 1926160805
+ .long 1070604218
+ .long 4131898582
+ .long 3217810482
+ .long 3068505203
+ .long 1069203346
+ .long 2854543895
+ .long 3214027139
+ .long 1276437050
+ .long 3213652513
+ .long 523800203
+ .long 1066060621
+ .long 3030576699
+ .long 3212054264
+ .long 210618624
+ .long 3205409267
+ .long 3515290542
+ .long 1062456384
+ .long 1613351841
+ .long 3209185464
+ .long 0
+ .long 3220504576
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2178033281
+ .long 1016051223
+ .long 859883711
+ .long 1072469258
+ .long 4248327203
+ .long 1070195167
+ .long 4170103331
+ .long 3217497647
+ .long 3497702842
+ .long 1069026027
+ .long 669705965
+ .long 3214426190
+ .long 548733038
+ .long 3212258725
+ .long 1756337187
+ .long 1065503890
+ .long 1830841059
+ .long 3211930343
+ .long 1445563742
+ .long 1061912703
+ .long 2113494314
+ .long 1060991234
+ .long 1734825467
+ .long 3208559895
+ .long 0
+ .long 3220635648
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1674478116
+ .long 1016412476
+ .long 1178764976
+ .long 1072516719
+ .long 1119346206
+ .long 1069851736
+ .long 1526584272
+ .long 3217221512
+ .long 3575463915
+ .long 1068817773
+ .long 2913683612
+ .long 3214542291
+ .long 1135909212
+ .long 3207879094
+ .long 1952394810
+ .long 1064725296
+ .long 508910559
+ .long 3211537545
+ .long 225204077
+ .long 1062311155
+ .long 1009857186
+ .long 1056234420
+ .long 2872841632
+ .long 3207480811
+ .long 0
+ .long 3220766720
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1768234410
+ .long 1014305046
+ .long 1496797583
+ .long 1072554475
+ .long 3351833521
+ .long 1069572393
+ .long 68183265
+ .long 3216938851
+ .long 4178655528
+ .long 1068606905
+ .long 60791550
+ .long 3214483781
+ .long 1856281737
+ .long 1063701265
+ .long 4260560897
+ .long 1063778674
+ .long 2539586291
+ .long 3210979253
+ .long 2272785608
+ .long 1062198907
+ .long 1986161572
+ .long 3206910344
+ .long 1016667904
+ .long 3205797138
+ .long 0
+ .long 3220897792
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3074583847
+ .long 1017063845
+ .long 4092570620
+ .long 1072584374
+ .long 3645618684
+ .long 1069147119
+ .long 1980755111
+ .long 3216542681
+ .long 889928399
+ .long 1068320928
+ .long 1360064809
+ .long 3214330986
+ .long 2266432388
+ .long 1064407878
+ .long 4147854841
+ .long 1062471610
+ .long 1812350685
+ .long 3210287970
+ .long 3710399832
+ .long 1061728481
+ .long 2458127659
+ .long 3207279138
+ .long 287360833
+ .long 3197756422
+ .long 0
+ .long 3221028864
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 68970445
+ .long 1013643458
+ .long 3990219923
+ .long 1072607967
+ .long 97498680
+ .long 1068787106
+ .long 4136450559
+ .long 3216216395
+ .long 147179316
+ .long 1067971098
+ .long 1625987424
+ .long 3214138005
+ .long 3965878798
+ .long 1064539455
+ .long 3777445436
+ .long 1059539413
+ .long 3029913178
+ .long 3209512624
+ .long 2162291908
+ .long 1061245910
+ .long 351053474
+ .long 3207087984
+ .long 3766283083
+ .long 1056943188
+ .long 0
+ .long 3221159936
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3139580402
+ .long 1014663922
+ .long 3748810696
+ .long 1072634260
+ .long 3154943320
+ .long 1068262833
+ .long 3181856712
+ .long 3215694135
+ .long 3656356636
+ .long 1067539266
+ .long 3897588284
+ .long 3213798616
+ .long 1461831298
+ .long 1064461217
+ .long 2900114226
+ .long 3208814642
+ .long 2606420357
+ .long 3207868903
+ .long 1741152094
+ .long 1060222230
+ .long 1469206701
+ .long 3206514441
+ .long 3518993813
+ .long 1057090958
+ .long 0
+ .long 3221291008
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3285908565
+ .long 1015477239
+ .long 1797956315
+ .long 1072657271
+ .long 3302471936
+ .long 1067543167
+ .long 2151339553
+ .long 3215007235
+ .long 362228095
+ .long 1066797401
+ .long 3986406156
+ .long 3213131380
+ .long 388353381
+ .long 1064042359
+ .long 4147910906
+ .long 3209239839
+ .long 1739922885
+ .long 1056259812
+ .long 3188561056
+ .long 1058406709
+ .long 489122368
+ .long 3205182155
+ .long 202560853
+ .long 1056234231
+ .long 0
+ .long 3221422080
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3806705628
+ .long 1008327668
+ .long 884432573
+ .long 1072671353
+ .long 137405484
+ .long 1066747168
+ .long 3531994812
+ .long 3214216262
+ .long 3217445183
+ .long 1066105333
+ .long 2910288024
+ .long 3212464301
+ .long 3196212707
+ .long 1063467545
+ .long 3156563895
+ .long 3208963593
+ .long 3591285453
+ .long 1058733242
+ .long 2889132271
+ .long 1055392886
+ .long 1038377961
+ .long 3203561698
+ .long 4084672077
+ .long 1055001082
+ .long 0
+ .long 3221553152
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1881957148
+ .long 1016569186
+ .long 3451706443
+ .long 1072679940
+ .long 143468186
+ .long 1066002557
+ .long 553724800
+ .long 3213475431
+ .long 1049442771
+ .long 1065415105
+ .long 3378521943
+ .long 3211821787
+ .long 3176008209
+ .long 1062800361
+ .long 4016898691
+ .long 3208498219
+ .long 1548390021
+ .long 1058670598
+ .long 2097418483
+ .long 3202689041
+ .long 2756703589
+ .long 3201351283
+ .long 506736184
+ .long 1053405377
+ .long 0
+ .long 3221684224
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 450339788
+ .long 1015040915
+ .long 2959639058
+ .long 1072685166
+ .long 2289443405
+ .long 1065320893
+ .long 3331959139
+ .long 3212796584
+ .long 724199976
+ .long 1064616734
+ .long 938566183
+ .long 3211030741
+ .long 1640535667
+ .long 1062186735
+ .long 187996035
+ .long 3207841256
+ .long 822311531
+ .long 1058246461
+ .long 160890851
+ .long 3203087480
+ .long 3163291388
+ .long 1050479733
+ .long 578249940
+ .long 1051474021
+ .long 0
+ .long 3221815296
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 539445753
+ .long 1012635531
+ .long 3085578536
+ .long 1072688342
+ .long 2019637246
+ .long 1064510347
+ .long 2901018414
+ .long 3211991061
+ .long 2171427566
+ .long 1063868144
+ .long 678185093
+ .long 3210287638
+ .long 2685165718
+ .long 1061401571
+ .long 710336199
+ .long 3207152667
+ .long 2733135798
+ .long 1057659331
+ .long 886948177
+ .long 3202751664
+ .long 3345834247
+ .long 1052218043
+ .long 908728048
+ .long 1047925874
+ .long 0
+ .long 3221946368
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4240302093
+ .long 1016867082
+ .long 1832260410
+ .long 1072690271
+ .long 154153694
+ .long 1063730412
+ .long 2094548181
+ .long 3211211898
+ .long 1392727515
+ .long 1063180837
+ .long 3132890025
+ .long 3209604411
+ .long 483611698
+ .long 1060651750
+ .long 4246355421
+ .long 3206519479
+ .long 1424637421
+ .long 1057044161
+ .long 2138185318
+ .long 3202290304
+ .long 2276282642
+ .long 1052095798
+ .long 4227780935
+ .long 3196067472
+ .long 0
+ .long 3222077440
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2485733495
+ .long 1017000498
+ .long 484092514
+ .long 1072691442
+ .long 1653085170
+ .long 1063007344
+ .long 2893019346
+ .long 3210489400
+ .long 878866243
+ .long 1062388018
+ .long 2113174452
+ .long 3208818852
+ .long 2654141437
+ .long 1059959432
+ .long 3578550869
+ .long 3205727739
+ .long 315005006
+ .long 1056288680
+ .long 3246956604
+ .long 3201593495
+ .long 2197286540
+ .long 1051718329
+ .long 3044885069
+ .long 3196227269
+ .long 0
+ .long 3222208512
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2794994668
+ .long 1016833037
+ .long 3287420517
+ .long 1072692394
+ .long 4133778764
+ .long 1061857404
+ .long 689562148
+ .long 3209340342
+ .long 1404089106
+ .long 1061273627
+ .long 1292441425
+ .long 3207706805
+ .long 93671116
+ .long 1058816787
+ .long 2903327974
+ .long 3204626398
+ .long 4279279273
+ .long 1055202414
+ .long 134688023
+ .long 3200552187
+ .long 3315379764
+ .long 1050761310
+ .long 2945780649
+ .long 3195568939
+ .long 0
+ .long 3222339584
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2135621136
+ .long 1016053539
+ .long 309961636
+ .long 1072692934
+ .long 672792810
+ .long 1060347512
+ .long 2960305506
+ .long 3207830967
+ .long 1703867620
+ .long 1059726750
+ .long 824905914
+ .long 3206160796
+ .long 3036017847
+ .long 1057284422
+ .long 923304464
+ .long 3203122673
+ .long 1848642304
+ .long 1053791859
+ .long 2215350763
+ .long 3199158388
+ .long 3049848127
+ .long 1049324210
+ .long 3861893815
+ .long 3194293196
+ .long 0
+ .long 3222470656
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2236028675
+ .long 1016891036
+ .long 2177293363
+ .long 1072693132
+ .long 776830057
+ .long 1058856794
+ .long 4190004158
+ .long 3206340337
+ .long 209955488
+ .long 1058225857
+ .long 845130443
+ .long 3204660651
+ .long 4204313304
+ .long 1055835544
+ .long 364525198
+ .long 3201597210
+ .long 3889299905
+ .long 1052205563
+ .long 1514389355
+ .long 3197586647
+ .long 1706817756
+ .long 1047834665
+ .long 3817417318
+ .long 3192934132
+ .long 0
+ .long 3222601728
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1074033072
+ .long 1013200912
+ .long 2197899301
+ .long 1072693205
+ .long 1097614282
+ .long 1057308273
+ .long 209489097
+ .long 3204791893
+ .long 3641526339
+ .long 1056723664
+ .long 1792794946
+ .long 3203158586
+ .long 584598707
+ .long 1054254910
+ .long 253996240
+ .long 3200135633
+ .long 642640562
+ .long 1050754580
+ .long 3147361740
+ .long 3196139610
+ .long 1167319222
+ .long 1046395158
+ .long 3488053038
+ .long 3191370264
+ .long 0
+ .long 3222732800
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 871679747
+ .long 1016222468
+ .long 1586311569
+ .long 1072693232
+ .long 4199724405
+ .long 1055867613
+ .long 3041006250
+ .long 3203351246
+ .long 482130003
+ .long 1055184672
+ .long 1689676855
+ .long 3201619703
+ .long 116121201
+ .long 1052814264
+ .long 4166318198
+ .long 3198564764
+ .long 388552649
+ .long 1049191609
+ .long 1384400086
+ .long 3194577312
+ .long 135589376
+ .long 1044819515
+ .long 2497367318
+ .long 3189906305
+ .long 0
+ .long 3222863872
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 752986014
+ .long 1014740322
+ .long 1072834312
+ .long 1072693242
+ .long 1389704451
+ .long 1054277685
+ .long 817998738
+ .long 3201761329
+ .long 996777029
+ .long 1053731553
+ .long 811547911
+ .long 3200166603
+ .long 1604093935
+ .long 1051232383
+ .long 2381858127
+ .long 3197131472
+ .long 806055999
+ .long 1047703656
+ .long 443662424
+ .long 3193089938
+ .long 2855612429
+ .long 1043379518
+ .long 3671581230
+ .long 3188373004
+ .long 0
+ .long 3222994944
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4161630806
+ .long 1015796140
+ .long 3799386689
+ .long 1072693245
+ .long 516062805
+ .long 1052830799
+ .long 6188716
+ .long 3200314446
+ .long 79447568
+ .long 1052151909
+ .long 223529141
+ .long 3198586975
+ .long 1557009707
+ .long 1049758991
+ .long 1527834451
+ .long 3195539792
+ .long 3841571054
+ .long 1046184222
+ .long 3228035136
+ .long 3191570603
+ .long 2497745717
+ .long 1041799395
+ .long 3127975351
+ .long 3186863029
+ .long 0
+ .long 3223126016
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3013228433
+ .long 1015734301
+ .long 952591976
+ .long 1072693247
+ .long 3849195912
+ .long 1051256594
+ .long 1248135057
+ .long 3198740242
+ .long 1658384276
+ .long 1050712587
+ .long 3312197895
+ .long 3197147657
+ .long 2426751598
+ .long 1048219658
+ .long 2075412918
+ .long 3194074453
+ .long 1194511818
+ .long 1044659399
+ .long 2861395540
+ .long 3190045864
+ .long 1105252788
+ .long 1040325059
+ .long 278204179
+ .long 3185374362
+ .long 0
+ .long 3223257088
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4084683796
+ .long 1014352664
+ .long 3549182448
+ .long 1072693247
+ .long 4170486715
+ .long 1048984034
+ .long 3652359522
+ .long 3196467682
+ .long 1780445294
+ .long 1048420995
+ .long 3329441198
+ .long 3194856066
+ .long 663245309
+ .long 1045935418
+ .long 1918070306
+ .long 3191839818
+ .long 4225866973
+ .long 1042419329
+ .long 1974315224
+ .long 3187805832
+ .long 847480060
+ .long 1038120500
+ .long 2386310431
+ .long 3183105031
+ .long 0
+ .long 3223388160
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 951119343
+ .long 1016641415
+ .long 4194036288
+ .long 1072693247
+ .long 4207053894
+ .long 1045958742
+ .long 4131013457
+ .long 3193442390
+ .long 2503178506
+ .long 1045433060
+ .long 2309798544
+ .long 3191868132
+ .long 1503762043
+ .long 1042918157
+ .long 762244907
+ .long 3188792499
+ .long 3745081608
+ .long 1039371450
+ .long 3106729171
+ .long 3184757959
+ .long 3799011378
+ .long 1035063995
+ .long 693003136
+ .long 3180102041
+ .long 0
+ .long 3223519232
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1712896388
+ .long 1016000193
+ .long 4281307769
+ .long 1072693247
+ .long 3495080264
+ .long 1042943408
+ .long 3483806577
+ .long 3190427056
+ .long 3577360645
+ .long 1042374261
+ .long 3557467263
+ .long 3188809333
+ .long 3692227868
+ .long 1039911516
+ .long 1459944482
+ .long 3185739496
+ .long 624248087
+ .long 1036331657
+ .long 3930021706
+ .long 3181718167
+ .long 439009527
+ .long 1032014849
+ .long 3184212578
+ .long 3177110789
+ .long 0
+ .long 3223650304
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1958475666
+ .long 1013700788
+ .long 4293118680
+ .long 1072693247
+ .long 3829159519
+ .long 1039938855
+ .long 3827364885
+ .long 3187422503
+ .long 2374004141
+ .long 1039322650
+ .long 2380228874
+ .long 3185757722
+ .long 853065064
+ .long 1036916376
+ .long 3897809499
+ .long 3182694159
+ .long 2467115425
+ .long 1033300621
+ .long 2966460473
+ .long 3178687133
+ .long 4249027489
+ .long 1028973684
+ .long 3391824522
+ .long 3174085926
+ .long 0
+ .long 3223781376
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1028808661
+ .long 1012328597
+ .long 4294717113
+ .long 1072693247
+ .long 2759857858
+ .long 1036945975
+ .long 2759440340
+ .long 3184429623
+ .long 217750550
+ .long 1036278821
+ .long 228557927
+ .long 3182713893
+ .long 868996329
+ .long 1033914811
+ .long 130294465
+ .long 3179657124
+ .long 3979034581
+ .long 1030279068
+ .long 1690522291
+ .long 3175665582
+ .long 141102418
+ .long 1025941166
+ .long 3942643114
+ .long 3171030731
+ .long 0
+ .long 3223912448
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2461075155
+ .long 1015729939
+ .long 4294933437
+ .long 1072693247
+ .long 2559161110
+ .long 1033930834
+ .long 2559046852
+ .long 3181414482
+ .long 3206412049
+ .long 1033243416
+ .long 3218709064
+ .long 3179678488
+ .long 2091270467
+ .long 1030857342
+ .long 245853585
+ .long 3176629075
+ .long 1555900931
+ .long 1027267783
+ .long 1186881303
+ .long 3172654298
+ .long 1695278520
+ .long 1022918007
+ .long 1853146834
+ .long 3167983022
+ .long 0
+ .long 3224043520
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2502502488
+ .long 1016572066
+ .long 4294962713
+ .long 1072693247
+ .long 3137376149
+ .long 1030874690
+ .long 3137268820
+ .long 3178358338
+ .long 1097103169
+ .long 1030217134
+ .long 1110504267
+ .long 3176652206
+ .long 1068377398
+ .long 1027807171
+ .long 222176953
+ .long 3173610756
+ .long 3440315131
+ .long 1024267613
+ .long 1199778592
+ .long 3169654130
+ .long 257981480
+ .long 1019904983
+ .long 1388437918
+ .long 3164943417
+ .long 0
+ .long 3224174592
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3418697838
+ .long 1016821878
+ .long 4294966675
+ .long 1072693247
+ .long 3798207862
+ .long 1027825953
+ .long 3798094058
+ .long 3175309601
+ .long 3391459718
+ .long 1027200727
+ .long 3405981646
+ .long 3173635799
+ .long 3694208074
+ .long 1024764900
+ .long 2192272311
+ .long 3170602971
+ .long 1464408928
+ .long 1021279479
+ .long 2201370875
+ .long 3166665997
+ .long 4139632468
+ .long 1016902930
+ .long 2981161402
+ .long 3161912586
+ .long 0
+ .long 3224305664
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 3589768515
+ .long 1013972501
+ .long 4294967265
+ .long 1072693247
+ .long 2293865510
+ .long 1023336450
+ .long 2097549026
+ .long 3170820098
+ .long 2721138850
+ .long 1022661962
+ .long 1571631120
+ .long 3169097035
+ .long 3716649917
+ .long 1020295299
+ .long 3146231247
+ .long 3166041588
+ .long 84506245
+ .long 1016656297
+ .long 2231398946
+ .long 3162043093
+ .long 3305646943
+ .long 1012441980
+ .long 402214167
+ .long 3157503609
+ .long 0
+ .long 3224436736
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2152156943
+ .long 1016184605
+ .long 4294967294
+ .long 1072693247
+ .long 1074684533
+ .long 1018634353
+ .long 1074437943
+ .long 3166118001
+ .long 967276073
+ .long 1018090988
+ .long 995296768
+ .long 3164526060
+ .long 4275132894
+ .long 1015589675
+ .long 304133116
+ .long 3161485853
+ .long 1232215992
+ .long 1012058464
+ .long 559363548
+ .long 3157444977
+ .long 1487618473
+ .long 1007759094
+ .long 2355811294
+ .long 3152771929
+ .long 3381626085
+ .long 3224537056
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 4294967295
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .long 4294967295
+ .long 2147483647
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2147352576
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 1069416448
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 7733248
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .long 535822336
+ .type __svml_dtanh_data_internal,@object
+ .size __svml_dtanh_data_internal,10816
+ .align 8
+
+__dtanh_la__imldTanhTab:
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 3220176896
+ .type __dtanh_la__imldTanhTab,@object
+ .size __dtanh_la__imldTanhTab,16
new file mode 100644
@@ -0,0 +1,20 @@
+/* AVX2 version of vectorized tanhf.
+ Copyright (C) 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/>. */
+
+#define _ZGVeN16v_tanhf _ZGVeN16v_tanhf_avx2_wrapper
+#include "../svml_s_tanhf16_core.S"
new file mode 100644
@@ -0,0 +1,28 @@
+/* Multiple versions of vectorized tanhf, vector length is 16.
+ Copyright (C) 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/>. */
+
+#define SYMBOL_NAME _ZGVeN16v_tanhf
+#include "ifunc-mathvec-avx512-skx.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVeN16v_tanhf, __GI__ZGVeN16v_tanhf,
+ __redirect__ZGVeN16v_tanhf)
+ __attribute__ ((visibility ("hidden")));
+#endif
new file mode 100644
@@ -0,0 +1,1765 @@
+/* Function tanhf vectorized with AVX-512.
+ Copyright (C) 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/. */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ * NOTE: Since the hyperbolic tangent function is odd
+ * (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ * value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ * We use a table lookup method to compute tanh(|x|).
+ * The basic idea is to split the input range into a number of subintervals
+ * and to approximate tanh(.) with a polynomial on each of them.
+ *
+ * IEEE SPECIAL CONDITIONS:
+ * x = [+,-]0, r = [+,-]0
+ * x = +Inf, r = +1
+ * x = -Inf, r = -1
+ * x = QNaN, r = QNaN
+ * x = SNaN, r = QNaN
+ *
+ *
+ * ALGORITHM DETAILS
+ * We handle special values in a callout function, aside from main path
+ * computations. "Special" for this algorithm are:
+ * INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ * Main path computations are organized as follows:
+ * Actually we split the interval [0, SATURATION_THRESHOLD)
+ * into a number of subintervals. On each subinterval we approximate tanh(.)
+ * with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ * are computed beforehand and stored in table. We also use
+ *
+ * y := |x| + B,
+ *
+ * here B depends on subinterval and is used to make argument
+ * closer to zero.
+ * We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ * where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ * preserve main path computation logic but return 1.0 for all arguments.
+ *
+ * Hence reconstruction looks as follows:
+ * we extract proper polynomial and range reduction coefficients
+ * (Pj and B), corresponding to subinterval, to which |x| belongs,
+ * and return
+ *
+ * r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ * NOTE: we use multiprecision technique to multiply and sum the first
+ * K terms of the polynomial. So Pj, j = 0..K are stored in
+ * table each as a pair of target precision numbers (Pj and PLj) to
+ * achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+ .text
+ .section .text.exex512,"ax",@progbits
+ENTRY(_ZGVeN16v_tanhf_skx)
+ pushq %rbp
+ cfi_def_cfa_offset(16)
+ movq %rsp, %rbp
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+ andq $-64, %rsp
+ subq $192, %rsp
+ vmovaps %zmm0, %zmm1
+ vmovups __svml_stanh_data_internal(%rip), %zmm9
+ vmovups 896+__svml_stanh_data_internal(%rip), %zmm11
+ vmovups 768+__svml_stanh_data_internal(%rip), %zmm12
+ vmovups 640+__svml_stanh_data_internal(%rip), %zmm13
+ vmovups 512+__svml_stanh_data_internal(%rip), %zmm14
+ vmovups 384+__svml_stanh_data_internal(%rip), %zmm15
+ vpternlogd $255, %zmm2, %zmm2, %zmm2
+ vandps 5696+__svml_stanh_data_internal(%rip), %zmm1, %zmm8
+ vandps 5632+__svml_stanh_data_internal(%rip), %zmm1, %zmm0
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+ vpandd 1152+__svml_stanh_data_internal(%rip), %zmm1, %zmm3
+ vpsubd 1216+__svml_stanh_data_internal(%rip), %zmm3, %zmm4
+ vpcmpd $2, 5824+__svml_stanh_data_internal(%rip), %zmm3, %k1
+
+/*
+ * small table specific variables *
+ * Constant loading
+ */
+ vpxord %zmm5, %zmm5, %zmm5
+
+/* if VMIN, VMAX is defined for I type */
+ vpmaxsd %zmm5, %zmm4, %zmm6
+ vpminsd 1280+__svml_stanh_data_internal(%rip), %zmm6, %zmm7
+ vpsrld $21, %zmm7, %zmm10
+ vmovups 1024+__svml_stanh_data_internal(%rip), %zmm4
+ vpermt2ps 64+__svml_stanh_data_internal(%rip), %zmm10, %zmm9
+ vpermt2ps 960+__svml_stanh_data_internal(%rip), %zmm10, %zmm11
+ vpermt2ps 1088+__svml_stanh_data_internal(%rip), %zmm10, %zmm4
+ vpermt2ps 832+__svml_stanh_data_internal(%rip), %zmm10, %zmm12
+ vpermt2ps 704+__svml_stanh_data_internal(%rip), %zmm10, %zmm13
+ vpermt2ps 576+__svml_stanh_data_internal(%rip), %zmm10, %zmm14
+ vpermt2ps 448+__svml_stanh_data_internal(%rip), %zmm10, %zmm15
+ vpandnd %zmm3, %zmm3, %zmm2{%k1}
+ vptestmd %zmm2, %zmm2, %k0
+ vmovups 128+__svml_stanh_data_internal(%rip), %zmm3
+ vsubps {rn-sae}, %zmm9, %zmm8, %zmm2
+ kmovw %k0, %edx
+ vfmadd213ps {rn-sae}, %zmm11, %zmm2, %zmm4
+ vpermt2ps 192+__svml_stanh_data_internal(%rip), %zmm10, %zmm3
+ vfmadd213ps {rn-sae}, %zmm12, %zmm2, %zmm4
+ vfmadd213ps {rn-sae}, %zmm13, %zmm2, %zmm4
+ vfmadd213ps {rn-sae}, %zmm14, %zmm2, %zmm4
+ vfmadd213ps {rn-sae}, %zmm15, %zmm2, %zmm4
+ vfmadd213ps {rn-sae}, %zmm3, %zmm2, %zmm4
+ vorps %zmm0, %zmm4, %zmm0
+ testl %edx, %edx
+ jne L(2)
+
+L(1):
+ movq %rbp, %rsp
+ popq %rbp
+ cfi_def_cfa(7, 8)
+ cfi_restore(6)
+ ret
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+
+L(2):
+ vmovups %zmm1, 64(%rsp)
+ vmovups %zmm0, 128(%rsp)
+ je L(1)
+ xorl %eax, %eax
+ vzeroupper
+ kmovw %k4, 24(%rsp)
+ kmovw %k5, 16(%rsp)
+ kmovw %k6, 8(%rsp)
+ kmovw %k7, (%rsp)
+ movq %rsi, 40(%rsp)
+ movq %rdi, 32(%rsp)
+ movq %r12, 56(%rsp)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x78, 0xff, 0xff, 0xff, 0x22
+ movl %eax, %r12d
+ movq %r13, 48(%rsp)
+ .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+ movl %edx, %r13d
+ .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+
+L(3):
+ btl %r12d, %r13d
+ jc L(5)
+
+L(4):
+ incl %r12d
+ cmpl $16, %r12d
+ jl L(3)
+ kmovw 24(%rsp), %k4
+ cfi_restore(122)
+ kmovw 16(%rsp), %k5
+ cfi_restore(123)
+ kmovw 8(%rsp), %k6
+ cfi_restore(124)
+ kmovw (%rsp), %k7
+ cfi_restore(125)
+ vmovups 128(%rsp), %zmm0
+ movq 40(%rsp), %rsi
+ cfi_restore(4)
+ movq 32(%rsp), %rdi
+ cfi_restore(5)
+ movq 56(%rsp), %r12
+ cfi_restore(12)
+ movq 48(%rsp), %r13
+ cfi_restore(13)
+ jmp L(1)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x78, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+
+L(5):
+ lea 64(%rsp,%r12,4), %rdi
+ lea 128(%rsp,%r12,4), %rsi
+ call __svml_stanh_cout_rare_internal
+ jmp L(4)
+
+END(_ZGVeN16v_tanhf_skx)
+
+ .align 16,0x90
+
+__svml_stanh_cout_rare_internal:
+
+ cfi_startproc
+
+ lea __stanh_la__imlsTanhTab(%rip), %rdx
+ movb 3(%rdi), %al
+ andb $-128, %al
+ shrb $7, %al
+ movzbl %al, %ecx
+ movzwl 2(%rdi), %r8d
+ andl $32640, %r8d
+ movl (%rdx,%rcx,4), %eax
+ cmpl $32640, %r8d
+ je L(8)
+
+L(6):
+ movl %eax, (%rsi)
+
+L(7):
+ xorl %eax, %eax
+ ret
+
+L(8):
+ testl $8388607, (%rdi)
+ je L(6)
+ movss (%rdi), %xmm0
+ addss %xmm0, %xmm0
+ movss %xmm0, (%rsi)
+ jmp L(7)
+
+ cfi_endproc
+
+ .type __svml_stanh_cout_rare_internal,@function
+ .size __svml_stanh_cout_rare_internal,.-__svml_stanh_cout_rare_internal
+
+ .section .rodata, "a"
+ .align 64
+
+__svml_stanh_data_internal:
+ .long 0
+ .long 1030750208
+ .long 1032847360
+ .long 1034944512
+ .long 1037041664
+ .long 1039138816
+ .long 1041235968
+ .long 1043333120
+ .long 1045430272
+ .long 1047527424
+ .long 1049624576
+ .long 1051721728
+ .long 1053818880
+ .long 1055916032
+ .long 1058013184
+ .long 1060110336
+ .long 1062207488
+ .long 1064304640
+ .long 1066401792
+ .long 1068498944
+ .long 1070596096
+ .long 1072693248
+ .long 1074790400
+ .long 1076887552
+ .long 1078984704
+ .long 1081081856
+ .long 1083179008
+ .long 1085276160
+ .long 1087373312
+ .long 1089470464
+ .long 1091567616
+ .long 0
+ .long 0
+ .long 1030732233
+ .long 1032831839
+ .long 1034916201
+ .long 1036994987
+ .long 1039067209
+ .long 1041174248
+ .long 1043220868
+ .long 1045245838
+ .long 1047245614
+ .long 1049383373
+ .long 1051287907
+ .long 1053115377
+ .long 1054857013
+ .long 1057129528
+ .long 1058581488
+ .long 1059832960
+ .long 1060891676
+ .long 1062153819
+ .long 1063337043
+ .long 1064100733
+ .long 1064582223
+ .long 1064984555
+ .long 1065216645
+ .long 1065302845
+ .long 1065334668
+ .long 1065349076
+ .long 1065352656
+ .long 1065353140
+ .long 1065353206
+ .long 1065353215
+ .long 1065353216
+ .long 0
+ .long 2963361822
+ .long 2971470750
+ .long 2945658640
+ .long 821708412
+ .long 824483568
+ .long 824941280
+ .long 2984085072
+ .long 2957298688
+ .long 838449816
+ .long 2966046080
+ .long 2988320324
+ .long 2989804564
+ .long 842626356
+ .long 3000013710
+ .long 2972725824
+ .long 3002017674
+ .long 853753500
+ .long 2987104448
+ .long 3000350914
+ .long 855535800
+ .long 852410906
+ .long 851608946
+ .long 2988641656
+ .long 2997011000
+ .long 2989576736
+ .long 3000884068
+ .long 2999984336
+ .long 840950056
+ .long 2995215280
+ .long 855269702
+ .long 0
+ .long 1065353216
+ .long 1065295748
+ .long 1065270545
+ .long 1065229919
+ .long 1065181343
+ .long 1065124909
+ .long 1065025765
+ .long 1064867200
+ .long 1064679597
+ .long 1064464345
+ .long 1064093083
+ .long 1063517074
+ .long 1062862743
+ .long 1062146519
+ .long 1060992371
+ .long 1059386208
+ .long 1057800167
+ .long 1055660649
+ .long 1051764737
+ .long 1046959010
+ .long 1041444634
+ .long 1035462611
+ .long 1026689093
+ .long 1015337940
+ .long 1002731447
+ .long 990958554
+ .long 973168670
+ .long 948705851
+ .long 924299482
+ .long 899955662
+ .long 864224966
+ .long 0
+ .long 2956213371
+ .long 3178161821
+ .long 3180268967
+ .long 3182315389
+ .long 3184339487
+ .long 3186337805
+ .long 3188474939
+ .long 3190373619
+ .long 3192189570
+ .long 3193910865
+ .long 3196176320
+ .long 3197556682
+ .long 3198679950
+ .long 3199536798
+ .long 3200331518
+ .long 3200564882
+ .long 3200049264
+ .long 3199029518
+ .long 3197040598
+ .long 3192620804
+ .long 3188208183
+ .long 3182392393
+ .long 3173916356
+ .long 3162750726
+ .long 3150176437
+ .long 3138431708
+ .long 3120650203
+ .long 3096189170
+ .long 3071783062
+ .long 3047439278
+ .long 3011707180
+ .long 0
+ .long 3198855845
+ .long 3198879250
+ .long 3198677023
+ .long 3198476576
+ .long 3198388151
+ .long 3198245218
+ .long 3197982711
+ .long 3197594458
+ .long 3197117197
+ .long 3196587519
+ .long 3195304371
+ .long 3192667528
+ .long 3189843074
+ .long 3186330810
+ .long 3177085101
+ .long 1013669486
+ .long 1032032579
+ .long 1036132065
+ .long 1038305199
+ .long 1036774550
+ .long 1033498413
+ .long 1028927137
+ .long 1021175553
+ .long 1009568359
+ .long 998361895
+ .long 985691041
+ .long 967585842
+ .long 943363289
+ .long 919210013
+ .long 895139148
+ .long 858471606
+ .long 0
+ .long 3077428921
+ .long 3189516141
+ .long 1008586543
+ .long 1036101517
+ .long 1033304453
+ .long 1034073627
+ .long 1036071831
+ .long 1037235824
+ .long 1039436298
+ .long 1040631208
+ .long 1041906362
+ .long 1042793477
+ .long 1043232976
+ .long 1043086916
+ .long 1042100375
+ .long 1039444212
+ .long 1034126600
+ .long 1026638186
+ .long 995501655
+ .long 3165579977
+ .long 3167654937
+ .long 3165317828
+ .long 3158960080
+ .long 3148291549
+ .long 3137354510
+ .long 3124730373
+ .long 3106670759
+ .long 3082457650
+ .long 3058305807
+ .long 3034235241
+ .long 2997581996
+ .long 0
+ .long 1040781545
+ .long 1131811139
+ .long 1097198812
+ .long 3247503190
+ .long 3230402941
+ .long 3224086547
+ .long 3212798938
+ .long 1059790272
+ .long 1053691997
+ .long 1061317268
+ .long 3134918084
+ .long 1034173207
+ .long 3176246152
+ .long 3165561405
+ .long 3174788493
+ .long 3178015405
+ .long 3178847213
+ .long 3177176538
+ .long 3171127099
+ .long 3155996003
+ .long 985352038
+ .long 999682315
+ .long 998398067
+ .long 989522534
+ .long 977926264
+ .long 966355955
+ .long 948911724
+ .long 924561635
+ .long 900244966
+ .long 875993879
+ .long 841254832
+ .long 0
+ .long 3155046246
+ .long 1175181842
+ .long 1138112751
+ .long 3286309950
+ .long 3267011817
+ .long 3259619885
+ .long 3246758786
+ .long 1088248663
+ .long 1078543936
+ .long 1086795944
+ .long 3205436942
+ .long 1043392367
+ .long 3198686087
+ .long 3182586396
+ .long 3174374999
+ .long 3142320544
+ .long 1008565243
+ .long 1014115537
+ .long 1016545052
+ .long 1010017051
+ .long 998649588
+ .long 975680464
+ .long 3124451591
+ .long 3121544226
+ .long 3112148751
+ .long 3100159824
+ .long 3082673659
+ .long 3058641232
+ .long 3034613169
+ .long 3010665978
+ .long 2975473412
+ .long 0
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 0
+ .long 0
+ .long 36466923
+ .long 1072693248
+ .long 2365563284
+ .long 3201306247
+ .long 1829111721
+ .long 3218428278
+ .long 3823420055
+ .long 3193165324
+ .long 1098370908
+ .long 1072693250
+ .long 2493848101
+ .long 3205978300
+ .long 1742787824
+ .long 3218423470
+ .long 4013086462
+ .long 3193609799
+ .long 3667406935
+ .long 1072693250
+ .long 1352570026
+ .long 3206273363
+ .long 1445916117
+ .long 3218422747
+ .long 3835089556
+ .long 3194065339
+ .long 2420711447
+ .long 1072693251
+ .long 2169133006
+ .long 3206574718
+ .long 101347106
+ .long 3218421982
+ .long 713636389
+ .long 3194411770
+ .long 1709214929
+ .long 1072693252
+ .long 1710199222
+ .long 3206758855
+ .long 2216669086
+ .long 3218421174
+ .long 3814844772
+ .long 3194836884
+ .long 1591910603
+ .long 1072693253
+ .long 2011589771
+ .long 3206962796
+ .long 3721194918
+ .long 3218420324
+ .long 1295469166
+ .long 3195182212
+ .long 2130808979
+ .long 1072693254
+ .long 1222040805
+ .long 3207187539
+ .long 555871541
+ .long 3218419433
+ .long 401254514
+ .long 3195493098
+ .long 3390924472
+ .long 1072693255
+ .long 3112838711
+ .long 3207434078
+ .long 1558155560
+ .long 3218418499
+ .long 683885552
+ .long 3195864282
+ .long 1145294069
+ .long 1072693257
+ .long 1821670117
+ .long 3207648695
+ .long 2692181933
+ .long 3218417523
+ .long 2704036295
+ .long 3196181879
+ .long 4054831834
+ .long 1072693258
+ .long 1649153664
+ .long 3207795248
+ .long 4228604383
+ .long 3218416505
+ .long 4004758581
+ .long 3196440654
+ .long 3603542514
+ .long 1072693260
+ .long 1123737044
+ .long 3207954183
+ .long 2154630785
+ .long 3218415446
+ .long 2606327835
+ .long 3196743208
+ .long 4163276658
+ .long 1072693262
+ .long 2048619642
+ .long 3208125991
+ .long 1058893780
+ .long 3218414345
+ .long 250194901
+ .long 3197094852
+ .long 1518877548
+ .long 1072693265
+ .long 3379868633
+ .long 3208311162
+ .long 1246516380
+ .long 3218413202
+ .long 1621358934
+ .long 3197304764
+ .long 48033162
+ .long 1072693268
+ .long 957106177
+ .long 3208510185
+ .long 3034045498
+ .long 3218412017
+ .long 798414253
+ .long 3197538466
+ .long 4131323741
+ .long 1072693270
+ .long 2207647163
+ .long 3208683052
+ .long 2454449664
+ .long 3218410791
+ .long 1709648499
+ .long 3197805932
+ .long 972334142
+ .long 1072693274
+ .long 1279092327
+ .long 3208797143
+ .long 4141984674
+ .long 3218409523
+ .long 4279927728
+ .long 3198110676
+ .long 3547307714
+ .long 1072693277
+ .long 873763845
+ .long 3208918886
+ .long 4152286949
+ .long 3218408214
+ .long 947630201
+ .long 3198400037
+ .long 3779918761
+ .long 1072693283
+ .long 2452756690
+ .long 3209115951
+ .long 2900277560
+ .long 3218406175
+ .long 4114829322
+ .long 3198840356
+ .long 1550746642
+ .long 1072693293
+ .long 3179273584
+ .long 3209408258
+ .long 1697097694
+ .long 3218403310
+ .long 3189856208
+ .long 3199299134
+ .long 2567958063
+ .long 1072693304
+ .long 2177201355
+ .long 3209713300
+ .long 663593652
+ .long 3218400281
+ .long 1915839956
+ .long 3199641526
+ .long 3400799630
+ .long 1072693317
+ .long 2625933576
+ .long 3209895292
+ .long 3140727122
+ .long 3218397088
+ .long 2825210621
+ .long 3200061154
+ .long 661592278
+ .long 1072693333
+ .long 2751163500
+ .long 3210096603
+ .long 4055449010
+ .long 3218393733
+ .long 57286782
+ .long 3200412116
+ .long 3889851982
+ .long 1072693350
+ .long 2680384314
+ .long 3210318153
+ .long 2804057046
+ .long 3218390217
+ .long 1812582369
+ .long 3200718155
+ .long 1191734144
+ .long 1072693371
+ .long 867498228
+ .long 3210560852
+ .long 3250577733
+ .long 3218386540
+ .long 3326742410
+ .long 3201083020
+ .long 2188854007
+ .long 1072693394
+ .long 363145135
+ .long 3210782655
+ .long 840173644
+ .long 3218382704
+ .long 1735074843
+ .long 3201408616
+ .long 3657661222
+ .long 1072693420
+ .long 2204762872
+ .long 3210926495
+ .long 4072217384
+ .long 3218378708
+ .long 2965875284
+ .long 3201662196
+ .long 2413420961
+ .long 1072693450
+ .long 1162405510
+ .long 3211082241
+ .long 138720143
+ .long 3218374556
+ .long 454705634
+ .long 3201958187
+ .long 3899194868
+ .long 1072693483
+ .long 669033796
+ .long 3211250324
+ .long 2167069495
+ .long 3218370246
+ .long 1542529428
+ .long 3202301612
+ .long 710018948
+ .long 1072693521
+ .long 2883210692
+ .long 3211431169
+ .long 1973418570
+ .long 3218365781
+ .long 3156689511
+ .long 3202524481
+ .long 2656657906
+ .long 1072693562
+ .long 3498100032
+ .long 3211625196
+ .long 125419693
+ .long 3218361162
+ .long 1620715508
+ .long 3202751895
+ .long 2404819887
+ .long 1072693608
+ .long 4021715948
+ .long 3211810552
+ .long 1645154164
+ .long 3218356389
+ .long 703452016
+ .long 3203011668
+ .long 1243884135
+ .long 1072693659
+ .long 480742811
+ .long 3211921363
+ .long 3122063309
+ .long 3218351464
+ .long 223504399
+ .long 3203307063
+ .long 495862037
+ .long 1072693715
+ .long 300794004
+ .long 3212039372
+ .long 1300653287
+ .long 3218346389
+ .long 1176592120
+ .long 3203610816
+ .long 3274452673
+ .long 1072693808
+ .long 2613861807
+ .long 3212229889
+ .long 359514654
+ .long 3218338503
+ .long 2923503278
+ .long 3204034910
+ .long 3741678157
+ .long 1072693954
+ .long 3651935792
+ .long 3212511436
+ .long 2702507736
+ .long 3218327463
+ .long 2210624435
+ .long 3204506468
+ .long 1100251351
+ .long 1072694127
+ .long 3514265607
+ .long 3212825173
+ .long 957470414
+ .long 3218315845
+ .long 1305550937
+ .long 3204833184
+ .long 2996845965
+ .long 1072694328
+ .long 3142229264
+ .long 3213004685
+ .long 1883674585
+ .long 3218303659
+ .long 3326598907
+ .long 3205231584
+ .long 274977645
+ .long 1072694562
+ .long 3016319234
+ .long 3213195820
+ .long 1539002348
+ .long 3218290918
+ .long 3984366897
+ .long 3205604614
+ .long 1292806442
+ .long 1072694830
+ .long 3262520051
+ .long 3213405058
+ .long 2372653574
+ .long 3218277634
+ .long 2452462577
+ .long 3205892032
+ .long 1815353697
+ .long 1072695136
+ .long 3662183375
+ .long 3213632998
+ .long 250148789
+ .long 3218263821
+ .long 2158010733
+ .long 3206232708
+ .long 2150433494
+ .long 1072695483
+ .long 3919565056
+ .long 3213880202
+ .long 1540395291
+ .long 3218249491
+ .long 3182910565
+ .long 3206589369
+ .long 2808974545
+ .long 1072695874
+ .long 1965799910
+ .long 3214016317
+ .long 1545570484
+ .long 3218234659
+ .long 1413633121
+ .long 3206823218
+ .long 164723038
+ .long 1072696313
+ .long 81021250
+ .long 3214159950
+ .long 1583468454
+ .long 3218219339
+ .long 18571726
+ .long 3207094384
+ .long 3588317822
+ .long 1072696801
+ .long 4095098713
+ .long 3214313941
+ .long 298038316
+ .long 3218203546
+ .long 912947688
+ .long 3207406859
+ .long 1041448961
+ .long 1072697344
+ .long 4179586945
+ .long 3214478495
+ .long 2148027612
+ .long 3218187294
+ .long 3720520462
+ .long 3207679413
+ .long 1980273179
+ .long 1072697943
+ .long 1752543433
+ .long 3214653794
+ .long 124299728
+ .long 3218170600
+ .long 864061540
+ .long 3207883361
+ .long 2949417123
+ .long 1072698602
+ .long 4190073881
+ .long 3214839998
+ .long 1415544749
+ .long 3218153478
+ .long 3694676202
+ .long 3208114560
+ .long 420771937
+ .long 1072699325
+ .long 1282420231
+ .long 3214985633
+ .long 1533345938
+ .long 3218135945
+ .long 2892854837
+ .long 3208375402
+ .long 3632588569
+ .long 1072700113
+ .long 2712748874
+ .long 3215089842
+ .long 1386124246
+ .long 3218118017
+ .long 1634175019
+ .long 3208733922
+ .long 347483009
+ .long 1072701423
+ .long 1161341506
+ .long 3215256321
+ .long 1877668895
+ .long 3218090451
+ .long 4108664264
+ .long 3209099007
+ .long 3038559136
+ .long 1072703435
+ .long 2683048238
+ .long 3215498732
+ .long 1179454900
+ .long 3218025113
+ .long 1332126937
+ .long 3209546908
+ .long 3486307715
+ .long 1072705767
+ .long 2508275841
+ .long 3215764027
+ .long 359393231
+ .long 3217946511
+ .long 1961215910
+ .long 3209890029
+ .long 2252418763
+ .long 1072708441
+ .long 2827865151
+ .long 3216017387
+ .long 3509880367
+ .long 3217865627
+ .long 3222140085
+ .long 3210213923
+ .long 1486994624
+ .long 1072711477
+ .long 3160629487
+ .long 3216172802
+ .long 1178047112
+ .long 3217782741
+ .long 1901428593
+ .long 3210596649
+ .long 3746562216
+ .long 1072714893
+ .long 1033996001
+ .long 3216339382
+ .long 39866696
+ .long 3217698130
+ .long 2908573463
+ .long 3210891953
+ .long 2324761591
+ .long 1072718707
+ .long 2389401627
+ .long 3216516876
+ .long 3645939838
+ .long 3217612071
+ .long 2440236284
+ .long 3211151116
+ .long 1761407793
+ .long 1072722932
+ .long 2502005220
+ .long 3216704962
+ .long 1997398717
+ .long 3217524842
+ .long 2895026412
+ .long 3211448596
+ .long 4114502182
+ .long 1072727579
+ .long 2605061383
+ .long 3216903247
+ .long 58515002
+ .long 3217436714
+ .long 711731960
+ .long 3211787230
+ .long 3951984035
+ .long 1072732658
+ .long 3516063216
+ .long 3217071220
+ .long 3638757279
+ .long 3217347953
+ .long 3233370794
+ .long 3211979005
+ .long 658281779
+ .long 1072738175
+ .long 309554960
+ .long 3217179845
+ .long 1331214594
+ .long 3217258823
+ .long 2937534811
+ .long 3212193451
+ .long 2289001467
+ .long 1072744131
+ .long 2442043690
+ .long 3217292793
+ .long 2664085653
+ .long 3217169576
+ .long 3462081454
+ .long 3212432263
+ .long 3795084150
+ .long 1072750527
+ .long 1130374688
+ .long 3217409754
+ .long 3638257201
+ .long 3217080459
+ .long 3906637920
+ .long 3212696488
+ .long 4040275044
+ .long 1072757360
+ .long 3643517564
+ .long 3217530392
+ .long 4148962921
+ .long 3216952251
+ .long 1995056602
+ .long 3212911950
+ .long 1479928784
+ .long 1072764624
+ .long 2653868580
+ .long 3217654355
+ .long 1010106713
+ .long 3216775940
+ .long 3129357315
+ .long 3213070764
+ .long 2856812514
+ .long 1072772308
+ .long 1621093115
+ .long 3217781272
+ .long 1824031529
+ .long 3216601249
+ .long 2296680075
+ .long 3213333328
+ .long 2460843475
+ .long 1072784536
+ .long 3722925065
+ .long 3217975665
+ .long 3901534801
+ .long 3216343697
+ .long 741495589
+ .long 3213734822
+ .long 13033194
+ .long 1072802249
+ .long 1706090638
+ .long 3218161084
+ .long 4129724113
+ .long 3216008854
+ .long 2582831738
+ .long 3214039094
+ .long 3092949488
+ .long 1072821329
+ .long 4163404160
+ .long 3218296789
+ .long 673560195
+ .long 3215391593
+ .long 1852259695
+ .long 3214295490
+ .long 3663604487
+ .long 1072841572
+ .long 2783926416
+ .long 3218433189
+ .long 538028418
+ .long 3214623601
+ .long 955002681
+ .long 3214577680
+ .long 1457520314
+ .long 1072862739
+ .long 2977011911
+ .long 3218568683
+ .long 2456605794
+ .long 3213048602
+ .long 1782979473
+ .long 3214883178
+ .long 3136246603
+ .long 1072884563
+ .long 4172123069
+ .long 3218701739
+ .long 1041205303
+ .long 1065062250
+ .long 1494191018
+ .long 3215071352
+ .long 2030188257
+ .long 1072906761
+ .long 242335435
+ .long 3218830924
+ .long 3225388224
+ .long 1066807264
+ .long 2597486284
+ .long 3215242091
+ .long 1527970838
+ .long 1072929036
+ .long 2966426512
+ .long 3218954923
+ .long 1554080475
+ .long 1067589039
+ .long 1299968651
+ .long 3215418462
+ .long 3575385503
+ .long 1072951087
+ .long 2115725422
+ .long 3219072567
+ .long 1970202642
+ .long 1068007486
+ .long 633750547
+ .long 3215597833
+ .long 4170701031
+ .long 1072972617
+ .long 46586082
+ .long 3219155579
+ .long 1194653136
+ .long 1068384025
+ .long 4171340731
+ .long 3215777352
+ .long 3578160514
+ .long 1072993337
+ .long 3238411740
+ .long 3219206599
+ .long 3278559237
+ .long 1068609006
+ .long 2404931200
+ .long 3215954013
+ .long 533888921
+ .long 1073012973
+ .long 1507597629
+ .long 3219253160
+ .long 2386969249
+ .long 1068756225
+ .long 272720058
+ .long 3216053653
+ .long 54544651
+ .long 1073031269
+ .long 3020671348
+ .long 3219294996
+ .long 4122670807
+ .long 1068883785
+ .long 2536786852
+ .long 3216134458
+ .long 230026772
+ .long 1073047994
+ .long 2830531360
+ .long 3219331923
+ .long 2545616196
+ .long 1068992498
+ .long 3897096954
+ .long 3216209170
+ .long 867435464
+ .long 1073062943
+ .long 3935983781
+ .long 3219363830
+ .long 4280666630
+ .long 1069083305
+ .long 1614478429
+ .long 3216276286
+ .long 3991143559
+ .long 1073075939
+ .long 3165050417
+ .long 3219390677
+ .long 248866814
+ .long 1069157251
+ .long 2328429718
+ .long 3216358398
+ .long 1880129173
+ .long 1073091258
+ .long 4059723411
+ .long 3219421162
+ .long 3082848917
+ .long 1069238148
+ .long 1081358649
+ .long 3216430553
+ .long 1955557582
+ .long 1073104040
+ .long 2869422647
+ .long 3219445318
+ .long 1310544530
+ .long 1069299023
+ .long 434435025
+ .long 3216450109
+ .long 3947018234
+ .long 1073107343
+ .long 3414641036
+ .long 3219451270
+ .long 4069313179
+ .long 1069313321
+ .long 1392468754
+ .long 3216410502
+ .long 3271741504
+ .long 1073101128
+ .long 3884994071
+ .long 3219440866
+ .long 1456085694
+ .long 1069290099
+ .long 2332856790
+ .long 3216307665
+ .long 3950891192
+ .long 1073085735
+ .long 439037894
+ .long 3219416288
+ .long 1197951536
+ .long 1069237765
+ .long 4195788421
+ .long 3216139842
+ .long 3990997338
+ .long 1073061787
+ .long 550042602
+ .long 3219379833
+ .long 2832452545
+ .long 1069163766
+ .long 1200943255
+ .long 3215832361
+ .long 2073883731
+ .long 1073030122
+ .long 3042850267
+ .long 3219333800
+ .long 991641143
+ .long 1069074535
+ .long 1637244010
+ .long 3215243222
+ .long 3805163810
+ .long 1072991715
+ .long 3517445189
+ .long 3219280382
+ .long 2680864185
+ .long 1068975465
+ .long 1457843741
+ .long 3214140932
+ .long 1315080793
+ .long 1072947617
+ .long 3059804278
+ .long 3219221594
+ .long 2861308047
+ .long 1068870963
+ .long 3296491873
+ .long 1064537111
+ .long 3728462150
+ .long 1072898893
+ .long 3615137083
+ .long 3219159232
+ .long 3017963192
+ .long 1068764532
+ .long 3972434375
+ .long 1067468619
+ .long 1336398218
+ .long 1072846587
+ .long 1068664290
+ .long 3219061390
+ .long 122240345
+ .long 1068658880
+ .long 508009436
+ .long 1068456917
+ .long 3501538245
+ .long 1072791681
+ .long 968690691
+ .long 3218931236
+ .long 1514516445
+ .long 1068556030
+ .long 671541798
+ .long 1069006173
+ .long 3814409280
+ .long 1072735081
+ .long 1553551847
+ .long 3218801852
+ .long 2849431279
+ .long 1068415930
+ .long 285838780
+ .long 1069554660
+ .long 2881499585
+ .long 1072661949
+ .long 928028610
+ .long 3218674977
+ .long 8837506
+ .long 1068229231
+ .long 4283922105
+ .long 1069842903
+ .long 1813934616
+ .long 1072546640
+ .long 2296020303
+ .long 3218551962
+ .long 3757630126
+ .long 1068054242
+ .long 4184842874
+ .long 1070138481
+ .long 1612285858
+ .long 1072432209
+ .long 3568867548
+ .long 3218433820
+ .long 2489334631
+ .long 1067891605
+ .long 3119354956
+ .long 1070586029
+ .long 1945534618
+ .long 1072265408
+ .long 12375465
+ .long 3218268030
+ .long 869568690
+ .long 1067671872
+ .long 313517472
+ .long 1070892138
+ .long 1205077106
+ .long 1072052753
+ .long 2329101392
+ .long 3218055718
+ .long 31064032
+ .long 1067390210
+ .long 1106783211
+ .long 1071186310
+ .long 571472860
+ .long 1071856508
+ .long 2279775366
+ .long 3217706561
+ .long 3977902324
+ .long 1066976012
+ .long 1438560376
+ .long 1071467394
+ .long 433300635
+ .long 1071678859
+ .long 2662131044
+ .long 3217407122
+ .long 3461865003
+ .long 1066639491
+ .long 3761842524
+ .long 1071687909
+ .long 591758334
+ .long 1071396321
+ .long 1311878841
+ .long 3217153539
+ .long 3007781852
+ .long 1066335723
+ .long 1614590629
+ .long 1071809819
+ .long 1253814918
+ .long 1071117476
+ .long 1728609767
+ .long 3216850667
+ .long 2200561853
+ .long 1065903347
+ .long 3821226689
+ .long 1071921115
+ .long 2022982069
+ .long 1070874479
+ .long 2030156196
+ .long 3216496942
+ .long 874711265
+ .long 1065560045
+ .long 2003227996
+ .long 1072021655
+ .long 2808404217
+ .long 1070664514
+ .long 1372837647
+ .long 3216204595
+ .long 822053276
+ .long 1065224094
+ .long 3767175364
+ .long 1072111660
+ .long 3043371777
+ .long 1070372670
+ .long 1442419211
+ .long 3215945892
+ .long 298752438
+ .long 1064796452
+ .long 1111528881
+ .long 1072191609
+ .long 3513208196
+ .long 1070065467
+ .long 3837735739
+ .long 3215552388
+ .long 3701924119
+ .long 1064460397
+ .long 1230501085
+ .long 1072262142
+ .long 2161267832
+ .long 1069804871
+ .long 4188367704
+ .long 3215231429
+ .long 401190186
+ .long 1064089052
+ .long 3002339892
+ .long 1072323996
+ .long 1480019407
+ .long 1069584807
+ .long 1833655520
+ .long 3214970435
+ .long 2907956919
+ .long 1063676311
+ .long 875346000
+ .long 1072377952
+ .long 3150437403
+ .long 1069251888
+ .long 876861923
+ .long 3214583482
+ .long 1689748747
+ .long 1063353511
+ .long 2795554744
+ .long 1072424793
+ .long 3869705215
+ .long 1068941581
+ .long 1837883894
+ .long 3214240854
+ .long 2762317048
+ .long 1062946513
+ .long 2491972100
+ .long 1072465284
+ .long 4114823501
+ .long 1068682289
+ .long 2146865463
+ .long 3213964103
+ .long 800804261
+ .long 1062552648
+ .long 2634953449
+ .long 1072500149
+ .long 2952556276
+ .long 1068433515
+ .long 1872935290
+ .long 3213596436
+ .long 525130857
+ .long 1062245296
+ .long 3287041404
+ .long 1072542855
+ .long 164674845
+ .long 1067923724
+ .long 3273134342
+ .long 3213089271
+ .long 171708004
+ .long 1061610314
+ .long 3035032320
+ .long 1072586748
+ .long 3976243935
+ .long 1067403539
+ .long 3504708444
+ .long 3212404491
+ .long 3955947885
+ .long 1060882840
+ .long 513098494
+ .long 1072618404
+ .long 416924237
+ .long 1066726877
+ .long 1788945081
+ .long 3211801737
+ .long 1199639353
+ .long 1060166859
+ .long 2284134637
+ .long 1072641010
+ .long 754275327
+ .long 1066136447
+ .long 94803481
+ .long 3211042671
+ .long 3377507017
+ .long 1059354147
+ .long 1467291457
+ .long 1072657015
+ .long 2435597312
+ .long 1065520743
+ .long 2819017772
+ .long 3210358609
+ .long 1988617747
+ .long 1058591581
+ .long 633705514
+ .long 1072668259
+ .long 392269686
+ .long 1064864433
+ .long 2964449929
+ .long 3209729770
+ .long 3963893163
+ .long 1057889872
+ .long 2214892393
+ .long 1072676103
+ .long 2190738271
+ .long 1064315837
+ .long 3773826451
+ .long 3208969045
+ .long 3609404170
+ .long 1057113308
+ .long 3795216963
+ .long 1072681541
+ .long 3959981107
+ .long 1063599490
+ .long 1577139384
+ .long 3208281591
+ .long 1777963469
+ .long 1056319886
+ .long 2768813161
+ .long 1072685290
+ .long 452197850
+ .long 1062981751
+ .long 625862001
+ .long 3207639777
+ .long 1894515286
+ .long 1055580811
+ .long 809336726
+ .long 1072687861
+ .long 325412222
+ .long 1062349073
+ .long 3494772326
+ .long 3206874482
+ .long 3143092609
+ .long 1054887561
+ .long 1391578948
+ .long 1072689615
+ .long 370441451
+ .long 1061660435
+ .long 67458841
+ .long 3206180214
+ .long 1971759196
+ .long 1054066692
+ .long 57274217
+ .long 1072690807
+ .long 293665776
+ .long 1061075750
+ .long 1340185983
+ .long 3205535605
+ .long 2210177191
+ .long 1053294335
+ .long 1110907588
+ .long 1072691613
+ .long 3961986905
+ .long 1060367146
+ .long 3774614905
+ .long 3204763416
+ .long 3590429673
+ .long 1052580827
+ .long 2737507729
+ .long 1072692156
+ .long 370479370
+ .long 1059701790
+ .long 1033751386
+ .long 3204059641
+ .long 1162278823
+ .long 1051830218
+ .long 2341375458
+ .long 1072692521
+ .long 760364123
+ .long 1059103172
+ .long 910883556
+ .long 3203420282
+ .long 401067508
+ .long 1051028170
+ .long 3358303651
+ .long 1072692765
+ .long 3104773993
+ .long 1058369139
+ .long 2043715743
+ .long 3202639413
+ .long 4274377921
+ .long 1050278646
+ .long 3501940353
+ .long 1072692984
+ .long 2710387139
+ .long 1057384557
+ .long 2550611600
+ .long 3201592258
+ .long 2260324605
+ .long 1049158690
+ .long 3160989127
+ .long 1072693133
+ .long 1403521776
+ .long 1056074537
+ .long 760745859
+ .long 3200238663
+ .long 1163121055
+ .long 1047679067
+ .long 3509020169
+ .long 1072693198
+ .long 3352058101
+ .long 1054743188
+ .long 2289323607
+ .long 3198722761
+ .long 918272756
+ .long 1046147840
+ .long 4268817660
+ .long 1072693226
+ .long 1580550645
+ .long 1053325591
+ .long 1736251411
+ .long 3197308470
+ .long 1531106447
+ .long 1044632576
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .type __svml_stanh_data_internal,@object
+ .size __svml_stanh_data_internal,6016
+ .align 4
+
+__stanh_la__imlsTanhTab:
+ .long 1065353216
+ .long 3212836864
+ .type __stanh_la__imlsTanhTab,@object
+ .size __stanh_la__imlsTanhTab,8
new file mode 100644
@@ -0,0 +1,20 @@
+/* SSE2 version of vectorized tanhf, vector length is 4.
+ Copyright (C) 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/>. */
+
+#define _ZGVbN4v_tanhf _ZGVbN4v_tanhf_sse2
+#include "../svml_s_tanhf4_core.S"
new file mode 100644
@@ -0,0 +1,28 @@
+/* Multiple versions of vectorized tanhf, vector length is 4.
+ Copyright (C) 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/>. */
+
+#define SYMBOL_NAME _ZGVbN4v_tanhf
+#include "ifunc-mathvec-sse4_1.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVbN4v_tanhf, __GI__ZGVbN4v_tanhf,
+ __redirect__ZGVbN4v_tanhf)
+ __attribute__ ((visibility ("hidden")));
+#endif
new file mode 100644
@@ -0,0 +1,2144 @@
+/* Function tanhf vectorized with SSE4.
+ Copyright (C) 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/. */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ * NOTE: Since the hyperbolic tangent function is odd
+ * (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ * value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ * We use a table lookup method to compute tanh(|x|).
+ * The basic idea is to split the input range into a number of subintervals
+ * and to approximate tanh(.) with a polynomial on each of them.
+ *
+ * IEEE SPECIAL CONDITIONS:
+ * x = [+,-]0, r = [+,-]0
+ * x = +Inf, r = +1
+ * x = -Inf, r = -1
+ * x = QNaN, r = QNaN
+ * x = SNaN, r = QNaN
+ *
+ *
+ * ALGORITHM DETAILS
+ * We handle special values in a callout function, aside from main path
+ * computations. "Special" for this algorithm are:
+ * INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ * Main path computations are organized as follows:
+ * Actually we split the interval [0, SATURATION_THRESHOLD)
+ * into a number of subintervals. On each subinterval we approximate tanh(.)
+ * with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ * are computed beforehand and stored in table. We also use
+ *
+ * y := |x| + B,
+ *
+ * here B depends on subinterval and is used to make argument
+ * closer to zero.
+ * We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ * where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ * preserve main path computation logic but return 1.0 for all arguments.
+ *
+ * Hence reconstruction looks as follows:
+ * we extract proper polynomial and range reduction coefficients
+ * (Pj and B), corresponding to subinterval, to which |x| belongs,
+ * and return
+ *
+ * r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ * NOTE: we use multiprecision technique to multiply and sum the first
+ * K terms of the polynomial. So Pj, j = 0..K are stored in
+ * table each as a pair of target precision numbers (Pj and PLj) to
+ * achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+ .text
+ .section .text.sse4,"ax",@progbits
+ENTRY(_ZGVbN4v_tanhf_sse4)
+ pushq %rbp
+ cfi_def_cfa_offset(16)
+ movq %rsp, %rbp
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+ andq $-64, %rsp
+ subq $256, %rsp
+ lea 1360+__svml_stanh_data_internal(%rip), %rcx
+ movups %xmm15, 96(%rsp)
+ .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+ movaps %xmm0, %xmm15
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+ movdqu 5760+__svml_stanh_data_internal(%rip), %xmm6
+
+/* if VMIN, VMAX is defined for I type */
+ pxor %xmm4, %xmm4
+ pand %xmm15, %xmm6
+ movdqa %xmm6, %xmm3
+ psubd 5888+__svml_stanh_data_internal(%rip), %xmm6
+
+/*
+ * small table specific variables *
+ * Constant loading
+ */
+ movdqu 5952+__svml_stanh_data_internal(%rip), %xmm7
+ movdqa %xmm6, %xmm2
+ movdqa %xmm6, %xmm1
+ pcmpgtd %xmm7, %xmm2
+ pcmpgtd %xmm4, %xmm1
+ movdqa %xmm2, %xmm5
+ pand %xmm1, %xmm6
+ andps %xmm2, %xmm7
+ andnps %xmm6, %xmm5
+ orps %xmm7, %xmm5
+ psrld $14, %xmm5
+ movups %xmm12, 160(%rsp)
+ .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+ pshufd $2, %xmm5, %xmm12
+ movd %xmm5, %edx
+ pshufd $1, %xmm5, %xmm4
+ pshufd $3, %xmm5, %xmm5
+ movd %xmm12, %r9d
+ movd %xmm5, %r10d
+ movd %xmm4, %eax
+ pcmpgtd 5824+__svml_stanh_data_internal(%rip), %xmm3
+ movups 5696+__svml_stanh_data_internal(%rip), %xmm0
+ movslq %r9d, %r9
+ andps %xmm15, %xmm0
+ movslq %edx, %rdx
+ movslq %r10d, %r10
+ movslq %eax, %rax
+ movups -16(%r9,%rcx), %xmm4
+ movmskps %xmm3, %r8d
+ movaps %xmm4, %xmm12
+ movups -16(%rdx,%rcx), %xmm3
+ movups -16(%r10,%rcx), %xmm6
+ movaps %xmm3, %xmm5
+ movups -16(%rax,%rcx), %xmm1
+ unpcklpd %xmm6, %xmm12
+ unpckhpd %xmm6, %xmm4
+ movups (%rdx,%rcx), %xmm6
+ unpcklpd %xmm1, %xmm5
+ unpckhpd %xmm1, %xmm3
+ movaps %xmm6, %xmm1
+ movups (%rax,%rcx), %xmm2
+ movups (%r9,%rcx), %xmm7
+ movups %xmm13, 144(%rsp)
+ .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+ movups (%r10,%rcx), %xmm13
+ unpcklpd %xmm2, %xmm1
+ unpckhpd %xmm2, %xmm6
+ movaps %xmm7, %xmm2
+ unpcklpd %xmm13, %xmm2
+ unpckhpd %xmm13, %xmm7
+ cvtps2pd %xmm0, %xmm13
+ movhlps %xmm0, %xmm0
+ cvtps2pd %xmm0, %xmm0
+ mulpd %xmm13, %xmm6
+ mulpd %xmm0, %xmm7
+ addpd %xmm1, %xmm6
+ addpd %xmm2, %xmm7
+ mulpd %xmm13, %xmm6
+ mulpd %xmm0, %xmm7
+ addpd %xmm3, %xmm6
+ addpd %xmm4, %xmm7
+ mulpd %xmm6, %xmm13
+ mulpd %xmm7, %xmm0
+ addpd %xmm5, %xmm13
+ addpd %xmm12, %xmm0
+ cvtpd2ps %xmm13, %xmm1
+ cvtpd2ps %xmm0, %xmm3
+ movups %xmm14, 112(%rsp)
+ .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+ movups 5632+__svml_stanh_data_internal(%rip), %xmm14
+ movlhps %xmm3, %xmm1
+ andps %xmm15, %xmm14
+ orps %xmm14, %xmm1
+ testl %r8d, %r8d
+ jne L(2)
+
+L(1):
+ movups 160(%rsp), %xmm12
+ cfi_restore(29)
+ movaps %xmm1, %xmm0
+ movups 144(%rsp), %xmm13
+ cfi_restore(30)
+ movups 112(%rsp), %xmm14
+ cfi_restore(31)
+ movups 96(%rsp), %xmm15
+ cfi_restore(32)
+ movq %rbp, %rsp
+ popq %rbp
+ cfi_def_cfa(7, 8)
+ cfi_restore(6)
+ ret
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+ .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+
+L(2):
+ movups %xmm15, 128(%rsp)
+ movups %xmm1, 192(%rsp)
+ xorl %eax, %eax
+ movups %xmm8, 48(%rsp)
+ movups %xmm9, 32(%rsp)
+ movups %xmm10, 16(%rsp)
+ movups %xmm11, (%rsp)
+ movq %rsi, 72(%rsp)
+ movq %rdi, 64(%rsp)
+ movq %r12, 88(%rsp)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22
+ movl %eax, %r12d
+ movq %r13, 80(%rsp)
+ .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+ movl %r8d, %r13d
+
+L(3):
+ btl %r12d, %r13d
+ jc L(5)
+
+L(4):
+ incl %r12d
+ cmpl $4, %r12d
+ jl L(3)
+ movups 48(%rsp), %xmm8
+ cfi_restore(25)
+ movups 32(%rsp), %xmm9
+ cfi_restore(26)
+ movups 16(%rsp), %xmm10
+ cfi_restore(27)
+ movups (%rsp), %xmm11
+ cfi_restore(28)
+ movq 72(%rsp), %rsi
+ cfi_restore(4)
+ movq 64(%rsp), %rdi
+ cfi_restore(5)
+ movq 88(%rsp), %r12
+ cfi_restore(12)
+ movq 80(%rsp), %r13
+ cfi_restore(13)
+ movups 192(%rsp), %xmm1
+ jmp L(1)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22
+
+L(5):
+ lea 128(%rsp,%r12,4), %rdi
+ lea 192(%rsp,%r12,4), %rsi
+ call __svml_stanh_cout_rare_internal
+ jmp L(4)
+
+END(_ZGVbN4v_tanhf_sse4)
+
+ .align 16,0x90
+
+__svml_stanh_cout_rare_internal:
+
+ cfi_startproc
+
+ lea __stanh_la__imlsTanhTab(%rip), %rdx
+ movb 3(%rdi), %al
+ andb $-128, %al
+ shrb $7, %al
+ movzbl %al, %ecx
+ movzwl 2(%rdi), %r8d
+ andl $32640, %r8d
+ movl (%rdx,%rcx,4), %eax
+ cmpl $32640, %r8d
+ je L(8)
+
+L(6):
+ movl %eax, (%rsi)
+
+L(7):
+ xorl %eax, %eax
+ ret
+
+L(8):
+ testl $8388607, (%rdi)
+ je L(6)
+ movss (%rdi), %xmm0
+ addss %xmm0, %xmm0
+ movss %xmm0, (%rsi)
+ jmp L(7)
+
+ cfi_endproc
+
+ .type __svml_stanh_cout_rare_internal,@function
+ .size __svml_stanh_cout_rare_internal,.-__svml_stanh_cout_rare_internal
+
+ .section .rodata, "a"
+ .align 64
+
+__svml_stanh_data_internal:
+ .long 0
+ .long 1030750208
+ .long 1032847360
+ .long 1034944512
+ .long 1037041664
+ .long 1039138816
+ .long 1041235968
+ .long 1043333120
+ .long 1045430272
+ .long 1047527424
+ .long 1049624576
+ .long 1051721728
+ .long 1053818880
+ .long 1055916032
+ .long 1058013184
+ .long 1060110336
+ .long 1062207488
+ .long 1064304640
+ .long 1066401792
+ .long 1068498944
+ .long 1070596096
+ .long 1072693248
+ .long 1074790400
+ .long 1076887552
+ .long 1078984704
+ .long 1081081856
+ .long 1083179008
+ .long 1085276160
+ .long 1087373312
+ .long 1089470464
+ .long 1091567616
+ .long 0
+ .long 0
+ .long 1030732233
+ .long 1032831839
+ .long 1034916201
+ .long 1036994987
+ .long 1039067209
+ .long 1041174248
+ .long 1043220868
+ .long 1045245838
+ .long 1047245614
+ .long 1049383373
+ .long 1051287907
+ .long 1053115377
+ .long 1054857013
+ .long 1057129528
+ .long 1058581488
+ .long 1059832960
+ .long 1060891676
+ .long 1062153819
+ .long 1063337043
+ .long 1064100733
+ .long 1064582223
+ .long 1064984555
+ .long 1065216645
+ .long 1065302845
+ .long 1065334668
+ .long 1065349076
+ .long 1065352656
+ .long 1065353140
+ .long 1065353206
+ .long 1065353215
+ .long 1065353216
+ .long 0
+ .long 2963361822
+ .long 2971470750
+ .long 2945658640
+ .long 821708412
+ .long 824483568
+ .long 824941280
+ .long 2984085072
+ .long 2957298688
+ .long 838449816
+ .long 2966046080
+ .long 2988320324
+ .long 2989804564
+ .long 842626356
+ .long 3000013710
+ .long 2972725824
+ .long 3002017674
+ .long 853753500
+ .long 2987104448
+ .long 3000350914
+ .long 855535800
+ .long 852410906
+ .long 851608946
+ .long 2988641656
+ .long 2997011000
+ .long 2989576736
+ .long 3000884068
+ .long 2999984336
+ .long 840950056
+ .long 2995215280
+ .long 855269702
+ .long 0
+ .long 1065353216
+ .long 1065295748
+ .long 1065270545
+ .long 1065229919
+ .long 1065181343
+ .long 1065124909
+ .long 1065025765
+ .long 1064867200
+ .long 1064679597
+ .long 1064464345
+ .long 1064093083
+ .long 1063517074
+ .long 1062862743
+ .long 1062146519
+ .long 1060992371
+ .long 1059386208
+ .long 1057800167
+ .long 1055660649
+ .long 1051764737
+ .long 1046959010
+ .long 1041444634
+ .long 1035462611
+ .long 1026689093
+ .long 1015337940
+ .long 1002731447
+ .long 990958554
+ .long 973168670
+ .long 948705851
+ .long 924299482
+ .long 899955662
+ .long 864224966
+ .long 0
+ .long 2956213371
+ .long 3178161821
+ .long 3180268967
+ .long 3182315389
+ .long 3184339487
+ .long 3186337805
+ .long 3188474939
+ .long 3190373619
+ .long 3192189570
+ .long 3193910865
+ .long 3196176320
+ .long 3197556682
+ .long 3198679950
+ .long 3199536798
+ .long 3200331518
+ .long 3200564882
+ .long 3200049264
+ .long 3199029518
+ .long 3197040598
+ .long 3192620804
+ .long 3188208183
+ .long 3182392393
+ .long 3173916356
+ .long 3162750726
+ .long 3150176437
+ .long 3138431708
+ .long 3120650203
+ .long 3096189170
+ .long 3071783062
+ .long 3047439278
+ .long 3011707180
+ .long 0
+ .long 3198855845
+ .long 3198879250
+ .long 3198677023
+ .long 3198476576
+ .long 3198388151
+ .long 3198245218
+ .long 3197982711
+ .long 3197594458
+ .long 3197117197
+ .long 3196587519
+ .long 3195304371
+ .long 3192667528
+ .long 3189843074
+ .long 3186330810
+ .long 3177085101
+ .long 1013669486
+ .long 1032032579
+ .long 1036132065
+ .long 1038305199
+ .long 1036774550
+ .long 1033498413
+ .long 1028927137
+ .long 1021175553
+ .long 1009568359
+ .long 998361895
+ .long 985691041
+ .long 967585842
+ .long 943363289
+ .long 919210013
+ .long 895139148
+ .long 858471606
+ .long 0
+ .long 3077428921
+ .long 3189516141
+ .long 1008586543
+ .long 1036101517
+ .long 1033304453
+ .long 1034073627
+ .long 1036071831
+ .long 1037235824
+ .long 1039436298
+ .long 1040631208
+ .long 1041906362
+ .long 1042793477
+ .long 1043232976
+ .long 1043086916
+ .long 1042100375
+ .long 1039444212
+ .long 1034126600
+ .long 1026638186
+ .long 995501655
+ .long 3165579977
+ .long 3167654937
+ .long 3165317828
+ .long 3158960080
+ .long 3148291549
+ .long 3137354510
+ .long 3124730373
+ .long 3106670759
+ .long 3082457650
+ .long 3058305807
+ .long 3034235241
+ .long 2997581996
+ .long 0
+ .long 1040781545
+ .long 1131811139
+ .long 1097198812
+ .long 3247503190
+ .long 3230402941
+ .long 3224086547
+ .long 3212798938
+ .long 1059790272
+ .long 1053691997
+ .long 1061317268
+ .long 3134918084
+ .long 1034173207
+ .long 3176246152
+ .long 3165561405
+ .long 3174788493
+ .long 3178015405
+ .long 3178847213
+ .long 3177176538
+ .long 3171127099
+ .long 3155996003
+ .long 985352038
+ .long 999682315
+ .long 998398067
+ .long 989522534
+ .long 977926264
+ .long 966355955
+ .long 948911724
+ .long 924561635
+ .long 900244966
+ .long 875993879
+ .long 841254832
+ .long 0
+ .long 3155046246
+ .long 1175181842
+ .long 1138112751
+ .long 3286309950
+ .long 3267011817
+ .long 3259619885
+ .long 3246758786
+ .long 1088248663
+ .long 1078543936
+ .long 1086795944
+ .long 3205436942
+ .long 1043392367
+ .long 3198686087
+ .long 3182586396
+ .long 3174374999
+ .long 3142320544
+ .long 1008565243
+ .long 1014115537
+ .long 1016545052
+ .long 1010017051
+ .long 998649588
+ .long 975680464
+ .long 3124451591
+ .long 3121544226
+ .long 3112148751
+ .long 3100159824
+ .long 3082673659
+ .long 3058641232
+ .long 3034613169
+ .long 3010665978
+ .long 2975473412
+ .long 0
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 0
+ .long 0
+ .long 36466923
+ .long 1072693248
+ .long 2365563284
+ .long 3201306247
+ .long 1829111721
+ .long 3218428278
+ .long 3823420055
+ .long 3193165324
+ .long 1098370908
+ .long 1072693250
+ .long 2493848101
+ .long 3205978300
+ .long 1742787824
+ .long 3218423470
+ .long 4013086462
+ .long 3193609799
+ .long 3667406935
+ .long 1072693250
+ .long 1352570026
+ .long 3206273363
+ .long 1445916117
+ .long 3218422747
+ .long 3835089556
+ .long 3194065339
+ .long 2420711447
+ .long 1072693251
+ .long 2169133006
+ .long 3206574718
+ .long 101347106
+ .long 3218421982
+ .long 713636389
+ .long 3194411770
+ .long 1709214929
+ .long 1072693252
+ .long 1710199222
+ .long 3206758855
+ .long 2216669086
+ .long 3218421174
+ .long 3814844772
+ .long 3194836884
+ .long 1591910603
+ .long 1072693253
+ .long 2011589771
+ .long 3206962796
+ .long 3721194918
+ .long 3218420324
+ .long 1295469166
+ .long 3195182212
+ .long 2130808979
+ .long 1072693254
+ .long 1222040805
+ .long 3207187539
+ .long 555871541
+ .long 3218419433
+ .long 401254514
+ .long 3195493098
+ .long 3390924472
+ .long 1072693255
+ .long 3112838711
+ .long 3207434078
+ .long 1558155560
+ .long 3218418499
+ .long 683885552
+ .long 3195864282
+ .long 1145294069
+ .long 1072693257
+ .long 1821670117
+ .long 3207648695
+ .long 2692181933
+ .long 3218417523
+ .long 2704036295
+ .long 3196181879
+ .long 4054831834
+ .long 1072693258
+ .long 1649153664
+ .long 3207795248
+ .long 4228604383
+ .long 3218416505
+ .long 4004758581
+ .long 3196440654
+ .long 3603542514
+ .long 1072693260
+ .long 1123737044
+ .long 3207954183
+ .long 2154630785
+ .long 3218415446
+ .long 2606327835
+ .long 3196743208
+ .long 4163276658
+ .long 1072693262
+ .long 2048619642
+ .long 3208125991
+ .long 1058893780
+ .long 3218414345
+ .long 250194901
+ .long 3197094852
+ .long 1518877548
+ .long 1072693265
+ .long 3379868633
+ .long 3208311162
+ .long 1246516380
+ .long 3218413202
+ .long 1621358934
+ .long 3197304764
+ .long 48033162
+ .long 1072693268
+ .long 957106177
+ .long 3208510185
+ .long 3034045498
+ .long 3218412017
+ .long 798414253
+ .long 3197538466
+ .long 4131323741
+ .long 1072693270
+ .long 2207647163
+ .long 3208683052
+ .long 2454449664
+ .long 3218410791
+ .long 1709648499
+ .long 3197805932
+ .long 972334142
+ .long 1072693274
+ .long 1279092327
+ .long 3208797143
+ .long 4141984674
+ .long 3218409523
+ .long 4279927728
+ .long 3198110676
+ .long 3547307714
+ .long 1072693277
+ .long 873763845
+ .long 3208918886
+ .long 4152286949
+ .long 3218408214
+ .long 947630201
+ .long 3198400037
+ .long 3779918761
+ .long 1072693283
+ .long 2452756690
+ .long 3209115951
+ .long 2900277560
+ .long 3218406175
+ .long 4114829322
+ .long 3198840356
+ .long 1550746642
+ .long 1072693293
+ .long 3179273584
+ .long 3209408258
+ .long 1697097694
+ .long 3218403310
+ .long 3189856208
+ .long 3199299134
+ .long 2567958063
+ .long 1072693304
+ .long 2177201355
+ .long 3209713300
+ .long 663593652
+ .long 3218400281
+ .long 1915839956
+ .long 3199641526
+ .long 3400799630
+ .long 1072693317
+ .long 2625933576
+ .long 3209895292
+ .long 3140727122
+ .long 3218397088
+ .long 2825210621
+ .long 3200061154
+ .long 661592278
+ .long 1072693333
+ .long 2751163500
+ .long 3210096603
+ .long 4055449010
+ .long 3218393733
+ .long 57286782
+ .long 3200412116
+ .long 3889851982
+ .long 1072693350
+ .long 2680384314
+ .long 3210318153
+ .long 2804057046
+ .long 3218390217
+ .long 1812582369
+ .long 3200718155
+ .long 1191734144
+ .long 1072693371
+ .long 867498228
+ .long 3210560852
+ .long 3250577733
+ .long 3218386540
+ .long 3326742410
+ .long 3201083020
+ .long 2188854007
+ .long 1072693394
+ .long 363145135
+ .long 3210782655
+ .long 840173644
+ .long 3218382704
+ .long 1735074843
+ .long 3201408616
+ .long 3657661222
+ .long 1072693420
+ .long 2204762872
+ .long 3210926495
+ .long 4072217384
+ .long 3218378708
+ .long 2965875284
+ .long 3201662196
+ .long 2413420961
+ .long 1072693450
+ .long 1162405510
+ .long 3211082241
+ .long 138720143
+ .long 3218374556
+ .long 454705634
+ .long 3201958187
+ .long 3899194868
+ .long 1072693483
+ .long 669033796
+ .long 3211250324
+ .long 2167069495
+ .long 3218370246
+ .long 1542529428
+ .long 3202301612
+ .long 710018948
+ .long 1072693521
+ .long 2883210692
+ .long 3211431169
+ .long 1973418570
+ .long 3218365781
+ .long 3156689511
+ .long 3202524481
+ .long 2656657906
+ .long 1072693562
+ .long 3498100032
+ .long 3211625196
+ .long 125419693
+ .long 3218361162
+ .long 1620715508
+ .long 3202751895
+ .long 2404819887
+ .long 1072693608
+ .long 4021715948
+ .long 3211810552
+ .long 1645154164
+ .long 3218356389
+ .long 703452016
+ .long 3203011668
+ .long 1243884135
+ .long 1072693659
+ .long 480742811
+ .long 3211921363
+ .long 3122063309
+ .long 3218351464
+ .long 223504399
+ .long 3203307063
+ .long 495862037
+ .long 1072693715
+ .long 300794004
+ .long 3212039372
+ .long 1300653287
+ .long 3218346389
+ .long 1176592120
+ .long 3203610816
+ .long 3274452673
+ .long 1072693808
+ .long 2613861807
+ .long 3212229889
+ .long 359514654
+ .long 3218338503
+ .long 2923503278
+ .long 3204034910
+ .long 3741678157
+ .long 1072693954
+ .long 3651935792
+ .long 3212511436
+ .long 2702507736
+ .long 3218327463
+ .long 2210624435
+ .long 3204506468
+ .long 1100251351
+ .long 1072694127
+ .long 3514265607
+ .long 3212825173
+ .long 957470414
+ .long 3218315845
+ .long 1305550937
+ .long 3204833184
+ .long 2996845965
+ .long 1072694328
+ .long 3142229264
+ .long 3213004685
+ .long 1883674585
+ .long 3218303659
+ .long 3326598907
+ .long 3205231584
+ .long 274977645
+ .long 1072694562
+ .long 3016319234
+ .long 3213195820
+ .long 1539002348
+ .long 3218290918
+ .long 3984366897
+ .long 3205604614
+ .long 1292806442
+ .long 1072694830
+ .long 3262520051
+ .long 3213405058
+ .long 2372653574
+ .long 3218277634
+ .long 2452462577
+ .long 3205892032
+ .long 1815353697
+ .long 1072695136
+ .long 3662183375
+ .long 3213632998
+ .long 250148789
+ .long 3218263821
+ .long 2158010733
+ .long 3206232708
+ .long 2150433494
+ .long 1072695483
+ .long 3919565056
+ .long 3213880202
+ .long 1540395291
+ .long 3218249491
+ .long 3182910565
+ .long 3206589369
+ .long 2808974545
+ .long 1072695874
+ .long 1965799910
+ .long 3214016317
+ .long 1545570484
+ .long 3218234659
+ .long 1413633121
+ .long 3206823218
+ .long 164723038
+ .long 1072696313
+ .long 81021250
+ .long 3214159950
+ .long 1583468454
+ .long 3218219339
+ .long 18571726
+ .long 3207094384
+ .long 3588317822
+ .long 1072696801
+ .long 4095098713
+ .long 3214313941
+ .long 298038316
+ .long 3218203546
+ .long 912947688
+ .long 3207406859
+ .long 1041448961
+ .long 1072697344
+ .long 4179586945
+ .long 3214478495
+ .long 2148027612
+ .long 3218187294
+ .long 3720520462
+ .long 3207679413
+ .long 1980273179
+ .long 1072697943
+ .long 1752543433
+ .long 3214653794
+ .long 124299728
+ .long 3218170600
+ .long 864061540
+ .long 3207883361
+ .long 2949417123
+ .long 1072698602
+ .long 4190073881
+ .long 3214839998
+ .long 1415544749
+ .long 3218153478
+ .long 3694676202
+ .long 3208114560
+ .long 420771937
+ .long 1072699325
+ .long 1282420231
+ .long 3214985633
+ .long 1533345938
+ .long 3218135945
+ .long 2892854837
+ .long 3208375402
+ .long 3632588569
+ .long 1072700113
+ .long 2712748874
+ .long 3215089842
+ .long 1386124246
+ .long 3218118017
+ .long 1634175019
+ .long 3208733922
+ .long 347483009
+ .long 1072701423
+ .long 1161341506
+ .long 3215256321
+ .long 1877668895
+ .long 3218090451
+ .long 4108664264
+ .long 3209099007
+ .long 3038559136
+ .long 1072703435
+ .long 2683048238
+ .long 3215498732
+ .long 1179454900
+ .long 3218025113
+ .long 1332126937
+ .long 3209546908
+ .long 3486307715
+ .long 1072705767
+ .long 2508275841
+ .long 3215764027
+ .long 359393231
+ .long 3217946511
+ .long 1961215910
+ .long 3209890029
+ .long 2252418763
+ .long 1072708441
+ .long 2827865151
+ .long 3216017387
+ .long 3509880367
+ .long 3217865627
+ .long 3222140085
+ .long 3210213923
+ .long 1486994624
+ .long 1072711477
+ .long 3160629487
+ .long 3216172802
+ .long 1178047112
+ .long 3217782741
+ .long 1901428593
+ .long 3210596649
+ .long 3746562216
+ .long 1072714893
+ .long 1033996001
+ .long 3216339382
+ .long 39866696
+ .long 3217698130
+ .long 2908573463
+ .long 3210891953
+ .long 2324761591
+ .long 1072718707
+ .long 2389401627
+ .long 3216516876
+ .long 3645939838
+ .long 3217612071
+ .long 2440236284
+ .long 3211151116
+ .long 1761407793
+ .long 1072722932
+ .long 2502005220
+ .long 3216704962
+ .long 1997398717
+ .long 3217524842
+ .long 2895026412
+ .long 3211448596
+ .long 4114502182
+ .long 1072727579
+ .long 2605061383
+ .long 3216903247
+ .long 58515002
+ .long 3217436714
+ .long 711731960
+ .long 3211787230
+ .long 3951984035
+ .long 1072732658
+ .long 3516063216
+ .long 3217071220
+ .long 3638757279
+ .long 3217347953
+ .long 3233370794
+ .long 3211979005
+ .long 658281779
+ .long 1072738175
+ .long 309554960
+ .long 3217179845
+ .long 1331214594
+ .long 3217258823
+ .long 2937534811
+ .long 3212193451
+ .long 2289001467
+ .long 1072744131
+ .long 2442043690
+ .long 3217292793
+ .long 2664085653
+ .long 3217169576
+ .long 3462081454
+ .long 3212432263
+ .long 3795084150
+ .long 1072750527
+ .long 1130374688
+ .long 3217409754
+ .long 3638257201
+ .long 3217080459
+ .long 3906637920
+ .long 3212696488
+ .long 4040275044
+ .long 1072757360
+ .long 3643517564
+ .long 3217530392
+ .long 4148962921
+ .long 3216952251
+ .long 1995056602
+ .long 3212911950
+ .long 1479928784
+ .long 1072764624
+ .long 2653868580
+ .long 3217654355
+ .long 1010106713
+ .long 3216775940
+ .long 3129357315
+ .long 3213070764
+ .long 2856812514
+ .long 1072772308
+ .long 1621093115
+ .long 3217781272
+ .long 1824031529
+ .long 3216601249
+ .long 2296680075
+ .long 3213333328
+ .long 2460843475
+ .long 1072784536
+ .long 3722925065
+ .long 3217975665
+ .long 3901534801
+ .long 3216343697
+ .long 741495589
+ .long 3213734822
+ .long 13033194
+ .long 1072802249
+ .long 1706090638
+ .long 3218161084
+ .long 4129724113
+ .long 3216008854
+ .long 2582831738
+ .long 3214039094
+ .long 3092949488
+ .long 1072821329
+ .long 4163404160
+ .long 3218296789
+ .long 673560195
+ .long 3215391593
+ .long 1852259695
+ .long 3214295490
+ .long 3663604487
+ .long 1072841572
+ .long 2783926416
+ .long 3218433189
+ .long 538028418
+ .long 3214623601
+ .long 955002681
+ .long 3214577680
+ .long 1457520314
+ .long 1072862739
+ .long 2977011911
+ .long 3218568683
+ .long 2456605794
+ .long 3213048602
+ .long 1782979473
+ .long 3214883178
+ .long 3136246603
+ .long 1072884563
+ .long 4172123069
+ .long 3218701739
+ .long 1041205303
+ .long 1065062250
+ .long 1494191018
+ .long 3215071352
+ .long 2030188257
+ .long 1072906761
+ .long 242335435
+ .long 3218830924
+ .long 3225388224
+ .long 1066807264
+ .long 2597486284
+ .long 3215242091
+ .long 1527970838
+ .long 1072929036
+ .long 2966426512
+ .long 3218954923
+ .long 1554080475
+ .long 1067589039
+ .long 1299968651
+ .long 3215418462
+ .long 3575385503
+ .long 1072951087
+ .long 2115725422
+ .long 3219072567
+ .long 1970202642
+ .long 1068007486
+ .long 633750547
+ .long 3215597833
+ .long 4170701031
+ .long 1072972617
+ .long 46586082
+ .long 3219155579
+ .long 1194653136
+ .long 1068384025
+ .long 4171340731
+ .long 3215777352
+ .long 3578160514
+ .long 1072993337
+ .long 3238411740
+ .long 3219206599
+ .long 3278559237
+ .long 1068609006
+ .long 2404931200
+ .long 3215954013
+ .long 533888921
+ .long 1073012973
+ .long 1507597629
+ .long 3219253160
+ .long 2386969249
+ .long 1068756225
+ .long 272720058
+ .long 3216053653
+ .long 54544651
+ .long 1073031269
+ .long 3020671348
+ .long 3219294996
+ .long 4122670807
+ .long 1068883785
+ .long 2536786852
+ .long 3216134458
+ .long 230026772
+ .long 1073047994
+ .long 2830531360
+ .long 3219331923
+ .long 2545616196
+ .long 1068992498
+ .long 3897096954
+ .long 3216209170
+ .long 867435464
+ .long 1073062943
+ .long 3935983781
+ .long 3219363830
+ .long 4280666630
+ .long 1069083305
+ .long 1614478429
+ .long 3216276286
+ .long 3991143559
+ .long 1073075939
+ .long 3165050417
+ .long 3219390677
+ .long 248866814
+ .long 1069157251
+ .long 2328429718
+ .long 3216358398
+ .long 1880129173
+ .long 1073091258
+ .long 4059723411
+ .long 3219421162
+ .long 3082848917
+ .long 1069238148
+ .long 1081358649
+ .long 3216430553
+ .long 1955557582
+ .long 1073104040
+ .long 2869422647
+ .long 3219445318
+ .long 1310544530
+ .long 1069299023
+ .long 434435025
+ .long 3216450109
+ .long 3947018234
+ .long 1073107343
+ .long 3414641036
+ .long 3219451270
+ .long 4069313179
+ .long 1069313321
+ .long 1392468754
+ .long 3216410502
+ .long 3271741504
+ .long 1073101128
+ .long 3884994071
+ .long 3219440866
+ .long 1456085694
+ .long 1069290099
+ .long 2332856790
+ .long 3216307665
+ .long 3950891192
+ .long 1073085735
+ .long 439037894
+ .long 3219416288
+ .long 1197951536
+ .long 1069237765
+ .long 4195788421
+ .long 3216139842
+ .long 3990997338
+ .long 1073061787
+ .long 550042602
+ .long 3219379833
+ .long 2832452545
+ .long 1069163766
+ .long 1200943255
+ .long 3215832361
+ .long 2073883731
+ .long 1073030122
+ .long 3042850267
+ .long 3219333800
+ .long 991641143
+ .long 1069074535
+ .long 1637244010
+ .long 3215243222
+ .long 3805163810
+ .long 1072991715
+ .long 3517445189
+ .long 3219280382
+ .long 2680864185
+ .long 1068975465
+ .long 1457843741
+ .long 3214140932
+ .long 1315080793
+ .long 1072947617
+ .long 3059804278
+ .long 3219221594
+ .long 2861308047
+ .long 1068870963
+ .long 3296491873
+ .long 1064537111
+ .long 3728462150
+ .long 1072898893
+ .long 3615137083
+ .long 3219159232
+ .long 3017963192
+ .long 1068764532
+ .long 3972434375
+ .long 1067468619
+ .long 1336398218
+ .long 1072846587
+ .long 1068664290
+ .long 3219061390
+ .long 122240345
+ .long 1068658880
+ .long 508009436
+ .long 1068456917
+ .long 3501538245
+ .long 1072791681
+ .long 968690691
+ .long 3218931236
+ .long 1514516445
+ .long 1068556030
+ .long 671541798
+ .long 1069006173
+ .long 3814409280
+ .long 1072735081
+ .long 1553551847
+ .long 3218801852
+ .long 2849431279
+ .long 1068415930
+ .long 285838780
+ .long 1069554660
+ .long 2881499585
+ .long 1072661949
+ .long 928028610
+ .long 3218674977
+ .long 8837506
+ .long 1068229231
+ .long 4283922105
+ .long 1069842903
+ .long 1813934616
+ .long 1072546640
+ .long 2296020303
+ .long 3218551962
+ .long 3757630126
+ .long 1068054242
+ .long 4184842874
+ .long 1070138481
+ .long 1612285858
+ .long 1072432209
+ .long 3568867548
+ .long 3218433820
+ .long 2489334631
+ .long 1067891605
+ .long 3119354956
+ .long 1070586029
+ .long 1945534618
+ .long 1072265408
+ .long 12375465
+ .long 3218268030
+ .long 869568690
+ .long 1067671872
+ .long 313517472
+ .long 1070892138
+ .long 1205077106
+ .long 1072052753
+ .long 2329101392
+ .long 3218055718
+ .long 31064032
+ .long 1067390210
+ .long 1106783211
+ .long 1071186310
+ .long 571472860
+ .long 1071856508
+ .long 2279775366
+ .long 3217706561
+ .long 3977902324
+ .long 1066976012
+ .long 1438560376
+ .long 1071467394
+ .long 433300635
+ .long 1071678859
+ .long 2662131044
+ .long 3217407122
+ .long 3461865003
+ .long 1066639491
+ .long 3761842524
+ .long 1071687909
+ .long 591758334
+ .long 1071396321
+ .long 1311878841
+ .long 3217153539
+ .long 3007781852
+ .long 1066335723
+ .long 1614590629
+ .long 1071809819
+ .long 1253814918
+ .long 1071117476
+ .long 1728609767
+ .long 3216850667
+ .long 2200561853
+ .long 1065903347
+ .long 3821226689
+ .long 1071921115
+ .long 2022982069
+ .long 1070874479
+ .long 2030156196
+ .long 3216496942
+ .long 874711265
+ .long 1065560045
+ .long 2003227996
+ .long 1072021655
+ .long 2808404217
+ .long 1070664514
+ .long 1372837647
+ .long 3216204595
+ .long 822053276
+ .long 1065224094
+ .long 3767175364
+ .long 1072111660
+ .long 3043371777
+ .long 1070372670
+ .long 1442419211
+ .long 3215945892
+ .long 298752438
+ .long 1064796452
+ .long 1111528881
+ .long 1072191609
+ .long 3513208196
+ .long 1070065467
+ .long 3837735739
+ .long 3215552388
+ .long 3701924119
+ .long 1064460397
+ .long 1230501085
+ .long 1072262142
+ .long 2161267832
+ .long 1069804871
+ .long 4188367704
+ .long 3215231429
+ .long 401190186
+ .long 1064089052
+ .long 3002339892
+ .long 1072323996
+ .long 1480019407
+ .long 1069584807
+ .long 1833655520
+ .long 3214970435
+ .long 2907956919
+ .long 1063676311
+ .long 875346000
+ .long 1072377952
+ .long 3150437403
+ .long 1069251888
+ .long 876861923
+ .long 3214583482
+ .long 1689748747
+ .long 1063353511
+ .long 2795554744
+ .long 1072424793
+ .long 3869705215
+ .long 1068941581
+ .long 1837883894
+ .long 3214240854
+ .long 2762317048
+ .long 1062946513
+ .long 2491972100
+ .long 1072465284
+ .long 4114823501
+ .long 1068682289
+ .long 2146865463
+ .long 3213964103
+ .long 800804261
+ .long 1062552648
+ .long 2634953449
+ .long 1072500149
+ .long 2952556276
+ .long 1068433515
+ .long 1872935290
+ .long 3213596436
+ .long 525130857
+ .long 1062245296
+ .long 3287041404
+ .long 1072542855
+ .long 164674845
+ .long 1067923724
+ .long 3273134342
+ .long 3213089271
+ .long 171708004
+ .long 1061610314
+ .long 3035032320
+ .long 1072586748
+ .long 3976243935
+ .long 1067403539
+ .long 3504708444
+ .long 3212404491
+ .long 3955947885
+ .long 1060882840
+ .long 513098494
+ .long 1072618404
+ .long 416924237
+ .long 1066726877
+ .long 1788945081
+ .long 3211801737
+ .long 1199639353
+ .long 1060166859
+ .long 2284134637
+ .long 1072641010
+ .long 754275327
+ .long 1066136447
+ .long 94803481
+ .long 3211042671
+ .long 3377507017
+ .long 1059354147
+ .long 1467291457
+ .long 1072657015
+ .long 2435597312
+ .long 1065520743
+ .long 2819017772
+ .long 3210358609
+ .long 1988617747
+ .long 1058591581
+ .long 633705514
+ .long 1072668259
+ .long 392269686
+ .long 1064864433
+ .long 2964449929
+ .long 3209729770
+ .long 3963893163
+ .long 1057889872
+ .long 2214892393
+ .long 1072676103
+ .long 2190738271
+ .long 1064315837
+ .long 3773826451
+ .long 3208969045
+ .long 3609404170
+ .long 1057113308
+ .long 3795216963
+ .long 1072681541
+ .long 3959981107
+ .long 1063599490
+ .long 1577139384
+ .long 3208281591
+ .long 1777963469
+ .long 1056319886
+ .long 2768813161
+ .long 1072685290
+ .long 452197850
+ .long 1062981751
+ .long 625862001
+ .long 3207639777
+ .long 1894515286
+ .long 1055580811
+ .long 809336726
+ .long 1072687861
+ .long 325412222
+ .long 1062349073
+ .long 3494772326
+ .long 3206874482
+ .long 3143092609
+ .long 1054887561
+ .long 1391578948
+ .long 1072689615
+ .long 370441451
+ .long 1061660435
+ .long 67458841
+ .long 3206180214
+ .long 1971759196
+ .long 1054066692
+ .long 57274217
+ .long 1072690807
+ .long 293665776
+ .long 1061075750
+ .long 1340185983
+ .long 3205535605
+ .long 2210177191
+ .long 1053294335
+ .long 1110907588
+ .long 1072691613
+ .long 3961986905
+ .long 1060367146
+ .long 3774614905
+ .long 3204763416
+ .long 3590429673
+ .long 1052580827
+ .long 2737507729
+ .long 1072692156
+ .long 370479370
+ .long 1059701790
+ .long 1033751386
+ .long 3204059641
+ .long 1162278823
+ .long 1051830218
+ .long 2341375458
+ .long 1072692521
+ .long 760364123
+ .long 1059103172
+ .long 910883556
+ .long 3203420282
+ .long 401067508
+ .long 1051028170
+ .long 3358303651
+ .long 1072692765
+ .long 3104773993
+ .long 1058369139
+ .long 2043715743
+ .long 3202639413
+ .long 4274377921
+ .long 1050278646
+ .long 3501940353
+ .long 1072692984
+ .long 2710387139
+ .long 1057384557
+ .long 2550611600
+ .long 3201592258
+ .long 2260324605
+ .long 1049158690
+ .long 3160989127
+ .long 1072693133
+ .long 1403521776
+ .long 1056074537
+ .long 760745859
+ .long 3200238663
+ .long 1163121055
+ .long 1047679067
+ .long 3509020169
+ .long 1072693198
+ .long 3352058101
+ .long 1054743188
+ .long 2289323607
+ .long 3198722761
+ .long 918272756
+ .long 1046147840
+ .long 4268817660
+ .long 1072693226
+ .long 1580550645
+ .long 1053325591
+ .long 1736251411
+ .long 3197308470
+ .long 1531106447
+ .long 1044632576
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .type __svml_stanh_data_internal,@object
+ .size __svml_stanh_data_internal,6016
+ .align 4
+
+__stanh_la__imlsTanhTab:
+ .long 1065353216
+ .long 3212836864
+ .type __stanh_la__imlsTanhTab,@object
+ .size __stanh_la__imlsTanhTab,8
new file mode 100644
@@ -0,0 +1,20 @@
+/* SSE version of vectorized tanhf, vector length is 8.
+ Copyright (C) 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/>. */
+
+#define _ZGVdN8v_tanhf _ZGVdN8v_tanhf_sse_wrapper
+#include "../svml_s_tanhf8_core.S"
new file mode 100644
@@ -0,0 +1,28 @@
+/* Multiple versions of vectorized tanhf, vector length is 8.
+ Copyright (C) 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/>. */
+
+#define SYMBOL_NAME _ZGVdN8v_tanhf
+#include "ifunc-mathvec-avx2.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVdN8v_tanhf, __GI__ZGVdN8v_tanhf,
+ __redirect__ZGVdN8v_tanhf)
+ __attribute__ ((visibility ("hidden")));
+#endif
new file mode 100644
@@ -0,0 +1,2036 @@
+/* Function tanhf vectorized with AVX2.
+ Copyright (C) 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/. */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ * NOTE: Since the hyperbolic tangent function is odd
+ * (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ * value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ * We use a table lookup method to compute tanh(|x|).
+ * The basic idea is to split the input range into a number of subintervals
+ * and to approximate tanh(.) with a polynomial on each of them.
+ *
+ * IEEE SPECIAL CONDITIONS:
+ * x = [+,-]0, r = [+,-]0
+ * x = +Inf, r = +1
+ * x = -Inf, r = -1
+ * x = QNaN, r = QNaN
+ * x = SNaN, r = QNaN
+ *
+ *
+ * ALGORITHM DETAILS
+ * We handle special values in a callout function, aside from main path
+ * computations. "Special" for this algorithm are:
+ * INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ * Main path computations are organized as follows:
+ * Actually we split the interval [0, SATURATION_THRESHOLD)
+ * into a number of subintervals. On each subinterval we approximate tanh(.)
+ * with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ * are computed beforehand and stored in table. We also use
+ *
+ * y := |x| + B,
+ *
+ * here B depends on subinterval and is used to make argument
+ * closer to zero.
+ * We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ * where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ * preserve main path computation logic but return 1.0 for all arguments.
+ *
+ * Hence reconstruction looks as follows:
+ * we extract proper polynomial and range reduction coefficients
+ * (Pj and B), corresponding to subinterval, to which |x| belongs,
+ * and return
+ *
+ * r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ * NOTE: we use multiprecision technique to multiply and sum the first
+ * K terms of the polynomial. So Pj, j = 0..K are stored in
+ * table each as a pair of target precision numbers (Pj and PLj) to
+ * achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+ .text
+ .section .text.avx2,"ax",@progbits
+ENTRY(_ZGVdN8v_tanhf_avx2)
+ pushq %rbp
+ cfi_def_cfa_offset(16)
+ movq %rsp, %rbp
+ cfi_def_cfa(6, 16)
+ cfi_offset(6, -16)
+ andq $-64, %rsp
+ pushq %r14
+ pushq %r15
+ pushq %rbx
+ subq $360, %rsp
+ .cfi_escape 0x10, 0x03, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe8, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf8, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xff, 0xff, 0xff, 0x22
+ lea 1360+__svml_stanh_data_internal(%rip), %r14
+ vmovups %ymm12, 224(%rsp)
+
+/*
+ * small table specific variables *
+ * Constant loading
+ */
+ vmovups 5952+__svml_stanh_data_internal(%rip), %ymm4
+ vmovups %ymm13, 256(%rsp)
+ vmovups %ymm14, 288(%rsp)
+ vmovups %ymm15, 320(%rsp)
+ vmovups %ymm8, 32(%rsp)
+ vmovups %ymm10, 160(%rsp)
+ vmovups %ymm9, 96(%rsp)
+ vmovups %ymm11, 192(%rsp)
+ .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22
+ vmovaps %ymm0, %ymm12
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+ vpand 5760+__svml_stanh_data_internal(%rip), %ymm12, %ymm6
+ vpsubd 5888+__svml_stanh_data_internal(%rip), %ymm6, %ymm2
+
+/* if VMIN, VMAX is defined for I type */
+ vxorps %ymm3, %ymm3, %ymm3
+ vpcmpgtd %ymm3, %ymm2, %ymm1
+ vpand %ymm1, %ymm2, %ymm5
+ vpcmpgtd %ymm4, %ymm2, %ymm13
+ vblendvps %ymm13, %ymm4, %ymm5, %ymm14
+ vpsrld $14, %ymm14, %ymm15
+ vpcmpgtd 5824+__svml_stanh_data_internal(%rip), %ymm6, %ymm7
+ vandps 5696+__svml_stanh_data_internal(%rip), %ymm12, %ymm10
+ vmovmskps %ymm7, %ebx
+ vandps 5632+__svml_stanh_data_internal(%rip), %ymm12, %ymm11
+ vextractf128 $1, %ymm15, %xmm0
+ vmovd %xmm15, %r11d
+ vmovd %xmm0, %ecx
+ vpextrd $1, %xmm0, %edx
+ movslq %ecx, %rcx
+ movslq %edx, %rdx
+ vpextrd $2, %xmm0, %eax
+ vpextrd $3, %xmm0, %r15d
+ movslq %r11d, %r11
+ vpextrd $1, %xmm15, %r10d
+ vpextrd $2, %xmm15, %r9d
+ movslq %eax, %rax
+ movslq %r15d, %r15
+ movslq %r10d, %r10
+ movslq %r9d, %r9
+ vpextrd $3, %xmm15, %r8d
+ movslq %r8d, %r8
+ vmovupd -16(%rcx,%r14), %xmm8
+ vmovupd -16(%rdx,%r14), %xmm6
+ vmovupd (%r11,%r14), %xmm13
+ vmovupd (%rcx,%r14), %xmm0
+ vmovupd (%rdx,%r14), %xmm4
+ vmovupd -16(%r11,%r14), %xmm9
+ vmovupd -16(%r10,%r14), %xmm7
+ vmovupd (%r10,%r14), %xmm14
+ vinsertf128 $1, -16(%rax,%r14), %ymm8, %ymm2
+ vinsertf128 $1, -16(%r15,%r14), %ymm6, %ymm5
+ vunpcklpd %ymm5, %ymm2, %ymm8
+ vunpckhpd %ymm5, %ymm2, %ymm6
+ vinsertf128 $1, (%r9,%r14), %ymm13, %ymm5
+ vinsertf128 $1, (%rax,%r14), %ymm0, %ymm13
+ vinsertf128 $1, (%r15,%r14), %ymm4, %ymm0
+ vcvtps2pd %xmm10, %ymm4
+ vextractf128 $1, %ymm10, %xmm10
+ vinsertf128 $1, -16(%r9,%r14), %ymm9, %ymm3
+ vinsertf128 $1, -16(%r8,%r14), %ymm7, %ymm1
+ vunpcklpd %ymm1, %ymm3, %ymm9
+ vunpckhpd %ymm1, %ymm3, %ymm7
+ vinsertf128 $1, (%r8,%r14), %ymm14, %ymm1
+ vunpcklpd %ymm1, %ymm5, %ymm3
+ vunpckhpd %ymm1, %ymm5, %ymm2
+ vcvtps2pd %xmm10, %ymm5
+ vfmadd213pd %ymm3, %ymm4, %ymm2
+ vfmadd213pd %ymm7, %ymm4, %ymm2
+ vunpcklpd %ymm0, %ymm13, %ymm1
+ vunpckhpd %ymm0, %ymm13, %ymm0
+ vfmadd213pd %ymm1, %ymm5, %ymm0
+ vfmadd213pd %ymm9, %ymm4, %ymm2
+ vfmadd213pd %ymm6, %ymm5, %ymm0
+ vcvtpd2ps %ymm2, %xmm1
+ vfmadd213pd %ymm8, %ymm5, %ymm0
+ vcvtpd2ps %ymm0, %xmm0
+ vinsertf128 $1, %xmm0, %ymm1, %ymm2
+ vorps %ymm11, %ymm2, %ymm0
+ testl %ebx, %ebx
+ jne L(2)
+
+L(1):
+ vmovups 32(%rsp), %ymm8
+ cfi_restore(91)
+ vmovups 96(%rsp), %ymm9
+ cfi_restore(92)
+ vmovups 160(%rsp), %ymm10
+ cfi_restore(93)
+ vmovups 192(%rsp), %ymm11
+ cfi_restore(94)
+ vmovups 224(%rsp), %ymm12
+ cfi_restore(95)
+ vmovups 256(%rsp), %ymm13
+ cfi_restore(96)
+ vmovups 288(%rsp), %ymm14
+ cfi_restore(97)
+ vmovups 320(%rsp), %ymm15
+ cfi_restore(98)
+ addq $360, %rsp
+ cfi_restore(3)
+ popq %rbx
+ cfi_restore(15)
+ popq %r15
+ cfi_restore(14)
+ popq %r14
+ movq %rbp, %rsp
+ popq %rbp
+ cfi_def_cfa(7, 8)
+ cfi_restore(6)
+ ret
+ cfi_def_cfa(6, 16)
+ .cfi_escape 0x10, 0x03, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe8, 0xff, 0xff, 0xff, 0x22
+ cfi_offset(6, -16)
+ .cfi_escape 0x10, 0x0e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf8, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x0f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22
+
+L(2):
+ vmovups %ymm12, 64(%rsp)
+ vmovups %ymm0, 128(%rsp)
+ je L(1)
+ xorl %r14d, %r14d
+ vzeroupper
+ movq %rsi, 8(%rsp)
+ movq %rdi, (%rsp)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22
+
+L(3):
+ btl %r14d, %ebx
+ jc L(5)
+
+L(4):
+ incl %r14d
+ cmpl $8, %r14d
+ jl L(3)
+ movq 8(%rsp), %rsi
+ cfi_restore(4)
+ movq (%rsp), %rdi
+ cfi_restore(5)
+ vmovups 128(%rsp), %ymm0
+ jmp L(1)
+ .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22
+ .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22
+
+L(5):
+ lea 64(%rsp,%r14,4), %rdi
+ lea 128(%rsp,%r14,4), %rsi
+ call __svml_stanh_cout_rare_internal
+ jmp L(4)
+
+END(_ZGVdN8v_tanhf_avx2)
+
+ .align 16,0x90
+
+__svml_stanh_cout_rare_internal:
+
+ cfi_startproc
+
+ lea __stanh_la__imlsTanhTab(%rip), %rdx
+ movb 3(%rdi), %al
+ andb $-128, %al
+ shrb $7, %al
+ movzbl %al, %ecx
+ movzwl 2(%rdi), %r8d
+ andl $32640, %r8d
+ movl (%rdx,%rcx,4), %eax
+ cmpl $32640, %r8d
+ je L(8)
+
+L(6):
+ movl %eax, (%rsi)
+
+L(7):
+ xorl %eax, %eax
+ ret
+
+L(8):
+ testl $8388607, (%rdi)
+ je L(6)
+ movss (%rdi), %xmm0
+ addss %xmm0, %xmm0
+ movss %xmm0, (%rsi)
+ jmp L(7)
+
+ cfi_endproc
+
+ .type __svml_stanh_cout_rare_internal,@function
+ .size __svml_stanh_cout_rare_internal,.-__svml_stanh_cout_rare_internal
+
+ .section .rodata, "a"
+ .align 64
+
+__svml_stanh_data_internal:
+ .long 0
+ .long 1030750208
+ .long 1032847360
+ .long 1034944512
+ .long 1037041664
+ .long 1039138816
+ .long 1041235968
+ .long 1043333120
+ .long 1045430272
+ .long 1047527424
+ .long 1049624576
+ .long 1051721728
+ .long 1053818880
+ .long 1055916032
+ .long 1058013184
+ .long 1060110336
+ .long 1062207488
+ .long 1064304640
+ .long 1066401792
+ .long 1068498944
+ .long 1070596096
+ .long 1072693248
+ .long 1074790400
+ .long 1076887552
+ .long 1078984704
+ .long 1081081856
+ .long 1083179008
+ .long 1085276160
+ .long 1087373312
+ .long 1089470464
+ .long 1091567616
+ .long 0
+ .long 0
+ .long 1030732233
+ .long 1032831839
+ .long 1034916201
+ .long 1036994987
+ .long 1039067209
+ .long 1041174248
+ .long 1043220868
+ .long 1045245838
+ .long 1047245614
+ .long 1049383373
+ .long 1051287907
+ .long 1053115377
+ .long 1054857013
+ .long 1057129528
+ .long 1058581488
+ .long 1059832960
+ .long 1060891676
+ .long 1062153819
+ .long 1063337043
+ .long 1064100733
+ .long 1064582223
+ .long 1064984555
+ .long 1065216645
+ .long 1065302845
+ .long 1065334668
+ .long 1065349076
+ .long 1065352656
+ .long 1065353140
+ .long 1065353206
+ .long 1065353215
+ .long 1065353216
+ .long 0
+ .long 2963361822
+ .long 2971470750
+ .long 2945658640
+ .long 821708412
+ .long 824483568
+ .long 824941280
+ .long 2984085072
+ .long 2957298688
+ .long 838449816
+ .long 2966046080
+ .long 2988320324
+ .long 2989804564
+ .long 842626356
+ .long 3000013710
+ .long 2972725824
+ .long 3002017674
+ .long 853753500
+ .long 2987104448
+ .long 3000350914
+ .long 855535800
+ .long 852410906
+ .long 851608946
+ .long 2988641656
+ .long 2997011000
+ .long 2989576736
+ .long 3000884068
+ .long 2999984336
+ .long 840950056
+ .long 2995215280
+ .long 855269702
+ .long 0
+ .long 1065353216
+ .long 1065295748
+ .long 1065270545
+ .long 1065229919
+ .long 1065181343
+ .long 1065124909
+ .long 1065025765
+ .long 1064867200
+ .long 1064679597
+ .long 1064464345
+ .long 1064093083
+ .long 1063517074
+ .long 1062862743
+ .long 1062146519
+ .long 1060992371
+ .long 1059386208
+ .long 1057800167
+ .long 1055660649
+ .long 1051764737
+ .long 1046959010
+ .long 1041444634
+ .long 1035462611
+ .long 1026689093
+ .long 1015337940
+ .long 1002731447
+ .long 990958554
+ .long 973168670
+ .long 948705851
+ .long 924299482
+ .long 899955662
+ .long 864224966
+ .long 0
+ .long 2956213371
+ .long 3178161821
+ .long 3180268967
+ .long 3182315389
+ .long 3184339487
+ .long 3186337805
+ .long 3188474939
+ .long 3190373619
+ .long 3192189570
+ .long 3193910865
+ .long 3196176320
+ .long 3197556682
+ .long 3198679950
+ .long 3199536798
+ .long 3200331518
+ .long 3200564882
+ .long 3200049264
+ .long 3199029518
+ .long 3197040598
+ .long 3192620804
+ .long 3188208183
+ .long 3182392393
+ .long 3173916356
+ .long 3162750726
+ .long 3150176437
+ .long 3138431708
+ .long 3120650203
+ .long 3096189170
+ .long 3071783062
+ .long 3047439278
+ .long 3011707180
+ .long 0
+ .long 3198855845
+ .long 3198879250
+ .long 3198677023
+ .long 3198476576
+ .long 3198388151
+ .long 3198245218
+ .long 3197982711
+ .long 3197594458
+ .long 3197117197
+ .long 3196587519
+ .long 3195304371
+ .long 3192667528
+ .long 3189843074
+ .long 3186330810
+ .long 3177085101
+ .long 1013669486
+ .long 1032032579
+ .long 1036132065
+ .long 1038305199
+ .long 1036774550
+ .long 1033498413
+ .long 1028927137
+ .long 1021175553
+ .long 1009568359
+ .long 998361895
+ .long 985691041
+ .long 967585842
+ .long 943363289
+ .long 919210013
+ .long 895139148
+ .long 858471606
+ .long 0
+ .long 3077428921
+ .long 3189516141
+ .long 1008586543
+ .long 1036101517
+ .long 1033304453
+ .long 1034073627
+ .long 1036071831
+ .long 1037235824
+ .long 1039436298
+ .long 1040631208
+ .long 1041906362
+ .long 1042793477
+ .long 1043232976
+ .long 1043086916
+ .long 1042100375
+ .long 1039444212
+ .long 1034126600
+ .long 1026638186
+ .long 995501655
+ .long 3165579977
+ .long 3167654937
+ .long 3165317828
+ .long 3158960080
+ .long 3148291549
+ .long 3137354510
+ .long 3124730373
+ .long 3106670759
+ .long 3082457650
+ .long 3058305807
+ .long 3034235241
+ .long 2997581996
+ .long 0
+ .long 1040781545
+ .long 1131811139
+ .long 1097198812
+ .long 3247503190
+ .long 3230402941
+ .long 3224086547
+ .long 3212798938
+ .long 1059790272
+ .long 1053691997
+ .long 1061317268
+ .long 3134918084
+ .long 1034173207
+ .long 3176246152
+ .long 3165561405
+ .long 3174788493
+ .long 3178015405
+ .long 3178847213
+ .long 3177176538
+ .long 3171127099
+ .long 3155996003
+ .long 985352038
+ .long 999682315
+ .long 998398067
+ .long 989522534
+ .long 977926264
+ .long 966355955
+ .long 948911724
+ .long 924561635
+ .long 900244966
+ .long 875993879
+ .long 841254832
+ .long 0
+ .long 3155046246
+ .long 1175181842
+ .long 1138112751
+ .long 3286309950
+ .long 3267011817
+ .long 3259619885
+ .long 3246758786
+ .long 1088248663
+ .long 1078543936
+ .long 1086795944
+ .long 3205436942
+ .long 1043392367
+ .long 3198686087
+ .long 3182586396
+ .long 3174374999
+ .long 3142320544
+ .long 1008565243
+ .long 1014115537
+ .long 1016545052
+ .long 1010017051
+ .long 998649588
+ .long 975680464
+ .long 3124451591
+ .long 3121544226
+ .long 3112148751
+ .long 3100159824
+ .long 3082673659
+ .long 3058641232
+ .long 3034613169
+ .long 3010665978
+ .long 2975473412
+ .long 0
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .long 2145386496
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .long 1027604480
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .long 65011712
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 0
+ .long 0
+ .long 36466923
+ .long 1072693248
+ .long 2365563284
+ .long 3201306247
+ .long 1829111721
+ .long 3218428278
+ .long 3823420055
+ .long 3193165324
+ .long 1098370908
+ .long 1072693250
+ .long 2493848101
+ .long 3205978300
+ .long 1742787824
+ .long 3218423470
+ .long 4013086462
+ .long 3193609799
+ .long 3667406935
+ .long 1072693250
+ .long 1352570026
+ .long 3206273363
+ .long 1445916117
+ .long 3218422747
+ .long 3835089556
+ .long 3194065339
+ .long 2420711447
+ .long 1072693251
+ .long 2169133006
+ .long 3206574718
+ .long 101347106
+ .long 3218421982
+ .long 713636389
+ .long 3194411770
+ .long 1709214929
+ .long 1072693252
+ .long 1710199222
+ .long 3206758855
+ .long 2216669086
+ .long 3218421174
+ .long 3814844772
+ .long 3194836884
+ .long 1591910603
+ .long 1072693253
+ .long 2011589771
+ .long 3206962796
+ .long 3721194918
+ .long 3218420324
+ .long 1295469166
+ .long 3195182212
+ .long 2130808979
+ .long 1072693254
+ .long 1222040805
+ .long 3207187539
+ .long 555871541
+ .long 3218419433
+ .long 401254514
+ .long 3195493098
+ .long 3390924472
+ .long 1072693255
+ .long 3112838711
+ .long 3207434078
+ .long 1558155560
+ .long 3218418499
+ .long 683885552
+ .long 3195864282
+ .long 1145294069
+ .long 1072693257
+ .long 1821670117
+ .long 3207648695
+ .long 2692181933
+ .long 3218417523
+ .long 2704036295
+ .long 3196181879
+ .long 4054831834
+ .long 1072693258
+ .long 1649153664
+ .long 3207795248
+ .long 4228604383
+ .long 3218416505
+ .long 4004758581
+ .long 3196440654
+ .long 3603542514
+ .long 1072693260
+ .long 1123737044
+ .long 3207954183
+ .long 2154630785
+ .long 3218415446
+ .long 2606327835
+ .long 3196743208
+ .long 4163276658
+ .long 1072693262
+ .long 2048619642
+ .long 3208125991
+ .long 1058893780
+ .long 3218414345
+ .long 250194901
+ .long 3197094852
+ .long 1518877548
+ .long 1072693265
+ .long 3379868633
+ .long 3208311162
+ .long 1246516380
+ .long 3218413202
+ .long 1621358934
+ .long 3197304764
+ .long 48033162
+ .long 1072693268
+ .long 957106177
+ .long 3208510185
+ .long 3034045498
+ .long 3218412017
+ .long 798414253
+ .long 3197538466
+ .long 4131323741
+ .long 1072693270
+ .long 2207647163
+ .long 3208683052
+ .long 2454449664
+ .long 3218410791
+ .long 1709648499
+ .long 3197805932
+ .long 972334142
+ .long 1072693274
+ .long 1279092327
+ .long 3208797143
+ .long 4141984674
+ .long 3218409523
+ .long 4279927728
+ .long 3198110676
+ .long 3547307714
+ .long 1072693277
+ .long 873763845
+ .long 3208918886
+ .long 4152286949
+ .long 3218408214
+ .long 947630201
+ .long 3198400037
+ .long 3779918761
+ .long 1072693283
+ .long 2452756690
+ .long 3209115951
+ .long 2900277560
+ .long 3218406175
+ .long 4114829322
+ .long 3198840356
+ .long 1550746642
+ .long 1072693293
+ .long 3179273584
+ .long 3209408258
+ .long 1697097694
+ .long 3218403310
+ .long 3189856208
+ .long 3199299134
+ .long 2567958063
+ .long 1072693304
+ .long 2177201355
+ .long 3209713300
+ .long 663593652
+ .long 3218400281
+ .long 1915839956
+ .long 3199641526
+ .long 3400799630
+ .long 1072693317
+ .long 2625933576
+ .long 3209895292
+ .long 3140727122
+ .long 3218397088
+ .long 2825210621
+ .long 3200061154
+ .long 661592278
+ .long 1072693333
+ .long 2751163500
+ .long 3210096603
+ .long 4055449010
+ .long 3218393733
+ .long 57286782
+ .long 3200412116
+ .long 3889851982
+ .long 1072693350
+ .long 2680384314
+ .long 3210318153
+ .long 2804057046
+ .long 3218390217
+ .long 1812582369
+ .long 3200718155
+ .long 1191734144
+ .long 1072693371
+ .long 867498228
+ .long 3210560852
+ .long 3250577733
+ .long 3218386540
+ .long 3326742410
+ .long 3201083020
+ .long 2188854007
+ .long 1072693394
+ .long 363145135
+ .long 3210782655
+ .long 840173644
+ .long 3218382704
+ .long 1735074843
+ .long 3201408616
+ .long 3657661222
+ .long 1072693420
+ .long 2204762872
+ .long 3210926495
+ .long 4072217384
+ .long 3218378708
+ .long 2965875284
+ .long 3201662196
+ .long 2413420961
+ .long 1072693450
+ .long 1162405510
+ .long 3211082241
+ .long 138720143
+ .long 3218374556
+ .long 454705634
+ .long 3201958187
+ .long 3899194868
+ .long 1072693483
+ .long 669033796
+ .long 3211250324
+ .long 2167069495
+ .long 3218370246
+ .long 1542529428
+ .long 3202301612
+ .long 710018948
+ .long 1072693521
+ .long 2883210692
+ .long 3211431169
+ .long 1973418570
+ .long 3218365781
+ .long 3156689511
+ .long 3202524481
+ .long 2656657906
+ .long 1072693562
+ .long 3498100032
+ .long 3211625196
+ .long 125419693
+ .long 3218361162
+ .long 1620715508
+ .long 3202751895
+ .long 2404819887
+ .long 1072693608
+ .long 4021715948
+ .long 3211810552
+ .long 1645154164
+ .long 3218356389
+ .long 703452016
+ .long 3203011668
+ .long 1243884135
+ .long 1072693659
+ .long 480742811
+ .long 3211921363
+ .long 3122063309
+ .long 3218351464
+ .long 223504399
+ .long 3203307063
+ .long 495862037
+ .long 1072693715
+ .long 300794004
+ .long 3212039372
+ .long 1300653287
+ .long 3218346389
+ .long 1176592120
+ .long 3203610816
+ .long 3274452673
+ .long 1072693808
+ .long 2613861807
+ .long 3212229889
+ .long 359514654
+ .long 3218338503
+ .long 2923503278
+ .long 3204034910
+ .long 3741678157
+ .long 1072693954
+ .long 3651935792
+ .long 3212511436
+ .long 2702507736
+ .long 3218327463
+ .long 2210624435
+ .long 3204506468
+ .long 1100251351
+ .long 1072694127
+ .long 3514265607
+ .long 3212825173
+ .long 957470414
+ .long 3218315845
+ .long 1305550937
+ .long 3204833184
+ .long 2996845965
+ .long 1072694328
+ .long 3142229264
+ .long 3213004685
+ .long 1883674585
+ .long 3218303659
+ .long 3326598907
+ .long 3205231584
+ .long 274977645
+ .long 1072694562
+ .long 3016319234
+ .long 3213195820
+ .long 1539002348
+ .long 3218290918
+ .long 3984366897
+ .long 3205604614
+ .long 1292806442
+ .long 1072694830
+ .long 3262520051
+ .long 3213405058
+ .long 2372653574
+ .long 3218277634
+ .long 2452462577
+ .long 3205892032
+ .long 1815353697
+ .long 1072695136
+ .long 3662183375
+ .long 3213632998
+ .long 250148789
+ .long 3218263821
+ .long 2158010733
+ .long 3206232708
+ .long 2150433494
+ .long 1072695483
+ .long 3919565056
+ .long 3213880202
+ .long 1540395291
+ .long 3218249491
+ .long 3182910565
+ .long 3206589369
+ .long 2808974545
+ .long 1072695874
+ .long 1965799910
+ .long 3214016317
+ .long 1545570484
+ .long 3218234659
+ .long 1413633121
+ .long 3206823218
+ .long 164723038
+ .long 1072696313
+ .long 81021250
+ .long 3214159950
+ .long 1583468454
+ .long 3218219339
+ .long 18571726
+ .long 3207094384
+ .long 3588317822
+ .long 1072696801
+ .long 4095098713
+ .long 3214313941
+ .long 298038316
+ .long 3218203546
+ .long 912947688
+ .long 3207406859
+ .long 1041448961
+ .long 1072697344
+ .long 4179586945
+ .long 3214478495
+ .long 2148027612
+ .long 3218187294
+ .long 3720520462
+ .long 3207679413
+ .long 1980273179
+ .long 1072697943
+ .long 1752543433
+ .long 3214653794
+ .long 124299728
+ .long 3218170600
+ .long 864061540
+ .long 3207883361
+ .long 2949417123
+ .long 1072698602
+ .long 4190073881
+ .long 3214839998
+ .long 1415544749
+ .long 3218153478
+ .long 3694676202
+ .long 3208114560
+ .long 420771937
+ .long 1072699325
+ .long 1282420231
+ .long 3214985633
+ .long 1533345938
+ .long 3218135945
+ .long 2892854837
+ .long 3208375402
+ .long 3632588569
+ .long 1072700113
+ .long 2712748874
+ .long 3215089842
+ .long 1386124246
+ .long 3218118017
+ .long 1634175019
+ .long 3208733922
+ .long 347483009
+ .long 1072701423
+ .long 1161341506
+ .long 3215256321
+ .long 1877668895
+ .long 3218090451
+ .long 4108664264
+ .long 3209099007
+ .long 3038559136
+ .long 1072703435
+ .long 2683048238
+ .long 3215498732
+ .long 1179454900
+ .long 3218025113
+ .long 1332126937
+ .long 3209546908
+ .long 3486307715
+ .long 1072705767
+ .long 2508275841
+ .long 3215764027
+ .long 359393231
+ .long 3217946511
+ .long 1961215910
+ .long 3209890029
+ .long 2252418763
+ .long 1072708441
+ .long 2827865151
+ .long 3216017387
+ .long 3509880367
+ .long 3217865627
+ .long 3222140085
+ .long 3210213923
+ .long 1486994624
+ .long 1072711477
+ .long 3160629487
+ .long 3216172802
+ .long 1178047112
+ .long 3217782741
+ .long 1901428593
+ .long 3210596649
+ .long 3746562216
+ .long 1072714893
+ .long 1033996001
+ .long 3216339382
+ .long 39866696
+ .long 3217698130
+ .long 2908573463
+ .long 3210891953
+ .long 2324761591
+ .long 1072718707
+ .long 2389401627
+ .long 3216516876
+ .long 3645939838
+ .long 3217612071
+ .long 2440236284
+ .long 3211151116
+ .long 1761407793
+ .long 1072722932
+ .long 2502005220
+ .long 3216704962
+ .long 1997398717
+ .long 3217524842
+ .long 2895026412
+ .long 3211448596
+ .long 4114502182
+ .long 1072727579
+ .long 2605061383
+ .long 3216903247
+ .long 58515002
+ .long 3217436714
+ .long 711731960
+ .long 3211787230
+ .long 3951984035
+ .long 1072732658
+ .long 3516063216
+ .long 3217071220
+ .long 3638757279
+ .long 3217347953
+ .long 3233370794
+ .long 3211979005
+ .long 658281779
+ .long 1072738175
+ .long 309554960
+ .long 3217179845
+ .long 1331214594
+ .long 3217258823
+ .long 2937534811
+ .long 3212193451
+ .long 2289001467
+ .long 1072744131
+ .long 2442043690
+ .long 3217292793
+ .long 2664085653
+ .long 3217169576
+ .long 3462081454
+ .long 3212432263
+ .long 3795084150
+ .long 1072750527
+ .long 1130374688
+ .long 3217409754
+ .long 3638257201
+ .long 3217080459
+ .long 3906637920
+ .long 3212696488
+ .long 4040275044
+ .long 1072757360
+ .long 3643517564
+ .long 3217530392
+ .long 4148962921
+ .long 3216952251
+ .long 1995056602
+ .long 3212911950
+ .long 1479928784
+ .long 1072764624
+ .long 2653868580
+ .long 3217654355
+ .long 1010106713
+ .long 3216775940
+ .long 3129357315
+ .long 3213070764
+ .long 2856812514
+ .long 1072772308
+ .long 1621093115
+ .long 3217781272
+ .long 1824031529
+ .long 3216601249
+ .long 2296680075
+ .long 3213333328
+ .long 2460843475
+ .long 1072784536
+ .long 3722925065
+ .long 3217975665
+ .long 3901534801
+ .long 3216343697
+ .long 741495589
+ .long 3213734822
+ .long 13033194
+ .long 1072802249
+ .long 1706090638
+ .long 3218161084
+ .long 4129724113
+ .long 3216008854
+ .long 2582831738
+ .long 3214039094
+ .long 3092949488
+ .long 1072821329
+ .long 4163404160
+ .long 3218296789
+ .long 673560195
+ .long 3215391593
+ .long 1852259695
+ .long 3214295490
+ .long 3663604487
+ .long 1072841572
+ .long 2783926416
+ .long 3218433189
+ .long 538028418
+ .long 3214623601
+ .long 955002681
+ .long 3214577680
+ .long 1457520314
+ .long 1072862739
+ .long 2977011911
+ .long 3218568683
+ .long 2456605794
+ .long 3213048602
+ .long 1782979473
+ .long 3214883178
+ .long 3136246603
+ .long 1072884563
+ .long 4172123069
+ .long 3218701739
+ .long 1041205303
+ .long 1065062250
+ .long 1494191018
+ .long 3215071352
+ .long 2030188257
+ .long 1072906761
+ .long 242335435
+ .long 3218830924
+ .long 3225388224
+ .long 1066807264
+ .long 2597486284
+ .long 3215242091
+ .long 1527970838
+ .long 1072929036
+ .long 2966426512
+ .long 3218954923
+ .long 1554080475
+ .long 1067589039
+ .long 1299968651
+ .long 3215418462
+ .long 3575385503
+ .long 1072951087
+ .long 2115725422
+ .long 3219072567
+ .long 1970202642
+ .long 1068007486
+ .long 633750547
+ .long 3215597833
+ .long 4170701031
+ .long 1072972617
+ .long 46586082
+ .long 3219155579
+ .long 1194653136
+ .long 1068384025
+ .long 4171340731
+ .long 3215777352
+ .long 3578160514
+ .long 1072993337
+ .long 3238411740
+ .long 3219206599
+ .long 3278559237
+ .long 1068609006
+ .long 2404931200
+ .long 3215954013
+ .long 533888921
+ .long 1073012973
+ .long 1507597629
+ .long 3219253160
+ .long 2386969249
+ .long 1068756225
+ .long 272720058
+ .long 3216053653
+ .long 54544651
+ .long 1073031269
+ .long 3020671348
+ .long 3219294996
+ .long 4122670807
+ .long 1068883785
+ .long 2536786852
+ .long 3216134458
+ .long 230026772
+ .long 1073047994
+ .long 2830531360
+ .long 3219331923
+ .long 2545616196
+ .long 1068992498
+ .long 3897096954
+ .long 3216209170
+ .long 867435464
+ .long 1073062943
+ .long 3935983781
+ .long 3219363830
+ .long 4280666630
+ .long 1069083305
+ .long 1614478429
+ .long 3216276286
+ .long 3991143559
+ .long 1073075939
+ .long 3165050417
+ .long 3219390677
+ .long 248866814
+ .long 1069157251
+ .long 2328429718
+ .long 3216358398
+ .long 1880129173
+ .long 1073091258
+ .long 4059723411
+ .long 3219421162
+ .long 3082848917
+ .long 1069238148
+ .long 1081358649
+ .long 3216430553
+ .long 1955557582
+ .long 1073104040
+ .long 2869422647
+ .long 3219445318
+ .long 1310544530
+ .long 1069299023
+ .long 434435025
+ .long 3216450109
+ .long 3947018234
+ .long 1073107343
+ .long 3414641036
+ .long 3219451270
+ .long 4069313179
+ .long 1069313321
+ .long 1392468754
+ .long 3216410502
+ .long 3271741504
+ .long 1073101128
+ .long 3884994071
+ .long 3219440866
+ .long 1456085694
+ .long 1069290099
+ .long 2332856790
+ .long 3216307665
+ .long 3950891192
+ .long 1073085735
+ .long 439037894
+ .long 3219416288
+ .long 1197951536
+ .long 1069237765
+ .long 4195788421
+ .long 3216139842
+ .long 3990997338
+ .long 1073061787
+ .long 550042602
+ .long 3219379833
+ .long 2832452545
+ .long 1069163766
+ .long 1200943255
+ .long 3215832361
+ .long 2073883731
+ .long 1073030122
+ .long 3042850267
+ .long 3219333800
+ .long 991641143
+ .long 1069074535
+ .long 1637244010
+ .long 3215243222
+ .long 3805163810
+ .long 1072991715
+ .long 3517445189
+ .long 3219280382
+ .long 2680864185
+ .long 1068975465
+ .long 1457843741
+ .long 3214140932
+ .long 1315080793
+ .long 1072947617
+ .long 3059804278
+ .long 3219221594
+ .long 2861308047
+ .long 1068870963
+ .long 3296491873
+ .long 1064537111
+ .long 3728462150
+ .long 1072898893
+ .long 3615137083
+ .long 3219159232
+ .long 3017963192
+ .long 1068764532
+ .long 3972434375
+ .long 1067468619
+ .long 1336398218
+ .long 1072846587
+ .long 1068664290
+ .long 3219061390
+ .long 122240345
+ .long 1068658880
+ .long 508009436
+ .long 1068456917
+ .long 3501538245
+ .long 1072791681
+ .long 968690691
+ .long 3218931236
+ .long 1514516445
+ .long 1068556030
+ .long 671541798
+ .long 1069006173
+ .long 3814409280
+ .long 1072735081
+ .long 1553551847
+ .long 3218801852
+ .long 2849431279
+ .long 1068415930
+ .long 285838780
+ .long 1069554660
+ .long 2881499585
+ .long 1072661949
+ .long 928028610
+ .long 3218674977
+ .long 8837506
+ .long 1068229231
+ .long 4283922105
+ .long 1069842903
+ .long 1813934616
+ .long 1072546640
+ .long 2296020303
+ .long 3218551962
+ .long 3757630126
+ .long 1068054242
+ .long 4184842874
+ .long 1070138481
+ .long 1612285858
+ .long 1072432209
+ .long 3568867548
+ .long 3218433820
+ .long 2489334631
+ .long 1067891605
+ .long 3119354956
+ .long 1070586029
+ .long 1945534618
+ .long 1072265408
+ .long 12375465
+ .long 3218268030
+ .long 869568690
+ .long 1067671872
+ .long 313517472
+ .long 1070892138
+ .long 1205077106
+ .long 1072052753
+ .long 2329101392
+ .long 3218055718
+ .long 31064032
+ .long 1067390210
+ .long 1106783211
+ .long 1071186310
+ .long 571472860
+ .long 1071856508
+ .long 2279775366
+ .long 3217706561
+ .long 3977902324
+ .long 1066976012
+ .long 1438560376
+ .long 1071467394
+ .long 433300635
+ .long 1071678859
+ .long 2662131044
+ .long 3217407122
+ .long 3461865003
+ .long 1066639491
+ .long 3761842524
+ .long 1071687909
+ .long 591758334
+ .long 1071396321
+ .long 1311878841
+ .long 3217153539
+ .long 3007781852
+ .long 1066335723
+ .long 1614590629
+ .long 1071809819
+ .long 1253814918
+ .long 1071117476
+ .long 1728609767
+ .long 3216850667
+ .long 2200561853
+ .long 1065903347
+ .long 3821226689
+ .long 1071921115
+ .long 2022982069
+ .long 1070874479
+ .long 2030156196
+ .long 3216496942
+ .long 874711265
+ .long 1065560045
+ .long 2003227996
+ .long 1072021655
+ .long 2808404217
+ .long 1070664514
+ .long 1372837647
+ .long 3216204595
+ .long 822053276
+ .long 1065224094
+ .long 3767175364
+ .long 1072111660
+ .long 3043371777
+ .long 1070372670
+ .long 1442419211
+ .long 3215945892
+ .long 298752438
+ .long 1064796452
+ .long 1111528881
+ .long 1072191609
+ .long 3513208196
+ .long 1070065467
+ .long 3837735739
+ .long 3215552388
+ .long 3701924119
+ .long 1064460397
+ .long 1230501085
+ .long 1072262142
+ .long 2161267832
+ .long 1069804871
+ .long 4188367704
+ .long 3215231429
+ .long 401190186
+ .long 1064089052
+ .long 3002339892
+ .long 1072323996
+ .long 1480019407
+ .long 1069584807
+ .long 1833655520
+ .long 3214970435
+ .long 2907956919
+ .long 1063676311
+ .long 875346000
+ .long 1072377952
+ .long 3150437403
+ .long 1069251888
+ .long 876861923
+ .long 3214583482
+ .long 1689748747
+ .long 1063353511
+ .long 2795554744
+ .long 1072424793
+ .long 3869705215
+ .long 1068941581
+ .long 1837883894
+ .long 3214240854
+ .long 2762317048
+ .long 1062946513
+ .long 2491972100
+ .long 1072465284
+ .long 4114823501
+ .long 1068682289
+ .long 2146865463
+ .long 3213964103
+ .long 800804261
+ .long 1062552648
+ .long 2634953449
+ .long 1072500149
+ .long 2952556276
+ .long 1068433515
+ .long 1872935290
+ .long 3213596436
+ .long 525130857
+ .long 1062245296
+ .long 3287041404
+ .long 1072542855
+ .long 164674845
+ .long 1067923724
+ .long 3273134342
+ .long 3213089271
+ .long 171708004
+ .long 1061610314
+ .long 3035032320
+ .long 1072586748
+ .long 3976243935
+ .long 1067403539
+ .long 3504708444
+ .long 3212404491
+ .long 3955947885
+ .long 1060882840
+ .long 513098494
+ .long 1072618404
+ .long 416924237
+ .long 1066726877
+ .long 1788945081
+ .long 3211801737
+ .long 1199639353
+ .long 1060166859
+ .long 2284134637
+ .long 1072641010
+ .long 754275327
+ .long 1066136447
+ .long 94803481
+ .long 3211042671
+ .long 3377507017
+ .long 1059354147
+ .long 1467291457
+ .long 1072657015
+ .long 2435597312
+ .long 1065520743
+ .long 2819017772
+ .long 3210358609
+ .long 1988617747
+ .long 1058591581
+ .long 633705514
+ .long 1072668259
+ .long 392269686
+ .long 1064864433
+ .long 2964449929
+ .long 3209729770
+ .long 3963893163
+ .long 1057889872
+ .long 2214892393
+ .long 1072676103
+ .long 2190738271
+ .long 1064315837
+ .long 3773826451
+ .long 3208969045
+ .long 3609404170
+ .long 1057113308
+ .long 3795216963
+ .long 1072681541
+ .long 3959981107
+ .long 1063599490
+ .long 1577139384
+ .long 3208281591
+ .long 1777963469
+ .long 1056319886
+ .long 2768813161
+ .long 1072685290
+ .long 452197850
+ .long 1062981751
+ .long 625862001
+ .long 3207639777
+ .long 1894515286
+ .long 1055580811
+ .long 809336726
+ .long 1072687861
+ .long 325412222
+ .long 1062349073
+ .long 3494772326
+ .long 3206874482
+ .long 3143092609
+ .long 1054887561
+ .long 1391578948
+ .long 1072689615
+ .long 370441451
+ .long 1061660435
+ .long 67458841
+ .long 3206180214
+ .long 1971759196
+ .long 1054066692
+ .long 57274217
+ .long 1072690807
+ .long 293665776
+ .long 1061075750
+ .long 1340185983
+ .long 3205535605
+ .long 2210177191
+ .long 1053294335
+ .long 1110907588
+ .long 1072691613
+ .long 3961986905
+ .long 1060367146
+ .long 3774614905
+ .long 3204763416
+ .long 3590429673
+ .long 1052580827
+ .long 2737507729
+ .long 1072692156
+ .long 370479370
+ .long 1059701790
+ .long 1033751386
+ .long 3204059641
+ .long 1162278823
+ .long 1051830218
+ .long 2341375458
+ .long 1072692521
+ .long 760364123
+ .long 1059103172
+ .long 910883556
+ .long 3203420282
+ .long 401067508
+ .long 1051028170
+ .long 3358303651
+ .long 1072692765
+ .long 3104773993
+ .long 1058369139
+ .long 2043715743
+ .long 3202639413
+ .long 4274377921
+ .long 1050278646
+ .long 3501940353
+ .long 1072692984
+ .long 2710387139
+ .long 1057384557
+ .long 2550611600
+ .long 3201592258
+ .long 2260324605
+ .long 1049158690
+ .long 3160989127
+ .long 1072693133
+ .long 1403521776
+ .long 1056074537
+ .long 760745859
+ .long 3200238663
+ .long 1163121055
+ .long 1047679067
+ .long 3509020169
+ .long 1072693198
+ .long 3352058101
+ .long 1054743188
+ .long 2289323607
+ .long 3198722761
+ .long 918272756
+ .long 1046147840
+ .long 4268817660
+ .long 1072693226
+ .long 1580550645
+ .long 1053325591
+ .long 1736251411
+ .long 3197308470
+ .long 1531106447
+ .long 1044632576
+ .long 0
+ .long 1072693248
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .long 2147483648
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .long 2147483647
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .long 2146959360
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .long 2130706432
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .long 1022885888
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .long 69730304
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 0
+ .type __svml_stanh_data_internal,@object
+ .size __svml_stanh_data_internal,6016
+ .align 4
+
+__stanh_la__imlsTanhTab:
+ .long 1065353216
+ .long 3212836864
+ .type __stanh_la__imlsTanhTab,@object
+ .size __stanh_la__imlsTanhTab,8
new file mode 100644
@@ -0,0 +1,29 @@
+/* Function tanh vectorized with SSE2.
+ Copyright (C) 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 <sysdep.h>
+#include "svml_d_wrapper_impl.h"
+
+ .text
+ENTRY (_ZGVbN2v_tanh)
+WRAPPER_IMPL_SSE2 tanh
+END (_ZGVbN2v_tanh)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVbN2v_tanh)
+#endif
new file mode 100644
@@ -0,0 +1,29 @@
+/* Function tanh vectorized with AVX2, wrapper version.
+ Copyright (C) 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 <sysdep.h>
+#include "svml_d_wrapper_impl.h"
+
+ .text
+ENTRY (_ZGVdN4v_tanh)
+WRAPPER_IMPL_AVX _ZGVbN2v_tanh
+END (_ZGVdN4v_tanh)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVdN4v_tanh)
+#endif
new file mode 100644
@@ -0,0 +1,25 @@
+/* Function tanh vectorized in AVX ISA as wrapper to SSE4 ISA version.
+ Copyright (C) 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 <sysdep.h>
+#include "svml_d_wrapper_impl.h"
+
+ .text
+ENTRY (_ZGVcN4v_tanh)
+WRAPPER_IMPL_AVX _ZGVbN2v_tanh
+END (_ZGVcN4v_tanh)
new file mode 100644
@@ -0,0 +1,25 @@
+/* Function tanh vectorized with AVX-512, wrapper to AVX2.
+ Copyright (C) 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 <sysdep.h>
+#include "svml_d_wrapper_impl.h"
+
+ .text
+ENTRY (_ZGVeN8v_tanh)
+WRAPPER_IMPL_AVX512 _ZGVdN4v_tanh
+END (_ZGVeN8v_tanh)
new file mode 100644
@@ -0,0 +1,25 @@
+/* Function tanhf vectorized with AVX-512. Wrapper to AVX2 version.
+ Copyright (C) 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 <sysdep.h>
+#include "svml_s_wrapper_impl.h"
+
+ .text
+ENTRY (_ZGVeN16v_tanhf)
+WRAPPER_IMPL_AVX512 _ZGVdN8v_tanhf
+END (_ZGVeN16v_tanhf)
new file mode 100644
@@ -0,0 +1,29 @@
+/* Function tanhf vectorized with SSE2, wrapper version.
+ Copyright (C) 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 <sysdep.h>
+#include "svml_s_wrapper_impl.h"
+
+ .text
+ENTRY (_ZGVbN4v_tanhf)
+WRAPPER_IMPL_SSE2 tanhf
+END (_ZGVbN4v_tanhf)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVbN4v_tanhf)
+#endif
new file mode 100644
@@ -0,0 +1,29 @@
+/* Function tanhf vectorized with AVX2, wrapper version.
+ Copyright (C) 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 <sysdep.h>
+#include "svml_s_wrapper_impl.h"
+
+ .text
+ENTRY (_ZGVdN8v_tanhf)
+WRAPPER_IMPL_AVX _ZGVbN4v_tanhf
+END (_ZGVdN8v_tanhf)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVdN8v_tanhf)
+#endif
new file mode 100644
@@ -0,0 +1,25 @@
+/* Function tanhf vectorized in AVX ISA as wrapper to SSE4 ISA version.
+ Copyright (C) 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 <sysdep.h>
+#include "svml_s_wrapper_impl.h"
+
+ .text
+ENTRY (_ZGVcN8v_tanhf)
+WRAPPER_IMPL_AVX _ZGVbN4v_tanhf
+END (_ZGVcN8v_tanhf)
new file mode 100644
@@ -0,0 +1 @@
+#include "test-double-libmvec-tanh.c"
new file mode 100644
@@ -0,0 +1 @@
+#include "test-double-libmvec-tanh.c"
new file mode 100644
@@ -0,0 +1 @@
+#include "test-double-libmvec-tanh.c"
new file mode 100644
@@ -0,0 +1,3 @@
+#define LIBMVEC_TYPE double
+#define LIBMVEC_FUNC tanh
+#include "test-vector-abi-arg1.h"
@@ -47,6 +47,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (log1p), _ZGVbN2v_log1p)
VECTOR_WRAPPER (WRAPPER_NAME (log2), _ZGVbN2v_log2)
VECTOR_WRAPPER (WRAPPER_NAME (sinh), _ZGVbN2v_sinh)
VECTOR_WRAPPER (WRAPPER_NAME (tan), _ZGVbN2v_tan)
+VECTOR_WRAPPER (WRAPPER_NAME (tanh), _ZGVbN2v_tanh)
#define VEC_INT_TYPE __m128i
@@ -50,6 +50,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (log1p), _ZGVdN4v_log1p)
VECTOR_WRAPPER (WRAPPER_NAME (log2), _ZGVdN4v_log2)
VECTOR_WRAPPER (WRAPPER_NAME (sinh), _ZGVdN4v_sinh)
VECTOR_WRAPPER (WRAPPER_NAME (tan), _ZGVdN4v_tan)
+VECTOR_WRAPPER (WRAPPER_NAME (tanh), _ZGVdN4v_tanh)
#ifndef __ILP32__
# define VEC_INT_TYPE __m256i
@@ -47,6 +47,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (log1p), _ZGVcN4v_log1p)
VECTOR_WRAPPER (WRAPPER_NAME (log2), _ZGVcN4v_log2)
VECTOR_WRAPPER (WRAPPER_NAME (sinh), _ZGVcN4v_sinh)
VECTOR_WRAPPER (WRAPPER_NAME (tan), _ZGVcN4v_tan)
+VECTOR_WRAPPER (WRAPPER_NAME (tanh), _ZGVcN4v_tanh)
#define VEC_INT_TYPE __m128i
@@ -47,6 +47,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (log1p), _ZGVeN8v_log1p)
VECTOR_WRAPPER (WRAPPER_NAME (log2), _ZGVeN8v_log2)
VECTOR_WRAPPER (WRAPPER_NAME (sinh), _ZGVeN8v_sinh)
VECTOR_WRAPPER (WRAPPER_NAME (tan), _ZGVeN8v_tan)
+VECTOR_WRAPPER (WRAPPER_NAME (tanh), _ZGVeN8v_tanh)
#ifndef __ILP32__
# define VEC_INT_TYPE __m512i
new file mode 100644
@@ -0,0 +1 @@
+#include "test-float-libmvec-tanhf.c"
new file mode 100644
@@ -0,0 +1 @@
+#include "test-float-libmvec-tanhf.c"
new file mode 100644
@@ -0,0 +1 @@
+#include "test-float-libmvec-tanhf.c"
new file mode 100644
@@ -0,0 +1,3 @@
+#define LIBMVEC_TYPE float
+#define LIBMVEC_FUNC tanhf
+#include "test-vector-abi-arg1.h"
@@ -47,6 +47,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (log1pf), _ZGVeN16v_log1pf)
VECTOR_WRAPPER (WRAPPER_NAME (log2f), _ZGVeN16v_log2f)
VECTOR_WRAPPER (WRAPPER_NAME (sinhf), _ZGVeN16v_sinhf)
VECTOR_WRAPPER (WRAPPER_NAME (tanf), _ZGVeN16v_tanf)
+VECTOR_WRAPPER (WRAPPER_NAME (tanhf), _ZGVeN16v_tanhf)
#define VEC_INT_TYPE __m512i
@@ -47,6 +47,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (log1pf), _ZGVbN4v_log1pf)
VECTOR_WRAPPER (WRAPPER_NAME (log2f), _ZGVbN4v_log2f)
VECTOR_WRAPPER (WRAPPER_NAME (sinhf), _ZGVbN4v_sinhf)
VECTOR_WRAPPER (WRAPPER_NAME (tanf), _ZGVbN4v_tanf)
+VECTOR_WRAPPER (WRAPPER_NAME (tanhf), _ZGVbN4v_tanhf)
#define VEC_INT_TYPE __m128i
@@ -50,6 +50,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (log1pf), _ZGVdN8v_log1pf)
VECTOR_WRAPPER (WRAPPER_NAME (log2f), _ZGVdN8v_log2f)
VECTOR_WRAPPER (WRAPPER_NAME (sinhf), _ZGVdN8v_sinhf)
VECTOR_WRAPPER (WRAPPER_NAME (tanf), _ZGVdN8v_tanf)
+VECTOR_WRAPPER (WRAPPER_NAME (tanhf), _ZGVdN8v_tanhf)
/* Redefinition of wrapper to be compatible with _ZGVdN8vvv_sincosf. */
#undef VECTOR_WRAPPER_fFF
@@ -47,6 +47,7 @@ VECTOR_WRAPPER (WRAPPER_NAME (log1pf), _ZGVcN8v_log1pf)
VECTOR_WRAPPER (WRAPPER_NAME (log2f), _ZGVcN8v_log2f)
VECTOR_WRAPPER (WRAPPER_NAME (sinhf), _ZGVcN8v_sinhf)
VECTOR_WRAPPER (WRAPPER_NAME (tanf), _ZGVcN8v_tanf)
+VECTOR_WRAPPER (WRAPPER_NAME (tanhf), _ZGVcN8v_tanhf)
#define VEC_INT_TYPE __m128i