summaryrefslogtreecommitdiff
path: root/sysdeps/i386
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386')
-rw-r--r--sysdeps/i386/Makefile10
-rw-r--r--sysdeps/i386/__longjmp.S2
-rw-r--r--sysdeps/i386/add_n.S2
-rw-r--r--sysdeps/i386/addmul_1.S2
-rw-r--r--sysdeps/i386/asm-syntax.h2
-rw-r--r--sysdeps/i386/backtrace.c2
-rw-r--r--sysdeps/i386/bsd-_setjmp.S2
-rw-r--r--sysdeps/i386/bsd-setjmp.S2
-rw-r--r--sysdeps/i386/bzero.c2
-rw-r--r--sysdeps/i386/configure56
-rw-r--r--sysdeps/i386/configure.ac26
-rw-r--r--sysdeps/i386/crti.S2
-rw-r--r--sysdeps/i386/crtn.S2
-rw-r--r--sysdeps/i386/dl-irel.h4
-rw-r--r--sysdeps/i386/dl-lookupcfg.h6
-rw-r--r--sysdeps/i386/dl-machine.h70
-rw-r--r--sysdeps/i386/dl-procinfo.c2
-rw-r--r--sysdeps/i386/dl-procinfo.h2
-rw-r--r--sysdeps/i386/dl-tls.h6
-rw-r--r--sysdeps/i386/dl-tlsdesc.S7
-rw-r--r--sysdeps/i386/dl-tlsdesc.h2
-rw-r--r--sysdeps/i386/dl-trampoline.S62
-rw-r--r--sysdeps/i386/ffs.c2
-rw-r--r--sysdeps/i386/fpu/e_acosh.S3
-rw-r--r--sysdeps/i386/fpu/e_acoshf.S3
-rw-r--r--sysdeps/i386/fpu/e_acoshl.S3
-rw-r--r--sysdeps/i386/fpu/e_asin.S34
-rw-r--r--sysdeps/i386/fpu/e_asinf.S34
-rw-r--r--sysdeps/i386/fpu/e_atan2.S35
-rw-r--r--sysdeps/i386/fpu/e_atan2f.S35
-rw-r--r--sysdeps/i386/fpu/e_atanh.S22
-rw-r--r--sysdeps/i386/fpu/e_atanhf.S22
-rw-r--r--sysdeps/i386/fpu/e_atanhl.S12
-rw-r--r--sysdeps/i386/fpu/e_exp2l.S10
-rw-r--r--sysdeps/i386/fpu/e_expl.S42
-rw-r--r--sysdeps/i386/fpu/e_hypot.S2
-rw-r--r--sysdeps/i386/fpu/e_hypotf.S2
-rw-r--r--sysdeps/i386/fpu/e_log.S8
-rw-r--r--sysdeps/i386/fpu/e_log10.S8
-rw-r--r--sysdeps/i386/fpu/e_log10f.S8
-rw-r--r--sysdeps/i386/fpu/e_log10l.S8
-rw-r--r--sysdeps/i386/fpu/e_log2.S8
-rw-r--r--sysdeps/i386/fpu/e_log2f.S8
-rw-r--r--sysdeps/i386/fpu/e_log2l.S8
-rw-r--r--sysdeps/i386/fpu/e_logf.S8
-rw-r--r--sysdeps/i386/fpu/e_logl.S13
-rw-r--r--sysdeps/i386/fpu/e_pow.S52
-rw-r--r--sysdeps/i386/fpu/e_powf.S14
-rw-r--r--sysdeps/i386/fpu/e_powl.S80
-rw-r--r--sysdeps/i386/fpu/e_scalb.S4
-rw-r--r--sysdeps/i386/fpu/e_scalbf.S4
-rw-r--r--sysdeps/i386/fpu/e_scalbl.S4
-rw-r--r--sysdeps/i386/fpu/fclrexcpt.c2
-rw-r--r--sysdeps/i386/fpu/fedisblxcpt.c2
-rw-r--r--sysdeps/i386/fpu/feenablxcpt.c2
-rw-r--r--sysdeps/i386/fpu/fegetenv.c9
-rw-r--r--sysdeps/i386/fpu/fegetexcept.c2
-rw-r--r--sysdeps/i386/fpu/fegetround.c8
-rw-r--r--sysdeps/i386/fpu/feholdexcpt.c12
-rw-r--r--sysdeps/i386/fpu/fenv_private.h1
-rw-r--r--sysdeps/i386/fpu/fesetenv.c53
-rw-r--r--sysdeps/i386/fpu/fesetround.c8
-rw-r--r--sysdeps/i386/fpu/feupdateenv.c5
-rw-r--r--sysdeps/i386/fpu/fgetexcptflg.c2
-rw-r--r--sysdeps/i386/fpu/fraiseexcpt.c3
-rw-r--r--sysdeps/i386/fpu/fsetexcptflg.c2
-rw-r--r--sysdeps/i386/fpu/ftestexcept.c2
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps12309
-rw-r--r--sysdeps/i386/fpu/math-tests.h2
-rw-r--r--sysdeps/i386/fpu/s_asinh.S13
-rw-r--r--sysdeps/i386/fpu/s_asinhf.S13
-rw-r--r--sysdeps/i386/fpu/s_asinhl.S9
-rw-r--r--sysdeps/i386/fpu/s_atan.S33
-rw-r--r--sysdeps/i386/fpu/s_atanf.S33
-rw-r--r--sysdeps/i386/fpu/s_cbrt.S2
-rw-r--r--sysdeps/i386/fpu/s_cbrtf.S2
-rw-r--r--sysdeps/i386/fpu/s_cbrtl.S2
-rw-r--r--sysdeps/i386/fpu/s_ceil.S2
-rw-r--r--sysdeps/i386/fpu/s_ceilf.S2
-rw-r--r--sysdeps/i386/fpu/s_ceill.S2
-rw-r--r--sysdeps/i386/fpu/s_expm1.S24
-rw-r--r--sysdeps/i386/fpu/s_expm1f.S24
-rw-r--r--sysdeps/i386/fpu/s_fdim.S2
-rw-r--r--sysdeps/i386/fpu/s_fdimf.S2
-rw-r--r--sysdeps/i386/fpu/s_fdiml.S2
-rw-r--r--sysdeps/i386/fpu/s_floor.S2
-rw-r--r--sysdeps/i386/fpu/s_floorf.S2
-rw-r--r--sysdeps/i386/fpu/s_floorl.S2
-rw-r--r--sysdeps/i386/fpu/s_fmax.S2
-rw-r--r--sysdeps/i386/fpu/s_fmaxf.S2
-rw-r--r--sysdeps/i386/fpu/s_fmaxl.S2
-rw-r--r--sysdeps/i386/fpu/s_fmin.S2
-rw-r--r--sysdeps/i386/fpu/s_fminf.S2
-rw-r--r--sysdeps/i386/fpu/s_fminl.S2
-rw-r--r--sysdeps/i386/fpu/s_fpclassifyl.c2
-rw-r--r--sysdeps/i386/fpu/s_frexp.S2
-rw-r--r--sysdeps/i386/fpu/s_frexpf.S2
-rw-r--r--sysdeps/i386/fpu/s_frexpl.S2
-rw-r--r--sysdeps/i386/fpu/s_llrint.S2
-rw-r--r--sysdeps/i386/fpu/s_llrintf.S2
-rw-r--r--sysdeps/i386/fpu/s_llrintl.S2
-rw-r--r--sysdeps/i386/fpu/s_log1p.S28
-rw-r--r--sysdeps/i386/fpu/s_log1pf.S28
-rw-r--r--sysdeps/i386/fpu/s_log1pl.S8
-rw-r--r--sysdeps/i386/fpu/s_lrint.S2
-rw-r--r--sysdeps/i386/fpu/s_lrintf.S2
-rw-r--r--sysdeps/i386/fpu/s_lrintl.S2
-rw-r--r--sysdeps/i386/fpu/s_nextafterl.c5
-rw-r--r--sysdeps/i386/fpu/s_scalbn.S6
-rw-r--r--sysdeps/i386/fpu/s_scalbnf.S6
-rw-r--r--sysdeps/i386/fpu/s_scalbnl.S6
-rw-r--r--sysdeps/i386/fpu/s_trunc.S4
-rw-r--r--sysdeps/i386/fpu/s_truncf.S4
-rw-r--r--sysdeps/i386/fpu/s_truncl.S4
-rw-r--r--sysdeps/i386/gccframe.h2
-rw-r--r--sysdeps/i386/gmp-mparam.h2
-rw-r--r--sysdeps/i386/htonl.S2
-rw-r--r--sysdeps/i386/htons.S2
-rw-r--r--sysdeps/i386/i386-mcount.S2
-rw-r--r--sysdeps/i386/i486/bits/atomic.h14
-rw-r--r--sysdeps/i386/i486/htonl.S2
-rw-r--r--sysdeps/i386/i486/pthread_spin_trylock.S46
-rw-r--r--sysdeps/i386/i486/strcat.S2
-rw-r--r--sysdeps/i386/i486/string-inlines.c2
-rw-r--r--sysdeps/i386/i486/strlen.S2
-rw-r--r--sysdeps/i386/i586/add_n.S2
-rw-r--r--sysdeps/i386/i586/addmul_1.S2
-rw-r--r--sysdeps/i386/i586/lshift.S2
-rw-r--r--sysdeps/i386/i586/memcopy.h2
-rw-r--r--sysdeps/i386/i586/memcpy.S4
-rw-r--r--sysdeps/i386/i586/memset.S4
-rw-r--r--sysdeps/i386/i586/mul_1.S2
-rw-r--r--sysdeps/i386/i586/pthread_spin_trylock.S1
-rw-r--r--sysdeps/i386/i586/rshift.S2
-rw-r--r--sysdeps/i386/i586/strchr.S2
-rw-r--r--sysdeps/i386/i586/strcpy.S2
-rw-r--r--sysdeps/i386/i586/strlen.S2
-rw-r--r--sysdeps/i386/i586/sub_n.S2
-rw-r--r--sysdeps/i386/i586/submul_1.S2
-rw-r--r--sysdeps/i386/i686/Makefile5
-rw-r--r--sysdeps/i386/i686/add_n.S2
-rw-r--r--sysdeps/i386/i686/dl-hash.h2
-rw-r--r--sysdeps/i386/i686/ffs.c2
-rw-r--r--sysdeps/i386/i686/fpu/e_logl.S13
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/e_expf-ia32.S2
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S2
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/e_expf.c2
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S2
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/s_cosf.c2
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.S2
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/s_sincosf.c2
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S2
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/s_sinf.c2
-rw-r--r--sysdeps/i386/i686/fpu/s_fdim.S2
-rw-r--r--sysdeps/i386/i686/fpu/s_fdimf.S2
-rw-r--r--sysdeps/i386/i686/fpu/s_fdiml.S2
-rw-r--r--sysdeps/i386/i686/fpu/s_fmax.S2
-rw-r--r--sysdeps/i386/i686/fpu/s_fmaxf.S2
-rw-r--r--sysdeps/i386/i686/fpu/s_fmaxl.S2
-rw-r--r--sysdeps/i386/i686/fpu/s_fmin.S2
-rw-r--r--sysdeps/i386/i686/fpu/s_fminf.S2
-rw-r--r--sysdeps/i386/i686/fpu/s_fminl.S2
-rw-r--r--sysdeps/i386/i686/hp-timing.h120
-rw-r--r--sysdeps/i386/i686/memcmp.S2
-rw-r--r--sysdeps/i386/i686/memcpy.S4
-rw-r--r--sysdeps/i386/i686/memcpy_chk.S2
-rw-r--r--sysdeps/i386/i686/memmove.S4
-rw-r--r--sysdeps/i386/i686/memmove_chk.S2
-rw-r--r--sysdeps/i386/i686/mempcpy.S4
-rw-r--r--sysdeps/i386/i686/mempcpy_chk.S2
-rw-r--r--sysdeps/i386/i686/memset.S6
-rw-r--r--sysdeps/i386/i686/memset_chk.S2
-rw-r--r--sysdeps/i386/i686/memusage.h2
-rw-r--r--sysdeps/i386/i686/multiarch/Makefile4
-rw-r--r--sysdeps/i386/i686/multiarch/bcopy-sse2-unaligned.S4
-rw-r--r--sysdeps/i386/i686/multiarch/bcopy.S9
-rw-r--r--sysdeps/i386/i686/multiarch/bzero.S4
-rw-r--r--sysdeps/i386/i686/multiarch/ifunc-impl-list.c18
-rw-r--r--sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memchr-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memchr.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memcmp-sse4.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memcmp-ssse3.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memcmp.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S681
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy-ssse3.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy.S9
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy_chk.S9
-rw-r--r--sysdeps/i386/i686/multiarch/memmove-sse2-unaligned.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memmove.S14
-rw-r--r--sysdeps/i386/i686/multiarch/memmove_chk.S26
-rw-r--r--sysdeps/i386/i686/multiarch/mempcpy-sse2-unaligned.S4
-rw-r--r--sysdeps/i386/i686/multiarch/mempcpy.S9
-rw-r--r--sysdeps/i386/i686/multiarch/mempcpy_chk.S9
-rw-r--r--sysdeps/i386/i686/multiarch/memrchr-c.c2
-rw-r--r--sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memrchr-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memrchr.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memset-sse2-rep.S6
-rw-r--r--sysdeps/i386/i686/multiarch/memset-sse2.S6
-rw-r--r--sysdeps/i386/i686/multiarch/memset.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memset_chk.S4
-rw-r--r--sysdeps/i386/i686/multiarch/rawmemchr.S4
-rw-r--r--sysdeps/i386/i686/multiarch/s_fma-fma.c2
-rw-r--r--sysdeps/i386/i686/multiarch/s_fma.c2
-rw-r--r--sysdeps/i386/i686/multiarch/s_fmaf-fma.c2
-rw-r--r--sysdeps/i386/i686/multiarch/s_fmaf.c2
-rw-r--r--sysdeps/i386/i686/multiarch/strcasecmp.S6
-rw-r--r--sysdeps/i386/i686/multiarch/strcat-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strcat-ssse3.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strcat.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strchr-sse2-bsf.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strchr-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strchr.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strcmp-sse4.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strcmp-ssse3.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strcmp.S8
-rw-r--r--sysdeps/i386/i686/multiarch/strcpy-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strcpy-ssse3.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strcpy.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strcspn.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strlen-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strlen.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strncase.S6
-rw-r--r--sysdeps/i386/i686/multiarch/strnlen-c.c4
-rw-r--r--sysdeps/i386/i686/multiarch/strnlen.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strrchr-sse2-bsf.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strrchr-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strrchr.S4
-rw-r--r--sysdeps/i386/i686/multiarch/strspn.S4
-rw-r--r--sysdeps/i386/i686/multiarch/wcschr-c.c16
-rw-r--r--sysdeps/i386/i686/multiarch/wcschr-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/wcschr.S9
-rw-r--r--sysdeps/i386/i686/multiarch/wcscmp-c.c4
-rw-r--r--sysdeps/i386/i686/multiarch/wcscmp-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/wcscmp.S11
-rw-r--r--sysdeps/i386/i686/multiarch/wcscpy-c.c2
-rw-r--r--sysdeps/i386/i686/multiarch/wcscpy-ssse3.S4
-rw-r--r--sysdeps/i386/i686/multiarch/wcscpy.S4
-rw-r--r--sysdeps/i386/i686/multiarch/wcslen-c.c2
-rw-r--r--sysdeps/i386/i686/multiarch/wcslen-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/wcslen.S4
-rw-r--r--sysdeps/i386/i686/multiarch/wcsrchr-c.c2
-rw-r--r--sysdeps/i386/i686/multiarch/wcsrchr-sse2.S4
-rw-r--r--sysdeps/i386/i686/multiarch/wcsrchr.S4
-rw-r--r--sysdeps/i386/i686/multiarch/wmemcmp-c.c2
-rw-r--r--sysdeps/i386/i686/multiarch/wmemcmp.S4
-rw-r--r--sysdeps/i386/i686/nptl/tls.h35
-rw-r--r--sysdeps/i386/i686/pthread_spin_trylock.S (renamed from sysdeps/i386/i686/hp-timing.c)11
-rw-r--r--sysdeps/i386/i686/stack-aliasing.h28
-rw-r--r--sysdeps/i386/i686/strcmp.S2
-rw-r--r--sysdeps/i386/i686/strtok.S2
-rw-r--r--sysdeps/i386/i686/tst-stack-align.h2
-rw-r--r--sysdeps/i386/jmpbuf-offsets.h2
-rw-r--r--sysdeps/i386/jmpbuf-unwind.h2
-rw-r--r--sysdeps/i386/ldbl2mpn.c4
-rw-r--r--sysdeps/i386/ldsodefs.h2
-rw-r--r--sysdeps/i386/link-defines.sym20
-rw-r--r--sysdeps/i386/lshift.S2
-rw-r--r--sysdeps/i386/machine-gmon.h2
-rw-r--r--sysdeps/i386/memchr.S2
-rw-r--r--sysdeps/i386/memcmp.S2
-rw-r--r--sysdeps/i386/memcopy.h2
-rw-r--r--sysdeps/i386/memset.c2
-rw-r--r--sysdeps/i386/memusage.h2
-rw-r--r--sysdeps/i386/mul_1.S2
-rw-r--r--sysdeps/i386/nptl/Makefile26
-rw-r--r--sysdeps/i386/nptl/pthread_spin_init.c19
-rw-r--r--sysdeps/i386/nptl/pthread_spin_lock.S37
-rw-r--r--sysdeps/i386/nptl/pthread_spin_unlock.S31
-rw-r--r--sysdeps/i386/nptl/pthreaddef.h40
-rw-r--r--sysdeps/i386/nptl/tcb-offsets.sym18
-rw-r--r--sysdeps/i386/nptl/tls.h463
-rw-r--r--sysdeps/i386/preconfigure5
-rw-r--r--sysdeps/i386/rawmemchr.S2
-rw-r--r--sysdeps/i386/rshift.S2
-rw-r--r--sysdeps/i386/setfpucw.c2
-rw-r--r--sysdeps/i386/setjmp.S4
-rw-r--r--sysdeps/i386/stackinfo.h2
-rw-r--r--sysdeps/i386/start.S2
-rw-r--r--sysdeps/i386/stpcpy.S2
-rw-r--r--sysdeps/i386/stpncpy.S2
-rw-r--r--sysdeps/i386/strchr.S2
-rw-r--r--sysdeps/i386/strchrnul.S2
-rw-r--r--sysdeps/i386/strcspn.S2
-rw-r--r--sysdeps/i386/string-inlines.c2
-rw-r--r--sysdeps/i386/strlen.c2
-rw-r--r--sysdeps/i386/strpbrk.S2
-rw-r--r--sysdeps/i386/strrchr.S2
-rw-r--r--sysdeps/i386/strspn.S2
-rw-r--r--sysdeps/i386/strtok.S2
-rw-r--r--sysdeps/i386/sub_n.S2
-rw-r--r--sysdeps/i386/submul_1.S2
-rw-r--r--sysdeps/i386/sys/ucontext.h2
-rw-r--r--sysdeps/i386/sysdep.h2
-rw-r--r--sysdeps/i386/tls-macros.h8
-rw-r--r--sysdeps/i386/tlsdesc.c8
-rw-r--r--sysdeps/i386/tst-audit.h2
-rw-r--r--sysdeps/i386/tst-audit3.c37
-rw-r--r--sysdeps/i386/tst-audit3.h20
-rw-r--r--sysdeps/i386/tst-auditmod3a.c38
-rw-r--r--sysdeps/i386/tst-auditmod3b.c185
-rw-r--r--sysdeps/i386/tst-stack-align.h2
305 files changed, 3998 insertions, 11997 deletions
diff --git a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile
index e1deecee87..11f425dc92 100644
--- a/sysdeps/i386/Makefile
+++ b/sysdeps/i386/Makefile
@@ -33,6 +33,7 @@ sysdep-CFLAGS += -mpreferred-stack-boundary=4
else
ifeq ($(subdir),csu)
sysdep-CFLAGS += -mpreferred-stack-boundary=4
+gen-as-const-headers += link-defines.sym
else
# Likewise, any function which calls user callbacks
uses-callbacks += -mpreferred-stack-boundary=4
@@ -66,8 +67,13 @@ endif
ifeq ($(subdir),elf)
sysdep-dl-routines += tlsdesc dl-tlsdesc
-sysdep_routines += tlsdesc dl-tlsdesc
-sysdep-rtld-routines += tlsdesc dl-tlsdesc
+
+tests += tst-audit3
+modules-names += tst-auditmod3a tst-auditmod3b
+
+$(objpfx)tst-audit3: $(objpfx)tst-auditmod3a.so
+$(objpfx)tst-audit3.out: $(objpfx)tst-auditmod3b.so
+tst-audit3-ENV = LD_AUDIT=$(objpfx)tst-auditmod3b.so
endif
ifeq ($(subdir),csu)
diff --git a/sysdeps/i386/__longjmp.S b/sysdeps/i386/__longjmp.S
index 38fbedf1f6..affe1e8463 100644
--- a/sysdeps/i386/__longjmp.S
+++ b/sysdeps/i386/__longjmp.S
@@ -1,5 +1,5 @@
/* longjmp for i386.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ Copyright (C) 1995-2015 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
diff --git a/sysdeps/i386/add_n.S b/sysdeps/i386/add_n.S
index 1a354e93bd..b7bdeb7b74 100644
--- a/sysdeps/i386/add_n.S
+++ b/sysdeps/i386/add_n.S
@@ -1,6 +1,6 @@
/* Add two limb vectors of the same length > 0 and store sum in a third
limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/addmul_1.S b/sysdeps/i386/addmul_1.S
index 69c71979be..a25633a19e 100644
--- a/sysdeps/i386/addmul_1.S
+++ b/sysdeps/i386/addmul_1.S
@@ -1,6 +1,6 @@
/* i80386 __mpn_addmul_1 -- Multiply a limb vector with a limb and add
the result to a second limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/asm-syntax.h b/sysdeps/i386/asm-syntax.h
index 1258e208c7..b45fe32111 100644
--- a/sysdeps/i386/asm-syntax.h
+++ b/sysdeps/i386/asm-syntax.h
@@ -1,5 +1,5 @@
/* Definitions for x86 syntax variations.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in the GNU MP Library.
diff --git a/sysdeps/i386/backtrace.c b/sysdeps/i386/backtrace.c
index dc2007e5eb..550234f577 100644
--- a/sysdeps/i386/backtrace.c
+++ b/sysdeps/i386/backtrace.c
@@ -1,5 +1,5 @@
/* Return backtrace of current program state.
- Copyright (C) 1998-2014 Free Software Foundation, Inc.
+ Copyright (C) 1998-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
diff --git a/sysdeps/i386/bsd-_setjmp.S b/sysdeps/i386/bsd-_setjmp.S
index 4daaff3f1e..006e63e16e 100644
--- a/sysdeps/i386/bsd-_setjmp.S
+++ b/sysdeps/i386/bsd-_setjmp.S
@@ -1,5 +1,5 @@
/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. i386 version.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 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
diff --git a/sysdeps/i386/bsd-setjmp.S b/sysdeps/i386/bsd-setjmp.S
index fcdab03363..95cd24eab4 100644
--- a/sysdeps/i386/bsd-setjmp.S
+++ b/sysdeps/i386/bsd-setjmp.S
@@ -1,5 +1,5 @@
/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. i386 version.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 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
diff --git a/sysdeps/i386/bzero.c b/sysdeps/i386/bzero.c
index 0743c41644..1a89444a11 100644
--- a/sysdeps/i386/bzero.c
+++ b/sysdeps/i386/bzero.c
@@ -1,6 +1,6 @@
/* bzero -- set a block of memory to zero. For Intel 80x86, x>=3.
This file is part of the GNU C Library.
- Copyright (C) 1991-2014 Free Software Foundation, Inc.
+ Copyright (C) 1991-2015 Free Software Foundation, Inc.
Contributed by Torbjorn Granlund (tege@sics.se).
The GNU C Library is free software; you can redistribute it and/or
diff --git a/sysdeps/i386/configure b/sysdeps/i386/configure
index 5dcc159900..ab66c08160 100644
--- a/sysdeps/i386/configure
+++ b/sysdeps/i386/configure
@@ -240,5 +240,61 @@ $as_echo "$libc_cv_cc_novzeroupper" >&6; }
config_vars="$config_vars
config-cflags-novzeroupper = $libc_cv_cc_novzeroupper"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Intel MPX support" >&5
+$as_echo_n "checking for Intel MPX support... " >&6; }
+if ${libc_cv_asm_mpx+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.s <<\EOF
+ bndmov %bnd0,(%esp)
+EOF
+if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ libc_cv_asm_mpx=yes
+else
+ libc_cv_asm_mpx=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_mpx" >&5
+$as_echo "$libc_cv_asm_mpx" >&6; }
+if test $libc_cv_asm_mpx == yes; then
+ $as_echo "#define HAVE_MPX_SUPPORT 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX2 support" >&5
+$as_echo_n "checking for AVX2 support... " >&6; }
+if ${libc_cv_cc_avx2+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if { ac_try='${CC-cc} -mavx2 -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ libc_cv_cc_avx2=yes
+else
+ libc_cv_cc_avx2=no
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_avx2" >&5
+$as_echo "$libc_cv_cc_avx2" >&6; }
+if test $libc_cv_cc_avx2 = yes; then
+ $as_echo "#define HAVE_AVX2_SUPPORT 1" >>confdefs.h
+
+fi
+config_vars="$config_vars
+config-cflags-avx2 = $libc_cv_cc_avx2"
+
+$as_echo "#define USE_REGPARMS 1" >>confdefs.h
+
+
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
diff --git a/sysdeps/i386/configure.ac b/sysdeps/i386/configure.ac
index 96ab7b0f5a..a3f3067fb7 100644
--- a/sysdeps/i386/configure.ac
+++ b/sysdeps/i386/configure.ac
@@ -88,6 +88,32 @@ LIBC_TRY_CC_OPTION([-mno-vzeroupper],
])
LIBC_CONFIG_VAR([config-cflags-novzeroupper], [$libc_cv_cc_novzeroupper])
+dnl Check whether asm supports Intel MPX
+AC_CACHE_CHECK(for Intel MPX support, libc_cv_asm_mpx, [dnl
+cat > conftest.s <<\EOF
+ bndmov %bnd0,(%esp)
+EOF
+if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_asm_mpx=yes
+else
+ libc_cv_asm_mpx=no
+fi
+rm -f conftest*])
+if test $libc_cv_asm_mpx == yes; then
+ AC_DEFINE(HAVE_MPX_SUPPORT)
+fi
+
+dnl Check if -mavx2 works.
+AC_CACHE_CHECK(for AVX2 support, libc_cv_cc_avx2, [dnl
+LIBC_TRY_CC_OPTION([-mavx2], [libc_cv_cc_avx2=yes], [libc_cv_cc_avx2=no])
+])
+if test $libc_cv_cc_avx2 = yes; then
+ AC_DEFINE(HAVE_AVX2_SUPPORT)
+fi
+LIBC_CONFIG_VAR([config-cflags-avx2], [$libc_cv_cc_avx2])
+
+AC_DEFINE(USE_REGPARMS)
+
dnl It is always possible to access static and hidden symbols in an
dnl position independent way.
AC_DEFINE(PI_STATIC_AND_HIDDEN)
diff --git a/sysdeps/i386/crti.S b/sysdeps/i386/crti.S
index 974fc8f6aa..c44dd3b6ed 100644
--- a/sysdeps/i386/crti.S
+++ b/sysdeps/i386/crti.S
@@ -1,5 +1,5 @@
/* Special .init and .fini section support for x86.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ Copyright (C) 1995-2015 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
diff --git a/sysdeps/i386/crtn.S b/sysdeps/i386/crtn.S
index b9fd5721fc..f8cf60ab1f 100644
--- a/sysdeps/i386/crtn.S
+++ b/sysdeps/i386/crtn.S
@@ -1,5 +1,5 @@
/* Special .init and .fini section support for x86.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ Copyright (C) 1995-2015 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
diff --git a/sysdeps/i386/dl-irel.h b/sysdeps/i386/dl-irel.h
index 6eb3495f88..c629e9c38c 100644
--- a/sysdeps/i386/dl-irel.h
+++ b/sysdeps/i386/dl-irel.h
@@ -1,6 +1,6 @@
/* Machine-dependent ELF indirect relocation inline functions.
i386 version.
- Copyright (C) 2009-2014 Free Software Foundation, Inc.
+ Copyright (C) 2009-2015 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
@@ -39,7 +39,7 @@ elf_irel (const Elf32_Rel *reloc)
Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
const unsigned long int r_type = ELF32_R_TYPE (reloc->r_info);
- if (__builtin_expect (r_type == R_386_IRELATIVE, 1))
+ if (__glibc_likely (r_type == R_386_IRELATIVE))
{
Elf32_Addr value = elf_ifunc_invoke(*reloc_addr);
*reloc_addr = value;
diff --git a/sysdeps/i386/dl-lookupcfg.h b/sysdeps/i386/dl-lookupcfg.h
index 3fea8b4ab1..310f261fec 100644
--- a/sysdeps/i386/dl-lookupcfg.h
+++ b/sysdeps/i386/dl-lookupcfg.h
@@ -1,5 +1,5 @@
/* Configuration of lookup functions.
- Copyright (C) 2005-2014 Free Software Foundation, Inc.
+ Copyright (C) 2005-2015 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
@@ -20,6 +20,10 @@
#include_next <dl-lookupcfg.h>
+/* Address of protected data defined in the shared library may be
+ external due to copy relocation. */
+#define DL_EXTERN_PROTECTED_DATA
+
struct link_map;
extern void internal_function _dl_unmap (struct link_map *map);
diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h
index 917550c64f..04f9247bfa 100644
--- a/sysdeps/i386/dl-machine.h
+++ b/sysdeps/i386/dl-machine.h
@@ -1,5 +1,5 @@
/* Machine-dependent ELF dynamic relocation inline functions. i386 version.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ Copyright (C) 1995-2015 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
@@ -34,8 +34,6 @@ elf_machine_matches_host (const Elf32_Ehdr *ehdr)
}
-#ifdef PI_STATIC_AND_HIDDEN
-
/* Return the link-time address of _DYNAMIC. Conveniently, this is the
first element of the GOT, a special entry that is never relocated. */
static inline Elf32_Addr __attribute__ ((unused, const))
@@ -59,37 +57,6 @@ elf_machine_load_address (void)
return (Elf32_Addr) &bygotoff - elf_machine_dynamic ();
}
-#else /* Without .hidden support, we can't compile the code above. */
-
-/* Return the link-time address of _DYNAMIC. Conveniently, this is the
- first element of the GOT. This must be inlined in a function which
- uses global data. */
-static inline Elf32_Addr __attribute__ ((unused))
-elf_machine_dynamic (void)
-{
- register Elf32_Addr *got asm ("%ebx");
- return *got;
-}
-
-
-/* Return the run-time load address of the shared object. */
-static inline Elf32_Addr __attribute__ ((unused))
-elf_machine_load_address (void)
-{
- /* It doesn't matter what variable this is, the reference never makes
- it to assembly. We need a dummy reference to some global variable
- via the GOT to make sure the compiler initialized %ebx in time. */
- extern int _dl_argc;
- Elf32_Addr addr;
- asm ("leal _dl_start@GOTOFF(%%ebx), %0\n"
- "subl _dl_start@GOT(%%ebx), %0"
- : "=r" (addr) : "m" (_dl_argc) : "cc");
- return addr;
-}
-
-#endif
-
-
/* Set up the loaded object described by L so its unrelocated PLT
entries will jump to the on-demand fixup code in dl-runtime.c. */
@@ -123,7 +90,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
to intercept the calls to collect information. In this case we
don't store the address in the GOT so that all future calls also
end in this function. */
- if (__builtin_expect (profile, 0))
+ if (__glibc_unlikely (profile))
{
got[2] = (Elf32_Addr) &_dl_runtime_profile;
@@ -221,7 +188,7 @@ _dl_start_user:\n\
# Clear %ebp, so that even constructors have terminated backchain.\n\
xorl %ebp, %ebp\n\
# Call the function to run the initializers.\n\
- call _dl_init_internal@PLT\n\
+ call _dl_init\n\
# Pass our finalizer function to the user in %edx, as per ELF ABI.\n\
leal _dl_fini@GOTOFF(%ebx), %edx\n\
# Restore %esp _start expects.\n\
@@ -238,14 +205,18 @@ _dl_start_user:\n\
/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or
TLS variable, so undefined references should not be allowed to
define the value.
- ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
- of the main executable's symbols, as for a COPY reloc. */
+ ELF_RTYPE_CLASS_COPY iff TYPE should not be allowed to resolve to one
+ of the main executable's symbols, as for a COPY reloc.
+ ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA iff TYPE describes relocation may
+ against protected data whose address be external due to copy relocation.
+ */
# define elf_machine_type_class(type) \
((((type) == R_386_JMP_SLOT || (type) == R_386_TLS_DTPMOD32 \
|| (type) == R_386_TLS_DTPOFF32 || (type) == R_386_TLS_TPOFF32 \
|| (type) == R_386_TLS_TPOFF || (type) == R_386_TLS_DESC) \
* ELF_RTYPE_CLASS_PLT) \
- | (((type) == R_386_COPY) * ELF_RTYPE_CLASS_COPY))
+ | (((type) == R_386_COPY) * ELF_RTYPE_CLASS_COPY) \
+ | (((type) == R_386_GLOB_DAT) * ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA))
/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
#define ELF_MACHINE_JMP_SLOT R_386_JMP_SLOT
@@ -292,6 +263,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
/* The i386 never uses Elf32_Rela relocations for the dynamic linker.
Prelinked libraries may use Elf32_Rela though. */
#define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
+#define ELF_MACHINE_NO_REL 0
#ifdef RESOLVE_MAP
@@ -308,7 +280,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
# if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
- if (__builtin_expect (r_type == R_386_RELATIVE, 0))
+ if (__glibc_unlikely (r_type == R_386_RELATIVE))
{
# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
/* This is defined in rtld.c, but nowhere in the static libc.a;
@@ -325,7 +297,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
*reloc_addr += map->l_addr;
}
# ifndef RTLD_BOOTSTRAP
- else if (__builtin_expect (r_type == R_386_NONE, 0))
+ else if (__glibc_unlikely (r_type == R_386_NONE))
return;
# endif
else
@@ -660,7 +632,7 @@ elf_machine_lazy_rel (struct link_map *map,
Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
/* Check for unexpected PLT reloc type. */
- if (__builtin_expect (r_type == R_386_JMP_SLOT, 1))
+ if (__glibc_likely (r_type == R_386_JMP_SLOT))
{
if (__builtin_expect (map->l_mach.plt, 0) == 0)
*reloc_addr += l_addr;
@@ -668,7 +640,7 @@ elf_machine_lazy_rel (struct link_map *map,
*reloc_addr = (map->l_mach.plt
+ (((Elf32_Addr) reloc_addr) - map->l_mach.gotplt) * 4);
}
- else if (__builtin_expect (r_type == R_386_TLS_DESC, 1))
+ else if (__glibc_likely (r_type == R_386_TLS_DESC))
{
struct tlsdesc volatile * __attribute__((__unused__)) td =
(struct tlsdesc volatile *)reloc_addr;
@@ -715,10 +687,10 @@ elf_machine_lazy_rel (struct link_map *map,
# endif
}
}
- else if (__builtin_expect (r_type == R_386_IRELATIVE, 0))
+ else if (__glibc_unlikely (r_type == R_386_IRELATIVE))
{
Elf32_Addr value = map->l_addr + *reloc_addr;
- if (__builtin_expect (!skip_ifunc, 1))
+ if (__glibc_likely (!skip_ifunc))
value = ((Elf32_Addr (*) (void)) value) ();
*reloc_addr = value;
}
@@ -736,9 +708,9 @@ elf_machine_lazy_rela (struct link_map *map,
{
Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
- if (__builtin_expect (r_type == R_386_JMP_SLOT, 1))
+ if (__glibc_likely (r_type == R_386_JMP_SLOT))
;
- else if (__builtin_expect (r_type == R_386_TLS_DESC, 1))
+ else if (__glibc_likely (r_type == R_386_TLS_DESC))
{
struct tlsdesc volatile * __attribute__((__unused__)) td =
(struct tlsdesc volatile *)reloc_addr;
@@ -746,10 +718,10 @@ elf_machine_lazy_rela (struct link_map *map,
td->arg = (void*)reloc;
td->entry = _dl_tlsdesc_resolve_rela;
}
- else if (__builtin_expect (r_type == R_386_IRELATIVE, 0))
+ else if (__glibc_unlikely (r_type == R_386_IRELATIVE))
{
Elf32_Addr value = map->l_addr + reloc->r_addend;
- if (__builtin_expect (!skip_ifunc, 1))
+ if (__glibc_likely (!skip_ifunc))
value = ((Elf32_Addr (*) (void)) value) ();
*reloc_addr = value;
}
diff --git a/sysdeps/i386/dl-procinfo.c b/sysdeps/i386/dl-procinfo.c
index 92831731c7..b673b3c848 100644
--- a/sysdeps/i386/dl-procinfo.c
+++ b/sysdeps/i386/dl-procinfo.c
@@ -1,5 +1,5 @@
/* Data for i386 version of processor capability information.
- Copyright (C) 2001-2014 Free Software Foundation, Inc.
+ Copyright (C) 2001-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
diff --git a/sysdeps/i386/dl-procinfo.h b/sysdeps/i386/dl-procinfo.h
index 0f22b76e08..e1e0fef193 100644
--- a/sysdeps/i386/dl-procinfo.h
+++ b/sysdeps/i386/dl-procinfo.h
@@ -1,5 +1,5 @@
/* i386 version of processor capability information handling macros.
- Copyright (C) 1998-2014 Free Software Foundation, Inc.
+ Copyright (C) 1998-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
diff --git a/sysdeps/i386/dl-tls.h b/sysdeps/i386/dl-tls.h
index 736137254f..f8e108f730 100644
--- a/sysdeps/i386/dl-tls.h
+++ b/sysdeps/i386/dl-tls.h
@@ -1,5 +1,5 @@
/* Thread-local storage handling in the ELF dynamic linker. i386 version.
- Copyright (C) 2002-2014 Free Software Foundation, Inc.
+ Copyright (C) 2002-2015 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
@@ -32,7 +32,7 @@ extern void *___tls_get_addr (tls_index *ti)
extern void *___tls_get_addr_internal (tls_index *ti)
__attribute__ ((__regparm__ (1))) attribute_hidden;
-# ifdef IS_IN_rtld
+# if IS_IN (rtld)
/* The special thing about the x86 TLS ABI is that we have two
variants of the __tls_get_addr function with different calling
conventions. The GNU version, which we are mostly concerned here,
@@ -50,6 +50,8 @@ __tls_get_addr (tls_index *ti)
version of this file. */
# define __tls_get_addr __attribute__ ((__regparm__ (1))) ___tls_get_addr
strong_alias (___tls_get_addr, ___tls_get_addr_internal)
+rtld_hidden_proto (___tls_get_addr)
+rtld_hidden_def (___tls_get_addr)
#else
/* Users should get the better interface. */
diff --git a/sysdeps/i386/dl-tlsdesc.S b/sysdeps/i386/dl-tlsdesc.S
index e6753e9e19..db02274c16 100644
--- a/sysdeps/i386/dl-tlsdesc.S
+++ b/sysdeps/i386/dl-tlsdesc.S
@@ -1,5 +1,5 @@
/* Thread-local storage handling in the ELF dynamic linker. i386 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
+ Copyright (C) 2004-2015 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
@@ -126,10 +126,7 @@ _dl_tlsdesc_dynamic:
.p2align 4,,7
.Lslow:
cfi_adjust_cfa_offset (28)
- movl %ebx, 16(%esp)
- LOAD_PIC_REG (bx)
- call ___tls_get_addr@PLT
- movl 16(%esp), %ebx
+ call HIDDEN_JUMPTARGET (___tls_get_addr)
jmp .Lret
cfi_endproc
.size _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
diff --git a/sysdeps/i386/dl-tlsdesc.h b/sysdeps/i386/dl-tlsdesc.h
index ce6e831b60..c58423389e 100644
--- a/sysdeps/i386/dl-tlsdesc.h
+++ b/sysdeps/i386/dl-tlsdesc.h
@@ -1,6 +1,6 @@
/* Thread-local storage descriptor handling in the ELF dynamic linker.
i386 version.
- Copyright (C) 2005-2014 Free Software Foundation, Inc.
+ Copyright (C) 2005-2015 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
diff --git a/sysdeps/i386/dl-trampoline.S b/sysdeps/i386/dl-trampoline.S
index 8cbab48206..8a2fd8ddd6 100644
--- a/sysdeps/i386/dl-trampoline.S
+++ b/sysdeps/i386/dl-trampoline.S
@@ -1,5 +1,5 @@
/* PLT trampolines. i386 version.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
+ Copyright (C) 2004-2015 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
@@ -17,6 +17,13 @@
<http://www.gnu.org/licenses/>. */
#include <sysdep.h>
+#include <link-defines.h>
+
+#ifdef HAVE_MPX_SUPPORT
+# define PRESERVE_BND_REGS_PREFIX bnd
+#else
+# define PRESERVE_BND_REGS_PREFIX .byte 0xf2
+#endif
.text
.globl _dl_runtime_resolve
@@ -161,24 +168,47 @@ _dl_runtime_profile:
+4 free
%esp free
*/
- subl $20, %esp
- cfi_adjust_cfa_offset (20)
- movl %eax, (%esp)
- movl %edx, 4(%esp)
- fstpt 8(%esp)
- fstpt 20(%esp)
+#if LONG_DOUBLE_SIZE != 12
+# error "long double size must be 12 bytes"
+#endif
+ # Allocate space for La_i86_retval and subtract 12 free bytes.
+ subl $(LRV_SIZE - 12), %esp
+ cfi_adjust_cfa_offset (LRV_SIZE - 12)
+ movl %eax, LRV_EAX_OFFSET(%esp)
+ movl %edx, LRV_EDX_OFFSET(%esp)
+ fstpt LRV_ST0_OFFSET(%esp)
+ fstpt LRV_ST1_OFFSET(%esp)
+#ifdef HAVE_MPX_SUPPORT
+ bndmov %bnd0, LRV_BND0_OFFSET(%esp)
+ bndmov %bnd1, LRV_BND1_OFFSET(%esp)
+#else
+ .byte 0x66,0x0f,0x1b,0x44,0x24,LRV_BND0_OFFSET
+ .byte 0x66,0x0f,0x1b,0x4c,0x24,LRV_BND1_OFFSET
+#endif
pushl %esp
cfi_adjust_cfa_offset (4)
- leal 36(%esp), %ecx
- movl 56(%esp), %eax
- movl 60(%esp), %edx
+ # Address of La_i86_regs area.
+ leal (LRV_SIZE + 4)(%esp), %ecx
+ # PLT2
+ movl (LRV_SIZE + 4 + LR_SIZE)(%esp), %eax
+ # PLT1
+ movl (LRV_SIZE + 4 + LR_SIZE + 4)(%esp), %edx
call _dl_call_pltexit
- movl (%esp), %eax
- movl 4(%esp), %edx
- fldt 20(%esp)
- fldt 8(%esp)
- addl $60, %esp
- cfi_adjust_cfa_offset (-60)
+ movl LRV_EAX_OFFSET(%esp), %eax
+ movl LRV_EDX_OFFSET(%esp), %edx
+ fldt LRV_ST1_OFFSET(%esp)
+ fldt LRV_ST0_OFFSET(%esp)
+#ifdef HAVE_MPX_SUPPORT
+ bndmov LRV_BND0_OFFSET(%esp), %bnd0
+ bndmov LRV_BND1_OFFSET(%esp), %bnd1
+#else
+ .byte 0x66,0x0f,0x1a,0x44,0x24,LRV_BND0_OFFSET
+ .byte 0x66,0x0f,0x1a,0x4c,0x24,LRV_BND1_OFFSET
+#endif
+ # Restore stack before return.
+ addl $(LRV_SIZE + 4 + LR_SIZE + 4), %esp
+ cfi_adjust_cfa_offset (-(LRV_SIZE + 4 + LR_SIZE + 4))
+ PRESERVE_BND_REGS_PREFIX
ret
cfi_endproc
.size _dl_runtime_profile, .-_dl_runtime_profile
diff --git a/sysdeps/i386/ffs.c b/sysdeps/i386/ffs.c
index 0ff5857759..db08e4ee77 100644
--- a/sysdeps/i386/ffs.c
+++ b/sysdeps/i386/ffs.c
@@ -1,7 +1,7 @@
/* ffs -- find first set bit in a word, counted from least significant end.
For Intel 80x86, x>=3.
This file is part of the GNU C Library.
- Copyright (C) 1991-2014 Free Software Foundation, Inc.
+ Copyright (C) 1991-2015 Free Software Foundation, Inc.
Contributed by Torbjorn Granlund (tege@sics.se).
The GNU C Library is free software; you can redistribute it and/or
diff --git a/sysdeps/i386/fpu/e_acosh.S b/sysdeps/i386/fpu/e_acosh.S
index 98a329179b..c5cd4474ec 100644
--- a/sysdeps/i386/fpu/e_acosh.S
+++ b/sysdeps/i386/fpu/e_acosh.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -52,6 +52,7 @@ ENTRY(__ieee754_acosh)
// 1 <= x <= 2 => y = log1p(x-1+sqrt(2*(x-1)+(x-1)^2))
fsubl MO(one) // x-1 : log(2)
+ fabs // acosh(1) is +0 in all rounding modes
fld %st // x-1 : x-1 : log(2)
fmul %st(1) // (x-1)^2 : x-1 : log(2)
fadd %st(1) // x-1+(x-1)^2 : x-1 : log(2)
diff --git a/sysdeps/i386/fpu/e_acoshf.S b/sysdeps/i386/fpu/e_acoshf.S
index db9cf337b2..710267b11e 100644
--- a/sysdeps/i386/fpu/e_acoshf.S
+++ b/sysdeps/i386/fpu/e_acoshf.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -52,6 +52,7 @@ ENTRY(__ieee754_acoshf)
// 1 <= x <= 2 => y = log1p(x-1+sqrt(2*(x-1)+(x-1)^2))
fsubl MO(one) // x-1 : log(2)
+ fabs // acosh(1) is +0 in all rounding modes
fld %st // x-1 : x-1 : log(2)
fmul %st(1) // (x-1)^2 : x-1 : log(2)
fadd %st(1) // x-1+(x-1)^2 : x-1 : log(2)
diff --git a/sysdeps/i386/fpu/e_acoshl.S b/sysdeps/i386/fpu/e_acoshl.S
index a832155d17..034b21b968 100644
--- a/sysdeps/i386/fpu/e_acoshl.S
+++ b/sysdeps/i386/fpu/e_acoshl.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -59,6 +59,7 @@ ENTRY(__ieee754_acoshl)
// 1 <= x <= 2 => y = log1p(x-1+sqrt(2*(x-1)+(x-1)^2))
fsubl MO(one) // x-1 : log(2)
+ fabs // acosh(1) is +0 in all rounding modes
fld %st // x-1 : x-1 : log(2)
fmul %st(1) // (x-1)^2 : x-1 : log(2)
fadd %st(1) // x-1+(x-1)^2 : x-1 : log(2)
diff --git a/sysdeps/i386/fpu/e_asin.S b/sysdeps/i386/fpu/e_asin.S
index 9a44cb62ac..ea8cb6f1b2 100644
--- a/sysdeps/i386/fpu/e_asin.S
+++ b/sysdeps/i386/fpu/e_asin.S
@@ -7,8 +7,26 @@
RCSID("$NetBSD: e_asin.S,v 1.4 1995/05/08 23:45:40 jtc Exp $")
+ .section .rodata.cst8,"aM",@progbits,8
+
+ .p2align 3
+ .type dbl_min,@object
+dbl_min: .byte 0, 0, 0, 0, 0, 0, 0x10, 0
+ ASM_SIZE_DIRECTIVE(dbl_min)
+
+#ifdef PIC
+# define MO(op) op##@GOTOFF(%ecx)
+#else
+# define MO(op) op
+#endif
+
+ .text
+
/* asin = atan (x / sqrt((1-x) (1+x))) */
ENTRY(__ieee754_asin)
+#ifdef PIC
+ LOAD_PIC_REG (cx)
+#endif
fldl 4(%esp) /* x */
fld %st
fld1 /* 1 : x : x */
@@ -18,6 +36,20 @@ ENTRY(__ieee754_asin)
fmulp /* 1 - x^2 */
fsqrt /* sqrt (1 - x^2) */
fpatan
- ret
+ fldl MO(dbl_min)
+ fld %st(1)
+ fabs
+ fucompp
+ fnstsw
+ sahf
+ jnc 1f
+ subl $8, %esp
+ cfi_adjust_cfa_offset (8)
+ fld %st(0)
+ fmul %st(0)
+ fstpl (%esp)
+ addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
+1: ret
END (__ieee754_asin)
strong_alias (__ieee754_asin, __asin_finite)
diff --git a/sysdeps/i386/fpu/e_asinf.S b/sysdeps/i386/fpu/e_asinf.S
index 5c1065dd4d..f7bda77fa6 100644
--- a/sysdeps/i386/fpu/e_asinf.S
+++ b/sysdeps/i386/fpu/e_asinf.S
@@ -8,8 +8,26 @@
RCSID("$NetBSD: $")
+ .section .rodata.cst4,"aM",@progbits,4
+
+ .p2align 2
+ .type flt_min,@object
+flt_min: .byte 0, 0, 0x80, 0
+ ASM_SIZE_DIRECTIVE(flt_min)
+
+#ifdef PIC
+# define MO(op) op##@GOTOFF(%ecx)
+#else
+# define MO(op) op
+#endif
+
+ .text
+
/* asin = atan (x / sqrt(1 - x^2)) */
ENTRY(__ieee754_asinf)
+#ifdef PIC
+ LOAD_PIC_REG (cx)
+#endif
flds 4(%esp) /* x */
fld %st
fmul %st(0) /* x^2 */
@@ -17,6 +35,20 @@ ENTRY(__ieee754_asinf)
fsubp /* 1 - x^2 */
fsqrt /* sqrt (1 - x^2) */
fpatan
- ret
+ flds MO(flt_min)
+ fld %st(1)
+ fabs
+ fucompp
+ fnstsw
+ sahf
+ jnc 1f
+ subl $4, %esp
+ cfi_adjust_cfa_offset (4)
+ fld %st(0)
+ fmul %st(0)
+ fstps (%esp)
+ addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
+1: ret
END (__ieee754_asinf)
strong_alias (__ieee754_asinf, __asinf_finite)
diff --git a/sysdeps/i386/fpu/e_atan2.S b/sysdeps/i386/fpu/e_atan2.S
index e76f8e2a78..6f5481fb5c 100644
--- a/sysdeps/i386/fpu/e_atan2.S
+++ b/sysdeps/i386/fpu/e_atan2.S
@@ -7,10 +7,43 @@
RCSID("$NetBSD: e_atan2.S,v 1.4 1995/05/08 23:46:28 jtc Exp $")
+ .section .rodata.cst8,"aM",@progbits,8
+
+ .p2align 3
+ .type dbl_min,@object
+dbl_min: .byte 0, 0, 0, 0, 0, 0, 0x10, 0
+ ASM_SIZE_DIRECTIVE(dbl_min)
+
+#ifdef PIC
+# define MO(op) op##@GOTOFF(%ecx)
+#else
+# define MO(op) op
+#endif
+
+ .text
ENTRY(__ieee754_atan2)
+#ifdef PIC
+ LOAD_PIC_REG (cx)
+#endif
fldl 4(%esp)
fldl 12(%esp)
fpatan
- ret
+ fldl MO(dbl_min)
+ fld %st(1)
+ fabs
+ fucompp
+ fnstsw
+ sahf
+ jnc 1f
+ subl $8, %esp
+ cfi_adjust_cfa_offset (8)
+ fld %st(0)
+ fmul %st(0)
+ fstpl (%esp)
+ fstpl (%esp)
+ fldl (%esp)
+ addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
+1: ret
END (__ieee754_atan2)
strong_alias (__ieee754_atan2, __atan2_finite)
diff --git a/sysdeps/i386/fpu/e_atan2f.S b/sysdeps/i386/fpu/e_atan2f.S
index 9ffa6373be..ec0eb3fd71 100644
--- a/sysdeps/i386/fpu/e_atan2f.S
+++ b/sysdeps/i386/fpu/e_atan2f.S
@@ -7,10 +7,43 @@
RCSID("$NetBSD: e_atan2f.S,v 1.1 1995/05/08 23:35:10 jtc Exp $")
+ .section .rodata.cst4,"aM",@progbits,4
+
+ .p2align 2
+ .type flt_min,@object
+flt_min: .byte 0, 0, 0x80, 0
+ ASM_SIZE_DIRECTIVE(flt_min)
+
+#ifdef PIC
+# define MO(op) op##@GOTOFF(%ecx)
+#else
+# define MO(op) op
+#endif
+
+ .text
ENTRY(__ieee754_atan2f)
+#ifdef PIC
+ LOAD_PIC_REG (cx)
+#endif
flds 4(%esp)
flds 8(%esp)
fpatan
- ret
+ flds MO(flt_min)
+ fld %st(1)
+ fabs
+ fucompp
+ fnstsw
+ sahf
+ jnc 1f
+ subl $4, %esp
+ cfi_adjust_cfa_offset (4)
+ fld %st(0)
+ fmul %st(0)
+ fstps (%esp)
+ fstps (%esp)
+ flds (%esp)
+ addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
+1: ret
END (__ieee754_atan2f)
strong_alias (__ieee754_atan2f, __atan2f_finite)
diff --git a/sysdeps/i386/fpu/e_atanh.S b/sysdeps/i386/fpu/e_atanh.S
index 38a4559370..90d19bc9d6 100644
--- a/sysdeps/i386/fpu/e_atanh.S
+++ b/sysdeps/i386/fpu/e_atanh.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arctanh function.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -35,6 +35,13 @@ limit: .double 0.29
ln2_2: .tfloat 0.3465735902799726547086160
ASM_SIZE_DIRECTIVE(ln2_2)
+ .section .rodata.cst8,"aM",@progbits,8
+
+ .p2align 3
+ .type dbl_min,@object
+dbl_min: .byte 0, 0, 0, 0, 0, 0, 0x10, 0
+ ASM_SIZE_DIRECTIVE(dbl_min)
+
#ifdef PIC
#define MO(op) op##@GOTOFF(%edx)
#else
@@ -81,7 +88,18 @@ ENTRY(__ieee754_atanh)
sahf
jae 4f
fyl2xp1 // 0.5*ln2*ld(1+2*|x|+(2*|x|^2)/(1-|x|))
- jecxz 3f
+ fcoml MO(dbl_min)
+ fnstsw
+ sahf
+ jae 8f
+ subl $8, %esp
+ cfi_adjust_cfa_offset (8)
+ fld %st(0)
+ fmul %st(0)
+ fstpl (%esp)
+ addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
+8: jecxz 3f
fchs // 0.5*ln2*ld(1+2*x+(2*x^2)/(1-x))
3: ret
diff --git a/sysdeps/i386/fpu/e_atanhf.S b/sysdeps/i386/fpu/e_atanhf.S
index 5a4208cec3..1c8969e5ec 100644
--- a/sysdeps/i386/fpu/e_atanhf.S
+++ b/sysdeps/i386/fpu/e_atanhf.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arctanh function.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -36,6 +36,13 @@ limit: .double 0.29
ln2_2: .tfloat 0.3465735902799726547086160
ASM_SIZE_DIRECTIVE(ln2_2)
+ .section .rodata.cst4,"aM",@progbits,4
+
+ .p2align 2
+ .type flt_min,@object
+flt_min: .byte 0, 0, 0x80, 0
+ ASM_SIZE_DIRECTIVE(flt_min)
+
#ifdef PIC
#define MO(op) op##@GOTOFF(%edx)
#else
@@ -77,7 +84,18 @@ ENTRY(__ieee754_atanhf)
sahf
jae 4f
fyl2xp1 // 0.5*ln2*ld(1+2*|x|+(2*|x|^2)/(1-|x|))
- jecxz 3f
+ fcoms MO(flt_min)
+ fnstsw
+ sahf
+ jae 6f
+ subl $4, %esp
+ cfi_adjust_cfa_offset (4)
+ fld %st(0)
+ fmul %st(0)
+ fstps (%esp)
+ addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
+6: jecxz 3f
fchs // 0.5*ln2*ld(1+2*x+(2*x^2)/(1-x))
3: ret
diff --git a/sysdeps/i386/fpu/e_atanhl.S b/sysdeps/i386/fpu/e_atanhl.S
index 0d0ce12be9..1ad6851058 100644
--- a/sysdeps/i386/fpu/e_atanhl.S
+++ b/sysdeps/i386/fpu/e_atanhl.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arctanh function.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -56,6 +56,16 @@ ENTRY(__ieee754_atanhl)
andl $0x7fff, %eax
cmpl $0x7fff, %eax
je 5f
+ cmpl $0x3fdf, %eax
+ jge 7f
+ // Exponent below -32; return x, with underflow if subnormal.
+ fldt 4(%esp)
+ cmpl $0, %eax
+ jne 8f
+ fld %st(0)
+ fmul %st(0)
+ fstp %st(0)
+8: ret
7:
#ifdef PIC
diff --git a/sysdeps/i386/fpu/e_exp2l.S b/sysdeps/i386/fpu/e_exp2l.S
index 203dd0078d..2bf9a25727 100644
--- a/sysdeps/i386/fpu/e_exp2l.S
+++ b/sysdeps/i386/fpu/e_exp2l.S
@@ -18,7 +18,15 @@ ENTRY(__ieee754_exp2l)
andb %ah, %dh
cmpb $0x05, %dh
je 1f /* Is +-Inf, jump. */
- fld %st
+ movzwl 4+8(%esp), %eax
+ andl $0x7fff, %eax
+ cmpl $0x3fbe, %eax
+ jge 3f
+ /* Argument's exponent below -65, result rounds to 1. */
+ fld1
+ faddp
+ ret
+3: fld %st
frndint /* int(x) */
fsubr %st,%st(1) /* fract(x) */
fxch
diff --git a/sysdeps/i386/fpu/e_expl.S b/sysdeps/i386/fpu/e_expl.S
index 5917f574b1..711c86a6e8 100644
--- a/sysdeps/i386/fpu/e_expl.S
+++ b/sysdeps/i386/fpu/e_expl.S
@@ -65,6 +65,10 @@ c1: .byte 0x20, 0xfa, 0xee, 0xc2, 0x5f, 0x70, 0xa5, 0xec, 0xed, 0x3f
csat: .byte 0, 0, 0, 0, 0, 0, 0, 0x80, 0x0e, 0x40
.byte 0, 0, 0, 0, 0, 0
ASM_SIZE_DIRECTIVE(csat)
+ .type cmin,@object
+cmin: .byte 0, 0, 0, 0, 0, 0, 0, 0x80, 0x1, 0
+ .byte 0, 0, 0, 0, 0, 0
+ ASM_SIZE_DIRECTIVE(cmin)
#endif
#ifdef PIC
@@ -108,12 +112,34 @@ ENTRY(IEEE754_EXPL)
andb %ah, %dh
cmpb $0x40, %dh
je 2f
+
+ /* Test for arguments that are small but not subnormal. */
+ movzwl 4+8(%esp), %eax
+ andl $0x7fff, %eax
+ cmpl $0x3fbf, %eax
+ jge 3f
+ /* Argument's exponent below -64; avoid spurious underflow if
+ normal. */
+ cmpl $0x0001, %eax
+ jge 2f
+ /* Force underflow and return the argument, to avoid wrong signs
+ of zero results from the code below in some rounding modes. */
+ fld %st
+ fmul %st
+ fstp %st
+ jmp 2f
#else
movzwl 4+8(%esp), %eax
andl $0x7fff, %eax
cmpl $0x400d, %eax
- jle 3f
- /* Overflow, underflow or infinity or NaN as argument. */
+ jg 5f
+ cmpl $0x3fbc, %eax
+ jge 3f
+ /* Argument's exponent below -67, result rounds to 1. */
+ fld1
+ faddp
+ jmp 2f
+5: /* Overflow, underflow or infinity or NaN as argument. */
fstsw %ax
movb $0x45, %dh
andb %ah, %dh
@@ -173,8 +199,18 @@ ENTRY(IEEE754_EXPL)
fstp %st(1) /* 2 */
fscale /* 2 scale factor is st(1); base^x */
fstp %st(1) /* 1 */
+ /* Ensure underflow for tiny result. */
+ fldt MO(cmin) /* 2 cmin */
+ fld %st(1) /* 3 */
+ fcompp /* 1 */
+ fnstsw
+ sahf
+ jnc 6f
+ fld %st
+ fmul %st
+ fstp %st
#endif
- fstp %st(1) /* 0 */
+6: fstp %st(1) /* 0 */
jmp 2f
1:
#ifdef USE_AS_EXPM1L
diff --git a/sysdeps/i386/fpu/e_hypot.S b/sysdeps/i386/fpu/e_hypot.S
index 36290b0b45..63083ad4c9 100644
--- a/sysdeps/i386/fpu/e_hypot.S
+++ b/sysdeps/i386/fpu/e_hypot.S
@@ -1,5 +1,5 @@
/* Compute the hypothenuse of X and Y.
- Copyright (C) 1998-2014 Free Software Foundation, Inc.
+ Copyright (C) 1998-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
diff --git a/sysdeps/i386/fpu/e_hypotf.S b/sysdeps/i386/fpu/e_hypotf.S
index adfb818fa4..4e22d33ebe 100644
--- a/sysdeps/i386/fpu/e_hypotf.S
+++ b/sysdeps/i386/fpu/e_hypotf.S
@@ -1,5 +1,5 @@
/* Compute the hypothenuse of X and Y.
- Copyright (C) 1998-2014 Free Software Foundation, Inc.
+ Copyright (C) 1998-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
diff --git a/sysdeps/i386/fpu/e_log.S b/sysdeps/i386/fpu/e_log.S
index 0877924998..3fa32aad3c 100644
--- a/sysdeps/i386/fpu/e_log.S
+++ b/sysdeps/i386/fpu/e_log.S
@@ -46,7 +46,13 @@ ENTRY(__ieee754_log)
fnstsw // x-1 : x : log(2)
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : log(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : log(2)
fyl2xp1 // log(x)
ret
diff --git a/sysdeps/i386/fpu/e_log10.S b/sysdeps/i386/fpu/e_log10.S
index ce6a81abb6..17277084ca 100644
--- a/sysdeps/i386/fpu/e_log10.S
+++ b/sysdeps/i386/fpu/e_log10.S
@@ -46,7 +46,13 @@ ENTRY(__ieee754_log10)
fnstsw // x-1 : x : log10(2)
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : log10(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log10(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : log10(2)
fyl2xp1 // log10(x)
ret
diff --git a/sysdeps/i386/fpu/e_log10f.S b/sysdeps/i386/fpu/e_log10f.S
index 8c20723555..72a3b88251 100644
--- a/sysdeps/i386/fpu/e_log10f.S
+++ b/sysdeps/i386/fpu/e_log10f.S
@@ -47,7 +47,13 @@ ENTRY(__ieee754_log10f)
fnstsw // x-1 : x : log10(2)
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : log10(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log10(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : log10(2)
fyl2xp1 // log10(x)
ret
diff --git a/sysdeps/i386/fpu/e_log10l.S b/sysdeps/i386/fpu/e_log10l.S
index cde987b137..45b9c6d21d 100644
--- a/sysdeps/i386/fpu/e_log10l.S
+++ b/sysdeps/i386/fpu/e_log10l.S
@@ -48,7 +48,13 @@ ENTRY(__ieee754_log10l)
fnstsw // x-1 : x : log10(2)
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : log10(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log10(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : log10(2)
fyl2xp1 // log10(x)
ret
diff --git a/sysdeps/i386/fpu/e_log2.S b/sysdeps/i386/fpu/e_log2.S
index a202bc731d..73ff0fffd3 100644
--- a/sysdeps/i386/fpu/e_log2.S
+++ b/sysdeps/i386/fpu/e_log2.S
@@ -47,7 +47,13 @@ ENTRY(__ieee754_log2)
fnstsw // x-1 : x : 1
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : 1
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log2(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : 1
fyl2xp1 // log(x)
ret
diff --git a/sysdeps/i386/fpu/e_log2f.S b/sysdeps/i386/fpu/e_log2f.S
index f4f9a8c3bf..344eeb495e 100644
--- a/sysdeps/i386/fpu/e_log2f.S
+++ b/sysdeps/i386/fpu/e_log2f.S
@@ -47,7 +47,13 @@ ENTRY(__ieee754_log2f)
fnstsw // x-1 : x : 1
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : 1
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log2(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : 1
fyl2xp1 // log(x)
ret
diff --git a/sysdeps/i386/fpu/e_log2l.S b/sysdeps/i386/fpu/e_log2l.S
index bd51b5651e..0f5f7e5789 100644
--- a/sysdeps/i386/fpu/e_log2l.S
+++ b/sysdeps/i386/fpu/e_log2l.S
@@ -47,7 +47,13 @@ ENTRY(__ieee754_log2l)
fnstsw // x-1 : x : 1
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : 1
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log2(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : 1
fyl2xp1 // log(x)
ret
diff --git a/sysdeps/i386/fpu/e_logf.S b/sysdeps/i386/fpu/e_logf.S
index 485180e909..ca83d39cef 100644
--- a/sysdeps/i386/fpu/e_logf.S
+++ b/sysdeps/i386/fpu/e_logf.S
@@ -47,7 +47,13 @@ ENTRY(__ieee754_logf)
fnstsw // x-1 : x : log(2)
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : log(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : log(2)
fyl2xp1 // log(x)
ret
diff --git a/sysdeps/i386/fpu/e_logl.S b/sysdeps/i386/fpu/e_logl.S
index d7a459a627..828e98aa8d 100644
--- a/sysdeps/i386/fpu/e_logl.S
+++ b/sysdeps/i386/fpu/e_logl.S
@@ -40,14 +40,23 @@ ENTRY(__ieee754_logl)
fld %st // x : x : log(2)
sahf
jc 3f // in case x is NaN or +-Inf
+ movzwl 4+8(%esp), %eax
+ cmpl $0xc000, %eax
+ jae 6f // x <= -2, avoid overflow from -LDBL_MAX - 1.
4: fsubl MO(one) // x-1 : x : log(2)
- fld %st // x-1 : x-1 : x : log(2)
+6: fld %st // x-1 : x-1 : x : log(2)
fabs // |x-1| : x-1 : x : log(2)
fcompl MO(limit) // x-1 : x : log(2)
fnstsw // x-1 : x : log(2)
andb $0x45, %ah
jz 2f
- fstp %st(1) // x-1 : log(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 5f
+ fabs // log(1) is +0 in all rounding modes.
+5: fstp %st(1) // x-1 : log(2)
fyl2xp1 // log(x)
ret
diff --git a/sysdeps/i386/fpu/e_pow.S b/sysdeps/i386/fpu/e_pow.S
index 8b641bb401..40f8227fda 100644
--- a/sysdeps/i386/fpu/e_pow.S
+++ b/sysdeps/i386/fpu/e_pow.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of pow function.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -144,12 +144,22 @@ ENTRY(__ieee754_pow)
4: fldl MO(one) // 1 : x
fxch
+ /* If y is even, take the absolute value of x. Otherwise,
+ ensure all intermediate values that might overflow have the
+ sign of x. */
+ testb $1, %al
+ jnz 6f
+ fabs
+
6: shrdl $1, %edx, %eax
jnc 5f
fxch
+ fabs
fmul %st(1) // x : ST*x
fxch
-5: fmul %st(0), %st // x*x : ST*x
+5: fld %st // x : x : ST*x
+ fabs // |x| : x : ST*x
+ fmulp // |x|*x : ST*x
shrl $1, %edx
movl %eax, %ecx
orl %edx, %ecx
@@ -207,27 +217,28 @@ ENTRY(__ieee754_pow)
fxch // fract(y*log2(x)) : int(y*log2(x))
f2xm1 // 2^fract(y*log2(x))-1 : int(y*log2(x))
faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x))
- fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x))
- fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x))
+
+ // Before scaling, we must negate if x is negative and y is an
+ // odd integer.
testb $2, %dh
- jz 292f
+ jz 291f
// x is negative. If y is an odd integer, negate the result.
- fldl 20(%esp) // y : abs(result)
- fld %st // y : y : abs(result)
- fabs // |y| : y : abs(result)
- fcompl MO(p63) // y : abs(result)
+ fldl 20(%esp) // y : 2^fract(y*log2(x)) : int(y*log2(x))
+ fld %st // y : y : 2^fract(y*log2(x)) : int(y*log2(x))
+ fabs // |y| : y : 2^fract(y*log2(x)) : int(y*log2(x))
+ fcompl MO(p63) // y : 2^fract(y*log2(x)) : int(y*log2(x))
fnstsw
sahf
- jnc 291f
+ jnc 290f
// We must find out whether y is an odd integer.
- fld %st // y : y : abs(result)
- fistpll (%esp) // y : abs(result)
- fildll (%esp) // int(y) : y : abs(result)
- fucompp // abs(result)
+ fld %st // y : y : 2^fract(y*log2(x)) : int(y*log2(x))
+ fistpll (%esp) // y : 2^fract(y*log2(x)) : int(y*log2(x))
+ fildll (%esp) // int(y) : y : 2^fract(y*log2(x)) : int(y*log2(x))
+ fucompp // 2^fract(y*log2(x)) : int(y*log2(x))
fnstsw
sahf
- jne 292f
+ jne 291f
// OK, the value is an integer, but is it odd?
popl %eax
@@ -235,14 +246,17 @@ ENTRY(__ieee754_pow)
popl %edx
cfi_adjust_cfa_offset (-4)
andb $1, %al
- jz 290f // jump if not odd
+ jz 292f // jump if not odd
// It's an odd integer.
fchs
-290: ret
+ jmp 292f
+
cfi_adjust_cfa_offset (8)
-291: fstp %st(0) // abs(result)
-292: addl $8, %esp
+290: fstp %st(0) // 2^fract(y*log2(x)) : int(y*log2(x))
+291: addl $8, %esp
cfi_adjust_cfa_offset (-8)
+292: fscale // +/- 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x))
+ fstp %st(1) // +/- 2^fract(y*log2(x))*2^int(y*log2(x))
ret
diff --git a/sysdeps/i386/fpu/e_powf.S b/sysdeps/i386/fpu/e_powf.S
index 89d30d8187..02338284f6 100644
--- a/sysdeps/i386/fpu/e_powf.S
+++ b/sysdeps/i386/fpu/e_powf.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of pow function.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -129,12 +129,22 @@ ENTRY(__ieee754_powf)
4: fldl MO(one) // 1 : x
fxch
+ /* If y is even, take the absolute value of x. Otherwise,
+ ensure all intermediate values that might overflow have the
+ sign of x. */
+ testb $1, %dl
+ jnz 6f
+ fabs
+
6: shrl $1, %edx
jnc 5f
fxch
+ fabs
fmul %st(1) // x : ST*x
fxch
-5: fmul %st(0), %st // x*x : ST*x
+5: fld %st // x : x : ST*x
+ fabs // |x| : x : ST*x
+ fmulp // |x|*x : ST*x
testl %edx, %edx
jnz 6b
fstp %st(0) // ST*x
diff --git a/sysdeps/i386/fpu/e_powl.S b/sysdeps/i386/fpu/e_powl.S
index cc6dcd1a88..bdfb5cf635 100644
--- a/sysdeps/i386/fpu/e_powl.S
+++ b/sysdeps/i386/fpu/e_powl.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of pow function.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -151,7 +151,7 @@ ENTRY(__ieee754_powl)
fcompl MO(p3) // y : x
fnstsw
sahf
- jnc 2f
+ jnc 3f
popl %eax
cfi_adjust_cfa_offset (-4)
popl %edx
@@ -166,12 +166,22 @@ ENTRY(__ieee754_powl)
4: fldl MO(one) // 1 : x
fxch
+ /* If y is even, take the absolute value of x. Otherwise,
+ ensure all intermediate values that might overflow have the
+ sign of x. */
+ testb $1, %al
+ jnz 6f
+ fabs
+
6: shrdl $1, %edx, %eax
jnc 5f
fxch
+ fabs
fmul %st(1) // x : ST*x
fxch
-5: fmul %st(0), %st // x*x : ST*x
+5: fld %st // x : x : ST*x
+ fabs // |x| : x : ST*x
+ fmulp // |x|*x : ST*x
shrl $1, %edx
movl %eax, %ecx
orl %edx, %ecx
@@ -198,79 +208,31 @@ ENTRY(__ieee754_powl)
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
-2: // y is a large integer (absolute value at least 8), but
- // may be odd unless at least 1L<<64. So it may be necessary
- // to adjust the sign of a negative result afterwards.
- fxch // x : y
- fabs // |x| : y
- fxch // y : |x|
+2: // y is a large integer (absolute value at least 1L<<63).
// If y has absolute value at least 1L<<78, then any finite
// nonzero x will result in 0 (underflow), 1 or infinity (overflow).
// Saturate y to those bounds to avoid overflow in the calculation
// of y*log2(x).
- fld %st // y : y : |x|
- fabs // |y| : y : |x|
- fcompl MO(p78) // y : |x|
+ fld %st // y : y : x
+ fabs // |y| : y : x
+ fcompl MO(p78) // y : x
fnstsw
sahf
jc 3f
fstp %st(0) // pop y
- fldl MO(p78) // 1L<<78 : |x|
+ fldl MO(p78) // 1L<<78 : x
testb $2, %dl
jz 3f // y > 0
- fchs // -(1L<<78) : |x|
+ fchs // -(1L<<78) : x
.align ALIGNARG(4)
3: /* y is a real number. */
subl $28, %esp
cfi_adjust_cfa_offset (28)
fstpt 12(%esp) // x
fstpt (%esp) // <empty>
- mov %edx, 24(%esp)
call HIDDEN_JUMPTARGET (__powl_helper) // <result>
- mov 24(%esp), %edx
- addl $28, %esp
- cfi_adjust_cfa_offset (-28)
- testb $2, %dh
- jz 292f
- // x is negative. If y is an odd integer, negate the result.
-#ifdef PIC
- LOAD_PIC_REG (cx)
-#endif
- fldt 24(%esp) // y : abs(result)
- fld %st // y : y : abs(result)
- fabs // |y| : y : abs(result)
- fcompl MO(p64) // y : abs(result)
- fnstsw
- sahf
- jnc 291f
- fldl MO(p63) // p63 : y : abs(result)
- fxch // y : p63 : abs(result)
- fprem // y%p63 : p63 : abs(result)
- fstp %st(1) // y%p63 : abs(result)
-
- // We must find out whether y is an odd integer.
- fld %st // y : y : abs(result)
- fistpll (%esp) // y : abs(result)
- fildll (%esp) // int(y) : y : abs(result)
- fucompp // abs(result)
- fnstsw
- sahf
- jne 292f
-
- // OK, the value is an integer, but is it odd?
- popl %eax
- cfi_adjust_cfa_offset (-4)
- popl %edx
- cfi_adjust_cfa_offset (-4)
- andb $1, %al
- jz 290f // jump if not odd
- // It's an odd integer.
- fchs
-290: ret
- cfi_adjust_cfa_offset (8)
-291: fstp %st(0) // abs(result)
-292: addl $8, %esp
- cfi_adjust_cfa_offset (-8)
+ addl $36, %esp
+ cfi_adjust_cfa_offset (-36)
ret
// pow(x,±0) = 1
diff --git a/sysdeps/i386/fpu/e_scalb.S b/sysdeps/i386/fpu/e_scalb.S
index 20d489efde..6a01aa64d6 100644
--- a/sysdeps/i386/fpu/e_scalb.S
+++ b/sysdeps/i386/fpu/e_scalb.S
@@ -65,8 +65,10 @@ ENTRY(__ieee754_scalb)
fstp %st
fstp %st
andl $0x80000000, %edx
+ andl $0x0228, %eax
+ cmpl $0x0028, %eax
+ je 4f
andl $8, %eax
- jnz 4f
shrl $27, %edx
addl %edx, %eax
fldl MOX(zero_nan, %eax, 1)
diff --git a/sysdeps/i386/fpu/e_scalbf.S b/sysdeps/i386/fpu/e_scalbf.S
index b6dd02122a..12b25159ac 100644
--- a/sysdeps/i386/fpu/e_scalbf.S
+++ b/sysdeps/i386/fpu/e_scalbf.S
@@ -67,8 +67,10 @@ ENTRY(__ieee754_scalbf)
fstp %st
fstp %st
andl $0x80000000, %edx
+ andl $0x0228, %eax
+ cmpl $0x0028, %eax
+ je 4f
andl $8, %eax
- jnz 4f
shrl $27, %edx
addl %edx, %eax
fldl MOX(zero_nan, %eax, 1)
diff --git a/sysdeps/i386/fpu/e_scalbl.S b/sysdeps/i386/fpu/e_scalbl.S
index 83f17b233b..d10b22ea83 100644
--- a/sysdeps/i386/fpu/e_scalbl.S
+++ b/sysdeps/i386/fpu/e_scalbl.S
@@ -67,8 +67,10 @@ ENTRY(__ieee754_scalbl)
fstp %st
fstp %st
andl $0x8000, %edx
+ andl $0x0228, %eax
+ cmpl $0x0028, %eax
+ je 4f
andl $8, %eax
- jnz 4f
shrl $11, %edx
addl %edx, %eax
fldl MOX(zero_nan, %eax, 1)
diff --git a/sysdeps/i386/fpu/fclrexcpt.c b/sysdeps/i386/fpu/fclrexcpt.c
index 8e4d29f055..096d974ce4 100644
--- a/sysdeps/i386/fpu/fclrexcpt.c
+++ b/sysdeps/i386/fpu/fclrexcpt.c
@@ -1,5 +1,5 @@
/* Clear given exceptions in current floating-point environment.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/fedisblxcpt.c b/sysdeps/i386/fpu/fedisblxcpt.c
index b4e9c6c7a0..d048ea41fe 100644
--- a/sysdeps/i386/fpu/fedisblxcpt.c
+++ b/sysdeps/i386/fpu/fedisblxcpt.c
@@ -1,5 +1,5 @@
/* Disable floating-point exceptions.
- Copyright (C) 1999-2014 Free Software Foundation, Inc.
+ Copyright (C) 1999-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999.
diff --git a/sysdeps/i386/fpu/feenablxcpt.c b/sysdeps/i386/fpu/feenablxcpt.c
index 14221fa215..ffc72b7a6c 100644
--- a/sysdeps/i386/fpu/feenablxcpt.c
+++ b/sysdeps/i386/fpu/feenablxcpt.c
@@ -1,5 +1,5 @@
/* Enable floating-point exceptions.
- Copyright (C) 1999-2014 Free Software Foundation, Inc.
+ Copyright (C) 1999-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999.
diff --git a/sysdeps/i386/fpu/fegetenv.c b/sysdeps/i386/fpu/fegetenv.c
index 8dbdb5787a..59b4292612 100644
--- a/sysdeps/i386/fpu/fegetenv.c
+++ b/sysdeps/i386/fpu/fegetenv.c
@@ -1,5 +1,5 @@
/* Store current floating-point environment.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -18,6 +18,9 @@
<http://www.gnu.org/licenses/>. */
#include <fenv.h>
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
int
__fegetenv (fenv_t *envp)
@@ -28,6 +31,9 @@ __fegetenv (fenv_t *envp)
would block all exceptions. */
__asm__ ("fldenv %0" : : "m" (*envp));
+ if ((GLRO(dl_hwcap) & HWCAP_I386_XMM) != 0)
+ __asm__ ("stmxcsr %0" : "=m" (envp->__eip));
+
/* Success. */
return 0;
}
@@ -38,5 +44,6 @@ strong_alias (__fegetenv, __old_fegetenv)
compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1);
#endif
+libm_hidden_def (__fegetenv)
libm_hidden_ver (__fegetenv, fegetenv)
versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2);
diff --git a/sysdeps/i386/fpu/fegetexcept.c b/sysdeps/i386/fpu/fegetexcept.c
index 998eb7aa88..b09d7ea38b 100644
--- a/sysdeps/i386/fpu/fegetexcept.c
+++ b/sysdeps/i386/fpu/fegetexcept.c
@@ -1,5 +1,5 @@
/* Get enabled floating-point exceptions.
- Copyright (C) 1999-2014 Free Software Foundation, Inc.
+ Copyright (C) 1999-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999.
diff --git a/sysdeps/i386/fpu/fegetround.c b/sysdeps/i386/fpu/fegetround.c
index 27b9ac338a..1662e2e66e 100644
--- a/sysdeps/i386/fpu/fegetround.c
+++ b/sysdeps/i386/fpu/fegetround.c
@@ -1,5 +1,5 @@
/* Return current rounding direction.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -20,7 +20,7 @@
#include <fenv.h>
int
-fegetround (void)
+__fegetround (void)
{
int cw;
@@ -28,4 +28,6 @@ fegetround (void)
return cw & 0xc00;
}
-libm_hidden_def (fegetround)
+libm_hidden_def (__fegetround)
+weak_alias (__fegetround, fegetround)
+libm_hidden_weak (fegetround)
diff --git a/sysdeps/i386/fpu/feholdexcpt.c b/sysdeps/i386/fpu/feholdexcpt.c
index d475ca850c..f6db2badbb 100644
--- a/sysdeps/i386/fpu/feholdexcpt.c
+++ b/sysdeps/i386/fpu/feholdexcpt.c
@@ -1,5 +1,5 @@
/* Store current floating-point environment and clear exceptions.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -23,7 +23,7 @@
#include <dl-procinfo.h>
int
-feholdexcept (fenv_t *envp)
+__feholdexcept (fenv_t *envp)
{
/* Store the environment. Recall that fnstenv has a side effect of
masking all exceptions. Then clear all exceptions. */
@@ -35,14 +35,16 @@ feholdexcept (fenv_t *envp)
unsigned int xwork;
/* Get the current control word. */
- __asm__ ("stmxcsr %0" : "=m" (*&xwork));
+ __asm__ ("stmxcsr %0" : "=m" (envp->__eip));
/* Set all exceptions to non-stop and clear them. */
- xwork = (xwork | 0x1f80) & ~0x3f;
+ xwork = (envp->__eip | 0x1f80) & ~0x3f;
__asm__ ("ldmxcsr %0" : : "m" (*&xwork));
}
return 0;
}
-libm_hidden_def (feholdexcept)
+libm_hidden_def (__feholdexcept)
+weak_alias (__feholdexcept, feholdexcept)
+libm_hidden_weak (feholdexcept)
diff --git a/sysdeps/i386/fpu/fenv_private.h b/sysdeps/i386/fpu/fenv_private.h
index 3998387c57..e20e1f1662 100644
--- a/sysdeps/i386/fpu/fenv_private.h
+++ b/sysdeps/i386/fpu/fenv_private.h
@@ -482,6 +482,7 @@ libc_feupdateenv_387_ctx (struct rm_ctx *ctx)
#else
# define libc_feholdexcept_setround_ctx libc_feholdexcept_setround_387_ctx
# define libc_feupdateenv_ctx libc_feupdateenv_387_ctx
+# define libc_feholdsetround_ctx libc_feholdsetround_387_ctx
# define libc_feresetround_ctx libc_feresetround_387_ctx
#endif /* __SSE2_MATH__ */
diff --git a/sysdeps/i386/fpu/fesetenv.c b/sysdeps/i386/fpu/fesetenv.c
index 95b2f0a1ab..9566e092ca 100644
--- a/sysdeps/i386/fpu/fesetenv.c
+++ b/sysdeps/i386/fpu/fesetenv.c
@@ -1,5 +1,5 @@
/* Install given floating-point environment.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -19,6 +19,9 @@
#include <fenv.h>
#include <assert.h>
+#include <unistd.h>
+#include <ldsodefs.h>
+#include <dl-procinfo.h>
int
@@ -40,21 +43,11 @@ __fesetenv (const fenv_t *envp)
temp.__control_word |= FE_ALL_EXCEPT;
temp.__control_word &= ~FE_TOWARDZERO;
temp.__status_word &= ~FE_ALL_EXCEPT;
- temp.__eip = 0;
- temp.__cs_selector = 0;
- temp.__opcode = 0;
- temp.__data_offset = 0;
- temp.__data_selector = 0;
}
else if (envp == FE_NOMASK_ENV)
{
temp.__control_word &= ~(FE_ALL_EXCEPT | FE_TOWARDZERO);
temp.__status_word &= ~FE_ALL_EXCEPT;
- temp.__eip = 0;
- temp.__cs_selector = 0;
- temp.__opcode = 0;
- temp.__data_offset = 0;
- temp.__data_selector = 0;
}
else
{
@@ -63,15 +56,42 @@ __fesetenv (const fenv_t *envp)
& (FE_ALL_EXCEPT | FE_TOWARDZERO));
temp.__status_word &= ~FE_ALL_EXCEPT;
temp.__status_word |= envp->__status_word & FE_ALL_EXCEPT;
- temp.__eip = envp->__eip;
- temp.__cs_selector = envp->__cs_selector;
- temp.__opcode = envp->__opcode;
- temp.__data_offset = envp->__data_offset;
- temp.__data_selector = envp->__data_selector;
}
+ temp.__eip = 0;
+ temp.__cs_selector = 0;
+ temp.__opcode = 0;
+ temp.__data_offset = 0;
+ temp.__data_selector = 0;
__asm__ ("fldenv %0" : : "m" (temp));
+ if ((GLRO(dl_hwcap) & HWCAP_I386_XMM) != 0)
+ {
+ unsigned int mxcsr;
+ __asm__ ("stmxcsr %0" : "=m" (mxcsr));
+
+ if (envp == FE_DFL_ENV)
+ {
+ /* Set mask for SSE MXCSR. */
+ mxcsr |= (FE_ALL_EXCEPT << 7);
+ /* Set rounding to FE_TONEAREST. */
+ mxcsr &= ~0x6000;
+ mxcsr |= (FE_TONEAREST << 3);
+ }
+ else if (envp == FE_NOMASK_ENV)
+ {
+ /* Do not mask exceptions. */
+ mxcsr &= ~(FE_ALL_EXCEPT << 7);
+ /* Set rounding to FE_TONEAREST. */
+ mxcsr &= ~0x6000;
+ mxcsr |= (FE_TONEAREST << 3);
+ }
+ else
+ mxcsr = envp->__eip;
+
+ __asm__ ("ldmxcsr %0" : : "m" (mxcsr));
+ }
+
/* Success. */
return 0;
}
@@ -82,5 +102,6 @@ strong_alias (__fesetenv, __old_fesetenv)
compat_symbol (libm, __old_fesetenv, fesetenv, GLIBC_2_1);
#endif
+libm_hidden_def (__fesetenv)
libm_hidden_ver (__fesetenv, fesetenv)
versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2);
diff --git a/sysdeps/i386/fpu/fesetround.c b/sysdeps/i386/fpu/fesetround.c
index 73645dd8e6..69f8b3efbd 100644
--- a/sysdeps/i386/fpu/fesetround.c
+++ b/sysdeps/i386/fpu/fesetround.c
@@ -1,5 +1,5 @@
/* Set current rounding direction.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -23,7 +23,7 @@
#include <dl-procinfo.h>
int
-fesetround (int round)
+__fesetround (int round)
{
unsigned short int cw;
@@ -49,4 +49,6 @@ fesetround (int round)
return 0;
}
-libm_hidden_def (fesetround)
+libm_hidden_def (__fesetround)
+weak_alias (__fesetround, fesetround)
+libm_hidden_weak (fesetround)
diff --git a/sysdeps/i386/fpu/feupdateenv.c b/sysdeps/i386/fpu/feupdateenv.c
index d557f11464..de461a4d51 100644
--- a/sysdeps/i386/fpu/feupdateenv.c
+++ b/sysdeps/i386/fpu/feupdateenv.c
@@ -1,5 +1,5 @@
/* Install given floating-point environment and raise exceptions.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -38,7 +38,7 @@ __feupdateenv (const fenv_t *envp)
temp = (temp | xtemp) & FE_ALL_EXCEPT;
/* Install new environment. */
- fesetenv (envp);
+ __fesetenv (envp);
/* Raise the saved exception. Incidently for us the implementation
defined format of the values in objects of type fexcept_t is the
@@ -55,5 +55,6 @@ strong_alias (__feupdateenv, __old_feupdateenv)
compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1);
#endif
+libm_hidden_def (__feupdateenv)
libm_hidden_ver (__feupdateenv, feupdateenv)
versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2);
diff --git a/sysdeps/i386/fpu/fgetexcptflg.c b/sysdeps/i386/fpu/fgetexcptflg.c
index faa5926915..7adb898cab 100644
--- a/sysdeps/i386/fpu/fgetexcptflg.c
+++ b/sysdeps/i386/fpu/fgetexcptflg.c
@@ -1,5 +1,5 @@
/* Store current representation for exceptions.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/fraiseexcpt.c b/sysdeps/i386/fpu/fraiseexcpt.c
index 076477fc5d..30bbe6f489 100644
--- a/sysdeps/i386/fpu/fraiseexcpt.c
+++ b/sysdeps/i386/fpu/fraiseexcpt.c
@@ -1,5 +1,5 @@
/* Raise given exceptions.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -119,5 +119,6 @@ strong_alias (__feraiseexcept, __old_feraiseexcept)
compat_symbol (libm, __old_feraiseexcept, feraiseexcept, GLIBC_2_1);
#endif
+libm_hidden_def (__feraiseexcept)
libm_hidden_ver (__feraiseexcept, feraiseexcept)
versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2);
diff --git a/sysdeps/i386/fpu/fsetexcptflg.c b/sysdeps/i386/fpu/fsetexcptflg.c
index 73e358bab6..4b8bb69a19 100644
--- a/sysdeps/i386/fpu/fsetexcptflg.c
+++ b/sysdeps/i386/fpu/fsetexcptflg.c
@@ -1,5 +1,5 @@
/* Set floating-point environment exception handling.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/ftestexcept.c b/sysdeps/i386/fpu/ftestexcept.c
index 61696bb0a0..ca0dc91bc0 100644
--- a/sysdeps/i386/fpu/ftestexcept.c
+++ b/sysdeps/i386/fpu/ftestexcept.c
@@ -1,5 +1,5 @@
/* Test exception in current environment.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index 4a921b1a61..003be8e569 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -1,6998 +1,463 @@
# Begin of automatic generation
-# acos
-Test "acos (0xcp-4)":
-ildouble: 1
-ldouble: 1
-
-# acos_downward
-Test "acos_downward (0xf.fffffff8p-4)":
-ildouble: 1
-ldouble: 1
-Test "acos_downward (0xf.ffffffffffff8p-4)":
-ildouble: 1
-ldouble: 1
-Test "acos_downward (0xf.fffffffffffffffp-4)":
-ildouble: 1
-ldouble: 1
-Test "acos_downward (0xf.fffffffffffp-4)":
-ildouble: 1
-ldouble: 1
-Test "acos_downward (0xf.fffffp-4)":
-ildouble: 1
-ldouble: 1
-
-# acos_tonearest
-Test "acos_tonearest (0xcp-4)":
+# Maximal error of functions:
+Function: "acos":
ildouble: 1
ldouble: 1
-# acos_towardzero
-Test "acos_towardzero (0xf.fffffff8p-4)":
-ildouble: 1
-ldouble: 1
-Test "acos_towardzero (0xf.ffffffffffff8p-4)":
-ildouble: 1
-ldouble: 1
-Test "acos_towardzero (0xf.fffffffffffffffp-4)":
-ildouble: 1
-ldouble: 1
-Test "acos_towardzero (0xf.fffffffffffp-4)":
-ildouble: 1
-ldouble: 1
-Test "acos_towardzero (0xf.fffffp-4)":
-ildouble: 1
-ldouble: 1
+Function: "acos_downward":
+ildouble: 2
+ldouble: 2
-# acos_upward
-Test "acos_upward (0xcp-4)":
-ildouble: 1
-ldouble: 1
-Test "acos_upward (0xf.fffffffffffffffp-4)":
-ildouble: 1
-ldouble: 1
+Function: "acos_towardzero":
+ildouble: 2
+ldouble: 2
-# asin_downward
-Test "asin_downward (-0x4p-1024)":
-double: 1
-idouble: 1
-Test "asin_downward (-0x4p-1076)":
-double: 1
-idouble: 1
-Test "asin_downward (-0x4p-128)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_downward (-0x8p-152)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "asin_downward (-0x8p-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_downward (-0x8p-972)":
-double: 1
-idouble: 1
-Test "asin_downward (-0xf.fffffff8p-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_downward (-0xf.ffffffffffff8p-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_downward (-0xf.fffffffffffffffp-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_downward (-0xf.fffffffffffp-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_downward (-0xf.fffffp-4)":
-ildouble: 1
-ldouble: 1
+Function: "acos_upward":
+ildouble: 2
+ldouble: 2
-# asin_towardzero
-Test "asin_towardzero (-0x2p-16384)":
-ildouble: 1
-ldouble: 1
-Test "asin_towardzero (-0x4p-1024)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "asin_towardzero (-0x4p-1076)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "asin_towardzero (-0x4p-128)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "asin_towardzero (-0x4p-16384)":
-ildouble: 1
-ldouble: 1
-Test "asin_towardzero (-0x8p-152)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "asin_towardzero (-0x8p-16448)":
-ildouble: 1
-ldouble: 1
-Test "asin_towardzero (-0x8p-972)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
+Function: "acosh":
+ildouble: 4
+ldouble: 2
-# asin_upward
-Test "asin_upward (-0x2p-16384)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0x4p-1024)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0x4p-1076)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0x4p-128)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0x4p-16384)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0x8p-152)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0x8p-16448)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0x8p-972)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0xf.fffffff8p-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0xf.ffffffffffff8p-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0xf.fffffffffffffffp-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0xf.fffffffffffp-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (-0xf.fffffp-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (0x2p-16384)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (0x4p-1024)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "asin_upward (0x4p-1076)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "asin_upward (0x4p-128)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "asin_upward (0x4p-16384)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (0x8p-152)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "asin_upward (0x8p-16448)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (0x8p-4)":
-ildouble: 1
-ldouble: 1
-Test "asin_upward (0x8p-972)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
+Function: "acosh_downward":
+ildouble: 6
+ldouble: 4
-# asinh
-Test "asinh (0x1p+100)":
-ldouble: 1
-Test "asinh (0xf.424p+16)":
-ildouble: 1
-ldouble: 1
+Function: "acosh_towardzero":
+ildouble: 6
+ldouble: 4
-# atan2
-Test "atan2 (-0x1.effe81f852716ffep-8, -0x7.57d1de0e5124664p-12)":
-ildouble: 1
-ldouble: 1
-Test "atan2 (-0x1.effe81f852717p-8, -0x7.57d1ep-12)":
-ildouble: 1
-ldouble: 1
+Function: "acosh_upward":
+ildouble: 4
+ldouble: 3
-# atanh
-Test "atanh (-0xcp-4)":
-ildouble: 2
-ldouble: 1
-Test "atanh (0x4p-12)":
+Function: "asin":
ildouble: 1
-Test "atanh (0x4p-4)":
-ldouble: 1
-Test "atanh (0x8p-8)":
-ildouble: 1
-Test "atanh (0xcp-4)":
-ildouble: 2
ldouble: 1
-# cacos
-Test "Imaginary part of: cacos (+0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (+0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (+0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (+0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (+0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (+0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0.0 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.0 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.0 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.0 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.0 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.0 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (-0.25 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0.25 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (-0.25 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0.25 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0.5 + 0x1p-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.5 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0.5 - 0x1p-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0.5 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x0.ffffffp0 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x0.ffffffp0 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.0000000000000002p0 + 0x1p-63 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: cacos (-0x1.0000000000000002p0 - 0x1p-63 i)":
+Function: "asin_downward":
ildouble: 2
ldouble: 2
-Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.0000000000001p0 + 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.0000000000001p0 - 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-23 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1p-23 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1p-52 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1p-52 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1p-63 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-0x1p-63 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (-1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-1.0 + 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (-1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (-1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-1.0 - 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-1.5 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-1.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-1.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-1.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-1.5 - 0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-1.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-1.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (-1.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0.0 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0.0 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0.0 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0.0 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0.0 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0.0 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0.25 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0.25 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0.5 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0.5 + 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 + 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacos (0.5 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 + 0x1p-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0.5 + 0x1p-63 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0.5 - 0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0.5 - 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0.5 - 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacos (0.5 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 - 0x1p-52 i)":
-double: 1
-idouble: 1
+
+Function: "asin_towardzero":
ildouble: 1
ldouble: 1
-Test "Real part of: cacos (0.5 - 0x1p-63 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0.5 - 1.0 i)":
+
+Function: "asin_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: cacos (0.75 + 1.25 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x0.ffffffp0 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x0.ffffffp0 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacos (0x1.0000000000000002p0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.0000000000000002p0 + 0x1p-63 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: cacos (0x1.0000000000000002p0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.0000000000000002p0 - 0x1p-63 i)":
+
+Function: "asinh":
ildouble: 2
ldouble: 2
-Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0x1.0000000000001p0 + 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.0000000000001p0 + 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (0x1.0000000000001p0 - 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.0000000000001p0 - 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-129 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp-129 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-129 + 1.5 i)":
+
+Function: "asinh_downward":
double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-129 - 0.5 i)":
float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-129 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp-129 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp-129 - 1.0 i)":
+ildouble: 5
+ldouble: 5
+
+Function: "asinh_towardzero":
double: 1
float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp-30 + 1.0 i)":
+ildouble: 4
+ldouble: 4
+
+Function: "asinh_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 5
+ldouble: 4
+
+Function: "atan":
ildouble: 1
ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+
+Function: "atan2":
ildouble: 1
ldouble: 1
-Test "Imaginary part of: cacos (0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (0x1p-23 + 0.5 i)":
+
+Function: "atan2_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Imaginary part of: cacos (0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: cacos (0x1p-23 - 0.5 i)":
+
+Function: "atan2_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Imaginary part of: cacos (0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: cacos (0x1p-52 + 0.5 i)":
+
+Function: "atan2_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: cacos (0x1p-52 - 0.5 i)":
+
+Function: "atan_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: cacos (0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1p-63 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (0x1p-63 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (1.0 + 0x1.fp-10 i)":
+
+Function: "atan_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Real part of: cacos (1.0 + 0x1.fp-30 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (1.0 + 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacos (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacos (1.0 - 0x1.fp-10 i)":
+
+Function: "atan_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Real part of: cacos (1.0 - 0x1.fp-30 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacos (1.0 - 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (1.5 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (1.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (1.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (1.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (1.5 - 0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (1.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (1.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacos (1.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-# cacosh
-Test "Real part of: cacosh (+0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (+0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (+0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (+0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (+0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (+0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0 - 1.0 i)":
+Function: "atanh":
+ildouble: 3
+ldouble: 3
+
+Function: "atanh_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Real part of: cacosh (-0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.0 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0.0 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0.0 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0.0 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0.0 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0.0 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0.25 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (-0.25 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.25 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (-0.25 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0.5 + 0x1p-23 i)":
+ildouble: 3
+ldouble: 4
+
+Function: "atanh_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Real part of: cacosh (-0.5 + 0x1p-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0.5 + 1.0 i)":
-double: 1
-float: 1
+ildouble: 4
+ldouble: 3
+
+Function: "atanh_upward":
idouble: 1
ifloat: 1
+ildouble: 5
+ldouble: 5
+
+Function: "cabs":
ildouble: 1
ldouble: 1
-Test "Real part of: cacosh (-0.5 - 0x1.fp-1025 i)":
+
+Function: "cabs_downward":
ildouble: 1
ldouble: 1
-Test "Real part of: cacosh (-0.5 - 0x1.fp-129 i)":
+
+Function: "cabs_towardzero":
ildouble: 1
ldouble: 1
-Test "Real part of: cacosh (-0.5 - 0x1.fp-16385 i)":
+
+Function: "cabs_upward":
ildouble: 1
ldouble: 1
-Test "Real part of: cacosh (-0.5 - 0x1p-23 i)":
+
+Function: Real part of "cacos":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Real part of: cacosh (-0.5 - 0x1p-52 i)":
-double: 1
-idouble: 1
ildouble: 1
ldouble: 1
-Test "Real part of: cacosh (-0.5 - 1.0 i)":
+
+Function: Imaginary part of "cacos":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x0.ffffffp0 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x0.ffffffp0 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.0000000000000002p0 + 0x1p-63 i)":
ildouble: 2
ldouble: 2
-Test "Real part of: cacosh (-0x1.0000000000000002p0 - 0x1p-63 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: cacosh (-0x1.0000000000001p0 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.0000000000001p0 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.0000000000001p0 + 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.0000000000001p0 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.0000000000001p0 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.0000000000001p0 - 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-129 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.fp-129 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-129 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.fp-129 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-23 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1p-23 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (-0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1p-52 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1p-52 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1p-63 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-0x1p-63 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (-1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-1.0 + 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (-1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (-1.0 - 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-1.5 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-1.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-1.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-1.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-1.5 - 0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-1.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-1.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (-1.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0.0 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0.0 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0.0 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0.0 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0.0 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0.0 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0.25 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0.25 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0.5 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0.5 + 0x1p-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 + 0x1p-63 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1p-105 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1p-112 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0.5 - 0x1p-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0.5 - 0x1p-63 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0.5 - 1.0 i)":
+
+Function: Real part of "cacos_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0.75 + 1.25 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 + 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cacosh (0x0.fffffffffffff8p0 - 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x0.ffffffp0 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x0.ffffffp0 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.0000000000000002p0 + 0x1p-63 i)":
ildouble: 2
ldouble: 2
-Test "Imaginary part of: cacosh (0x1.0000000000000002p0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.0000000000000002p0 - 0x1p-63 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: cacosh (0x1.0000000000000002p0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.0000000000001p0 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.0000000000001p0 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0x1.0000000000001p0 + 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.0000000000001p0 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.0000000000001p0 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (0x1.0000000000001p0 - 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-129 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp-129 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-129 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp-129 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-23 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1p-23 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: cacosh (0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1p-52 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1p-52 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1p-63 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (0x1p-63 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (1.0 + 0x1.fp-10 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (1.0 + 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (1.0 + 0x1.fp-30 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cacosh (1.0 - 0x1.fp-10 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (1.0 - 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cacosh (1.0 - 0x1.fp-30 i)":
-double: 1
-idouble: 1
-Test "Real part of: cacosh (1.5 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (1.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (1.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (1.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (1.5 - 0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (1.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (1.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cacosh (1.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-# casin
-Test "Imaginary part of: casin (+0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (+0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (+0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (+0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (+0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (+0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0.0 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.0 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.0 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.0 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.0 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.0 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.25 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.25 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0.5 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0.5 + 0x1p-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0.5 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.5 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0.5 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0.5 - 0x1p-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0.5 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0.5 - 1.0 i)":
+Function: Imaginary part of "cacos_downward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: Real part of "cacos_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x0.ffffffp0 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x0.ffffffp0 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.0000000000000002p0 + 0x1p-63 i)":
ildouble: 2
ldouble: 2
-Test "Imaginary part of: casin (-0x1.0000000000000002p0 - 0x1p-63 i)":
+
+Function: Imaginary part of "cacos_towardzero":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: Real part of "cacos_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
ildouble: 2
ldouble: 2
-Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.0000000000001p0 + 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.0000000000001p0 - 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (-0x1.fp-129 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-129 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-129 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (-0x1.fp-129 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-129 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-129 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0x1.fp-30 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0x1.fp-30 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (-0x1p-23 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-23 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0x1p-23 + 0x1.000002p0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casin (-0x1p-23 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-23 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0x1p-23 - 0x1.000002p0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (-0x1p-52 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0x1p-52 + 0x1.0000000000001p0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1p-52 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0x1p-52 - 0x1.0000000000001p0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (-0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0x1p-63 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1p-63 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0x1p-63 + 0x1.0000000000000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0x1p-63 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-0x1p-63 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-0x1p-63 - 0x1.0000000000000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.0 + 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (-1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.0 - 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.5 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.5 - 0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (-1.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.0 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.0 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.0 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.0 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.0 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.0 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.25 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.25 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0.5 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0.5 + 0x1p-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0.5 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.5 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0.5 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0.5 - 0x1p-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0.5 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0.5 - 1.0 i)":
+
+Function: Imaginary part of "cacos_upward":
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
+ildouble: 5
+ldouble: 5
+
+Function: Real part of "cacosh":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0.75 + 1.25 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0.75 + 1.25 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x0.fffffffffffff8p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x0.fffffffffffff8p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x0.ffffffp0 + 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x0.ffffffp0 - 0x1p-23 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.0000000000000002p0 + 0x1p-63 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: casin (0x1.0000000000000002p0 - 0x1p-63 i)":
ildouble: 2
ldouble: 2
-Test "Imaginary part of: casin (0x1.0000000000001p0 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.0000000000001p0 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.0000000000001p0 + 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.0000000000001p0 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.0000000000001p0 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.0000000000001p0 - 0x1p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-10 + 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-10 - 1.0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-100 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-100 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-1000 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-1000 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-1025 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-1025 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-1025 - 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-1025 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-129 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (0x1.fp-129 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-129 + 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-129 + 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-129 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-129 + 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-129 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (0x1.fp-129 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-129 - 0x1.000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-129 - 0x1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-129 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1.fp-129 - 1.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0x1.fp-30 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-30 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0x1.fp-30 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp-30 - 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1p-105 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-105 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-112 + 0.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-112 - 0.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casin (0x1p-23 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-23 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0x1p-23 + 0x1.000002p0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casin (0x1p-23 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-23 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0x1p-23 - 0x1.000002p0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0x1p-52 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0x1p-52 + 0x1.0000000000001p0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1p-52 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0x1p-52 - 0x1.0000000000001p0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casin (0x1p-63 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0x1p-63 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1p-63 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0x1p-63 + 0x1.0000000000000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1p-63 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0x1p-63 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (0x1p-63 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (0x1p-63 - 0x1.0000000000000002p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.0 + 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.0 + 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casin (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.0 - 0.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.0 - 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.5 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.5 + 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.5 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.5 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.5 - 0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.5 - 0x1.fp-1025 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.5 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casin (1.5 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-# casinh
-Test "Real part of: casinh (+0 + 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (+0 - 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0 + 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0 - 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0.0 + 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0.0 - 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0.5 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casinh (-0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 + 0x1p-52 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0.5 + 0x1p-63 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0.5 - 0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casinh (-0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-0.5 - 0x1p-52 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0.5 - 0x1p-63 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x0.ffffffp0 + 0x1p-23 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x0.ffffffp0 - 0x1p-23 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0x1.0000000000000002p0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0x1.0000000000000002p0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0x1.0000000000001p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (-0x1.0000000000001p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1.000002p0 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.000002p0 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0x1.000002p0 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-0x1.000002p0 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.000002p0 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-0x1.000002p0 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-0x1.fp-1025 + 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-1025 + 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-1025 + 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-1025 - 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-1025 - 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-1025 - 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-129 + 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-129 + 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-129 - 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-129 - 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-16385 + 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-16385 + 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-16385 - 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-16385 - 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-30 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1.fp-30 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-23 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-23 + 0.5 i)":
+Function: Imaginary part of "cacosh":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Imaginary part of: casinh (-0x1p-23 + 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-23 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-23 - 0.0 i)":
ildouble: 1
ldouble: 1
-Test "Real part of: casinh (-0x1p-23 - 0.5 i)":
+
+Function: Real part of "cacosh_downward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "cacosh_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Imaginary part of: casinh (-0x1p-23 - 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-23 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-52 + 0.5 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-52 + 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-52 + 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-52 - 0.5 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-52 - 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-0x1p-52 - 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-63 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-63 + 0x1.0000000000000002p0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: casinh (-0x1p-63 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-0x1p-63 - 0x1.0000000000000002p0 i)":
ildouble: 2
ldouble: 2
-Test "Real part of: casinh (-1.0 + +0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 + 0.25 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-1.0 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-1.0 + 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-10 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-100 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-129 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 + 0x1.fp-30 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-1.0 + 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-1.0 - 0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 - 0.25 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-1.0 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-1.0 - 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-10 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-100 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-129 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (-1.0 - 0x1.fp-30 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (-1.0 - 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (-1.5 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.5 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.5 - 0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.5 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-1.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (-2 - 3 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0.0 + 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0.0 - 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0.5 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0.5 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 + 0x1p-52 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0.5 + 0x1p-63 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0.5 + 1.0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0.5 - 0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1.fp-129 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1p-105 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1p-112 i)":
-float: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0.5 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (0.5 - 0x1p-52 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0.5 - 0x1p-63 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0.5 - 1.0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0.75 + 1.25 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0.75 + 1.25 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0x0.ffffffffffffffffp0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0x1.fp-16385 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0x0.ffffffffffffffffp0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x0.ffffffp0 + 0x1p-23 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x0.ffffffp0 - 0x1p-23 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0x1.0000000000000002p0 + 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0x1.0000000000000002p0 - 0x1p-63 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0x1.0000000000001p0 + 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: casinh (0x1.0000000000001p0 - 0x1p-52 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1.000002p0 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.000002p0 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0x1.000002p0 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0x1.000002p0 + 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (0x1.000002p0 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.000002p0 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0x1.000002p0 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0x1.000002p0 - 0x1p-23 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (0x1.fp-1025 + 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-1025 + 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-1025 + 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-1025 - 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-1025 - 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-1025 - 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-129 + 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-129 + 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-129 - 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-129 - 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-16385 + 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-16385 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-16385 + 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-16385 - 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-16385 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-16385 - 1.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-30 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp-30 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1.fp1023 + 0x1.fp1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1.fp127 + 0x1.fp127 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-23 + 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-23 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casinh (0x1p-23 + 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-23 + 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-23 + 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-23 - 0.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-23 - 0.5 i)":
+
+Function: Real part of "cacosh_towardzero":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "cacosh_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Imaginary part of: casinh (0x1p-23 - 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-23 - 0x0.ffffffp0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-23 - 0x1.fp-129 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-52 + 0.5 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-52 + 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-52 + 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-52 - 0.5 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-52 - 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (0x1p-52 - 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-63 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-63 + 0x1.0000000000000002p0 i)":
ildouble: 2
ldouble: 2
-Test "Real part of: casinh (0x1p-63 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (0x1p-63 - 0x1.0000000000000002p0 i)":
+
+Function: Real part of "cacosh_upward":
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "cacosh_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
ildouble: 2
ldouble: 2
-Test "Real part of: casinh (1.0 + +0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 + 0.25 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (1.0 + 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (1.0 + 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-10 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-100 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-129 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 + 0x1.fp-30 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (1.0 + 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (1.0 - 0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 - 0.25 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (1.0 - 0.5 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (1.0 - 0.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-10 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-100 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-129 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: casinh (1.0 - 0x1.fp-30 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (1.0 - 0x1.fp-30 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: casinh (1.5 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.5 + 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.5 + 0x1.fp-129 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.5 - 0 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.5 - 0x1.fp-1025 i)":
-double: 1
-idouble: 1
-Test "Real part of: casinh (1.5 - 0x1.fp-129 i)":
-double: 1
-idouble: 1
-# catan
-Test "Imaginary part of: catan (-0x0.fffffffffffff8p0 + 0x1p-27 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (-0x0.ffffffffffffffffp0 + 0x1p-33 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x0.ffffffp0 + 0x1p-13 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: catan (-0x1.0000000000001p0 + 0x1p-27 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1.000002p0 - 0x1p-13 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (-0x1.3p-73 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1.3p-73 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1.fp1023 - 0x1.fp1023 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1.fp127 + 0x1.fp127 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1.fp127 - 0x1.fp127 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1p-1020 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1p-1020 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1p-1022 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1p-1022 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1p-16382 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1p-16382 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1p-33 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1p-33 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1p-64 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-0x1p-64 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-1.0 + 0x1p-64 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-1.0 - 0x1p-13 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-1.0 - 0x1p-64 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (-2 - 3 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: catan (0x0.fffffffffffff8p0 + 0x1p-27 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (0x0.ffffffffffffffffp0 + 0x1p-33 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x0.ffffffp0 + 0x1p-13 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: catan (0x1.0000000000001p0 + 0x1p-27 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1.000002p0 - 0x1p-13 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: catan (0x1.3p-73 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1.3p-73 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1.fp1023 - 0x1.fp1023 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1.fp127 + 0x1.fp127 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1.fp127 - 0x1.fp127 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1p-1020 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1p-1020 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1p-1022 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1p-1022 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1p-16382 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1p-16382 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1p-33 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1p-33 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1p-64 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (0x1p-64 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (1.0 + 0x1p-64 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (1.0 - 0x1p-13 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catan (1.0 - 0x1p-64 i)":
+Function: "carg":
ildouble: 1
ldouble: 1
-# catanh
-Test "Real part of: catanh (-0x0.ffffffffffffffffp0 + 0x1p-1022 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x0.ffffffffffffffffp0 + 0x1p-16382 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x0.ffffffffffffffffp0 + 0x1p-33 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x0.ffffffffffffffffp0 - 0x1p-1022 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x0.ffffffffffffffffp0 - 0x1p-16382 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x0.ffffffffffffffffp0 - 0x1p-33 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x1.fp1023 - 0x1.fp1023 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x1.fp127 + 0x1.fp127 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x1.fp127 - 0x1.fp127 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x1p-13 + 0x1.000002p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (-0x1p-13 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x1p-13 - 0x1.000002p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (-0x1p-13 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x1p-64 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-0x1p-64 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-1.0 + 0x1.3p-73 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-1.0 + 0x1p-1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-1.0 + 0x1p-64 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-1.0 - 0x1.3p-73 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-1.0 - 0x1p-1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-1.0 - 0x1p-64 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (-2 - 3 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (0.75 + 1.25 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x0.ffffffffffffffffp0 + 0x1p-1022 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x0.ffffffffffffffffp0 + 0x1p-16382 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x0.ffffffffffffffffp0 + 0x1p-33 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x0.ffffffffffffffffp0 - 0x1p-1022 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x0.ffffffffffffffffp0 - 0x1p-16382 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x0.ffffffffffffffffp0 - 0x1p-33 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x1.fp1023 - 0x1.fp1023 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x1.fp127 + 0x1.fp127 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x1.fp127 - 0x1.fp127 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x1p-13 + 0x0.ffffffp0 i)":
+Function: "carg_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Real part of: catanh (0x1p-13 - 0x0.ffffffp0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: catanh (0x1p-27 + 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (0x1p-27 + 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x1p-27 - 0x0.fffffffffffff8p0 i)":
-double: 1
-idouble: 1
-Test "Real part of: catanh (0x1p-27 - 0x1.0000000000001p0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x1p-33 + 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x1p-33 - 0x0.ffffffffffffffffp0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x1p-64 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (0x1p-64 - 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (1.0 + 0x1.3p-73 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (1.0 + 0x1p-1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (1.0 + 0x1p-64 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (1.0 - 0x1.3p-73 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (1.0 - 0x1p-1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: catanh (1.0 - 0x1p-64 i)":
ildouble: 1
ldouble: 1
-# cbrt
-Test "cbrt (-0x1.bp+4)":
-ildouble: 1
-ldouble: 1
-Test "cbrt (-0x4.189374bc6a7ecp-12)":
-ildouble: 1
-ldouble: 1
-Test "cbrt (-0x4.189374bc6a7ef9ep-12)":
-ildouble: 1
-ldouble: 1
-Test "cbrt (-0x4.189374bc6a7fp-12)":
-ildouble: 1
-ldouble: 1
-Test "cbrt (-0x4.18937p-12)":
-ildouble: 1
-ldouble: 1
-Test "cbrt (-0xf.fffffffffffffffp+16380)":
-ildouble: 1
-ldouble: 1
-Test "cbrt (0x1.86ap+16)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cbrt (0xcp-4)":
-ildouble: 1
-ldouble: 1
-Test "cbrt (0xf.fffffffffffffffp+16380)":
-ildouble: 1
-ldouble: 1
-
-# ccos
-Test "Imaginary part of: ccos (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ccos (-0xcp-4 + 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccos (-0xcp-4 + 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Real part of: ccos (-0xcp-4 + 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccos (-0xcp-4 + 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ccos (-0xcp-4 - 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccos (-0xcp-4 - 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Real part of: ccos (-0xcp-4 - 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccos (-0xcp-4 - 0x5.98p+4 i)":
+Function: "carg_towardzero":
float: 1
ifloat: 1
-Test "Imaginary part of: ccos (0x4p-1076 + 0x5.ap+8 i)":
-double: 1
-idouble: 1
-Test "Real part of: ccos (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ccos (0xcp-4 + 0x1.4p+0 i)":
ildouble: 1
ldouble: 1
-Test "Real part of: ccos (0xcp-4 + 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccos (0xcp-4 + 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Real part of: ccos (0xcp-4 + 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccos (0xcp-4 + 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ccos (0xcp-4 - 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccos (0xcp-4 - 0x2.c68p+8 i)":
-double: 1
-idouble: 1
-Test "Real part of: ccos (0xcp-4 - 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccos (0xcp-4 - 0x5.98p+4 i)":
-float: 1
-ifloat: 1
-# ccosh
-Test "Real part of: ccosh (-0x2.c68p+8 + 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccosh (-0x2.c68p+8 + 0xcp-4 i)":
+Function: "carg_upward":
double: 1
-idouble: 1
-Test "Real part of: ccosh (-0x2.c68p+8 - 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccosh (-0x2.c68p+8 - 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccosh (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ccosh (-0x5.98p+4 + 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (-0x5.98p+4 + 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ccosh (-0x5.98p+4 - 0xcp-4 i)":
float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (-0x5.98p+4 - 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0x1p-120 + 0x4p-16328 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ccosh (0x2.c68p+8 + 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccosh (0x2.c68p+8 + 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: ccosh (0x2.c68p+8 - 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ccosh (0x2.c68p+8 - 0xcp-4 i)":
-double: 1
idouble: 1
-Test "Real part of: ccosh (0x5.98p+4 + 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0x5.98p+4 + 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: ccosh (0x5.98p+4 - 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0x5.98p+4 - 0xcp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0x5.ap+8 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Real part of: ccosh (0xcp-4 + 0x1.4p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0xcp-4 + 0x1.4p+0 i)":
-float: 1
-ifloat: 1
-
-# cexp
-Test "Imaginary part of: cexp (+0 + 0xf.ffffffffffff8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cexp (-0x2.71p+12 + 0x8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cexp (-0x2.71p+12 + 0xf.ffffffffffff8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cexp (-0x2.71p+12 + 0xf.fffffp+124 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cexp (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: cexp (-0x5.fp+4 + 0xcp-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cexp (-0x5.fp+4 + 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cexp (0x2.c5c9p+12 + 0xcp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cexp (0x2.c5dp+8 + 0xcp-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cexp (0x2.c5dp+8 + 0xcp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: cexp (0x3.2p+4 + 0x8p+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cexp (0x3.2p+4 + 0x8p+124 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cexp (0x5.8cp+4 + 0xcp-4 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cexp (0x5.8cp+4 + 0xcp-4 i)":
-float: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: cexp (0x5.ap+8 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: cexp (0xcp-4 + 0x1.4p+0 i)":
-ildouble: 1
-ldouble: 1
-# clog
-Test "Real part of: clog (+0 + 0x8p-16444 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (+0 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (+0 - 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0 - 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0x1.0000000123456p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.0000000123456p+0 + 0x1.2345678p-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.0000000123456p+0 + 0x4.8d159ep-32 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.0000000123456p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.000002p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d1598p-32 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d159ep-32 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (-0x1.000002p+0 + 0x4.8d15ap-32 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0x1.000002p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (-0x1p+0 + 0x4.8d15ap-32 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0x4p-1076 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0x4p-1076 - 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0x8p-152 + 0xf.8p+124 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0x8p-152 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0x8p-152 - 0xf.8p+124 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0x8p-152 - 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0x8p-16448 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0x8p-16448 - 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0xf.8p+124 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0xf.8p+124 - 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0xf.8p+16380 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0xf.8p+16380 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0xf.8p+16380 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0xf.8p+16380 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0xf.8p+16380 - 0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0xf.8p+16380 - 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0xf.8p+16380 - 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (-0xf.8p+16380 - 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.0000000000000012p+0 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.0000000000000012p+0 + 0x1.234566p-60 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.0000000000000012p+0 + 0x1.23456789p-1000 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.0000000000000012p+0 + 0x1.23456789p-60 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.0000000000000012p+0 + 0x1.234568p-60 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.0000000000000012p+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x1.0000000000000014p+0 + 0x1.234566p-60 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x1.0000000000000014p+0 + 0x1.23456789p-1000 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x1.0000000000000014p+0 + 0x1.23456789p-60 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x1.0000000000000014p+0 + 0x1.234568p-60 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.234566p-60 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.23456789p-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.23456789p-60 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + 0x1.234568p-60 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.0000000000001p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.000002p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.000002p+0 + 0x1.234566p-60 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.000002p+0 + 0x1.234568p-60 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.000002p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.000566p+0 + 0x1.234p-100 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.000566p+0 + 0x4.8dp-12 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.48e45e3268d8p-4 + 0xf.f2c64p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.48e45ep-4 + 0xf.f2c63p-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0x1.48e45ep-4 + 0xf.f2c63p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.48e45ep-4 + 0xf.f2c64p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1.8907bc3694fd4e7cp-4 + 0xf.ed1990460bdfbf6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.8907bc3694fd4e7cp-4 + 0xf.ed1990460bep-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.8907bc3694fd4e7ep-4 + 0xf.ed1990460bdfbf7p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.8907bc3694fd4e7ep-4 + 0xf.ed19ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdf8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdfbf6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.8907bc3694fd4p-4 + 0xf.ed1990460bdfbf7p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bdf8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.8907bc3694fd5p-4 + 0xf.ed1990460bdfbf6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.8907bcp-4 + 0xf.ed1990460bdf8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.8907bcp-4 + 0xf.ed1990460bdfbf6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.8907bcp-4 + 0xf.ed1990460bdfbf7p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.8907bep-4 + 0xf.ed1990460bdfbf6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e08p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e0948p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4d1d7a6e1p-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0x1.c67eccp-4 + 0xf.e6b4dp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67eccp-4 + 0xf.e6b4ep-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0x1.c67eccp-4 + 0xf.e6b4ep-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecd92a85944b8p-4 + 0xf.e6b4d1d7a6e08p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecd92a85944b8p-4 + 0xf.e6b4d1d7a6e0948p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecd92a85944b8p-4 + 0xf.e6b4d1d7a6e0949p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecd92a85944bap-4 + 0xf.e6b4d1d7a6e0948p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecd92a85944bap-4 + 0xf.e6b4ep-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4dp-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecd92a8594p-4 + 0xf.e6b4ep-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4d1d7a6e08p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4d1d7a6e1p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecd92a8595p-4 + 0xf.e6b4ep-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x1.c67ecep-4 + 0xf.e6b4d1d7a6e1p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x1p+0 + 0x4.8d1598p-12 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x1p-16440 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.0ce7ba1e4902p-4 + 0xf.de3a3p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a3612p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a3613p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a38p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42a15bf9a3p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b794p-4 + 0xf.cd42ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42a15bf9a3613p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42a15bf9a38p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b795e420b281a8p-4 + 0xf.cd42bp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b795e420b281acp-4 + 0xf.cd42a15bf9a3613p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b795e420b281acp-4 + 0xf.cd42a15bf9a38p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a3612p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42a15bf9a3p-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0x2.82b795e420b28p-4 + 0xf.cd42ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42a15bf9a38p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x2.82b795e420b2ap-4 + 0xf.cd42ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x2.82b798p-4 + 0xf.cd42a15bf9a3613p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.2cdb84p-4 + 0xf.ae888f0455f6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.3b8f9163276aap-4 + 0xf.ab873d09e61e797p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.3b8f9163276aap-4 + 0xf.ab873p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.3b8f9163276acp-4 + 0xf.ab874p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x3.3b8f9163276acp-4 + 0xf.ab874p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873d09e61e797p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873d09e61e8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873d09e61ep-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.3b8f94p-4 + 0xf.ab873p-4 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e17119fb8aaap-4 + 0xf.a0c58a83e57c772p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e17119fb8aaap-4 + 0xf.a0c58p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58a83e57cp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c58p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e17119fb8aab754p-4 + 0xf.a0c59p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e17119fb8aacp-4 + 0xf.a0c58a83e57c773p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e17119fb8aacp-4 + 0xf.a0c58p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57c772p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57c8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58a83e57cp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c58p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x3.6e1714p-4 + 0xf.a0c59p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x3.6e171p-4 + 0xf.a0c58a83e57c773p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e171p-4 + 0xf.a0c58p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.6e171p-4 + 0xf.a0c59p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x3.6e171p-4 + 0xf.a0c59p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.bea2bcp-4 + 0xf.8e3d619a8d118p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x3.bea2bcp-4 + 0xf.8e3d619a8d11bfdp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.bea2bd62e3501174p-4 + 0xf.8e3d619a8d11bfep-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.bea2bd62e3501174p-4 + 0xf.8e3d7p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.bea2bd62e350117p-4 + 0xf.8e3d7p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.bea2bd62e35p-4 + 0xf.8e3d6p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x3.bea2cp-4 + 0xf.8e3d619a8d12p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.bea2cp-4 + 0xf.8e3d6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.bea2cp-4 + 0xf.8e3d7p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3d1b06d08p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x3.e1d0a105ac4eap-4 + 0xf.859b3d1b06dp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.e1d0a105ac4ebeacp-4 + 0xf.859b3d1b06d005dp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.e1d0a105ac4ebebp-4 + 0xf.859b3p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.e1d0a105ac4ecp-4 + 0xf.859b3d1b06d005dp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x3.e1d0a105ac4ecp-4 + 0xf.859b3d1b06d005ep-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.e1d0a4p-4 + 0xf.859b3d1b06d08p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3d1b06d005dp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3d1b06d08p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3d1b06dp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x3.e1d0ap-4 + 0xf.859b3p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x4.0dbf78p-4 + 0xf.7a5c1af8e3ce8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.0dbf78p-4 + 0xf.7a5c1af8e3cec09p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.0dbf78p-4 + 0xf.7a5c1af8e3cfp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1af8e3ce8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x4.0dbf7d40fe1acp-4 + 0xf.7a5c1p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.0dbf7d40fe1ad688p-4 + 0xf.7a5c1af8e3ce8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.0dbf7d40fe1ad688p-4 + 0xf.7a5c1af8e3cfp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.0dbf7d40fe1bp-4 + 0xf.7a5c2p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x4.0dbf8p-4 + 0xf.7a5c1af8e3cfp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.0dbf8p-4 + 0xf.7a5c2p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x4.7017a2e368078p-4 + 0xf.5f4a550c9d75e3bp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.7017a2e36807acb8p-4 + 0xf.5f4a550c9d758p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.7017a2e36807acb8p-4 + 0xf.5f4a550c9d75e3bp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.7017a2e36807acb8p-4 + 0xf.5f4a6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.7017a2e36807acbp-4 + 0xf.5f4a550c9d75e3bp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.7017a2e36807acbp-4 + 0xf.5f4a5p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.7017a2e36807acbp-4 + 0xf.5f4a6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d758p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d75e3bp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.7017a2e36807cp-4 + 0xf.5f4a550c9d75e3cp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d75e3cp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a550c9d76p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x4.7017a8p-4 + 0xf.5f4a6p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x4.d9e8c415d5644p-4 + 0xf.3f302p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4.d9e8c8p-4 + 0xf.3f303p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x4.d9e8cp-4 + 0xf.3f30281507d8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x4p-1076 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4p-1076 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x4p-1076 - 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x5.318c58p-4 + 0xf.22363p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x5.318c58p-4 + 0xf.22364p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x5.318c596a8cb114ep-4 + 0xf.22363p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x5.318c596a8cb114ep-4 + 0xf.22364p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x5.318c596a8cb1p-4 + 0xf.22363bf989dap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x5.318c596a8cb1p-4 + 0xf.22364p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452b965da9fp-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x5.b06b68p-4 + 0xe.f452bp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x5.b06b7p-4 + 0xe.f452b965da9fp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x5.b06b7p-4 + 0xe.f452cp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x5.ba8ce4b6p-4 + 0xe.f0742508p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x5.ba8cep-4 + 0xe.f0742p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.02fd5037c4792efp-4 + 0xe.d3e21p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.02fd5037c4794p-4 + 0xe.d3e21p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e2086dcca80b8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e21p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.02fd5037c479p-4 + 0xe.d3e2p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e2086dcca80b8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e2086dcca8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.02fd58p-4 + 0xe.d3e21p-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0x6.02fd5p-4 + 0xe.d3e2086dcca80b8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.1c643068cd124p-4 + 0xe.c97c2018b428258p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.1c643068cd124p-4 + 0xe.c97c2018b4288p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.1c643068cd125ef8p-4 + 0xe.c97c2018b4288p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.1c643068cd125ef8p-4 + 0xe.c97c3p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.1c643068cd125efp-4 + 0xe.c97c3p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.1c643068cd128p-4 + 0xe.c97c2p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b4288p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c2018b428p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.1c6438p-4 + 0xe.c97c3p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x6.1c643p-4 + 0xe.c97c2018b428258p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.1c643p-4 + 0xe.c97c2018b4288p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff83ae6467cb08p-4 + 0xe.c36a599a86ba8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff83ae6467cb08p-4 + 0xe.c36a599a86baf8fp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff83ae6467cb08p-4 + 0xe.c36a6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff83ae6467cbp-4 + 0xe.c36a599a86ba8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff83ae6467cbp-4 + 0xe.c36a599a86baf8fp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff83ae6467cbp-4 + 0xe.c36a5p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a5p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff83ae6467cp-4 + 0xe.c36a6p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a599a86ba8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a599a86bbp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff83ae6468p-4 + 0xe.c36a5p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.2aff88p-4 + 0xe.c36a599a86ba8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.2aff8p-4 + 0xe.c36a599a86baf8fp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.2aff8p-4 + 0xe.c36a599a86baf9p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.b10b48p-4 + 0xe.8893cbb449253a1p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.b10b48p-4 + 0xe.8893cbb44925p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.b10b48p-4 + 0xe.8893dp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.b10b4f3520214p-4 + 0xe.8893cbb449253a1p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.b10b4f3520214p-4 + 0xe.8893cp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.b10b4f3520217b6p-4 + 0xe.8893cp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893cbb44925p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.b10b4f3520218p-4 + 0xe.8893dp-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb449258p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x6.b10b5p-4 + 0xe.8893cbb44925p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.eca921b40e028p-4 + 0xd.e655e694e5108p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.eca921b40e028p-4 + 0xd.e655e694e510a94p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.eca921b40e028p-4 + 0xd.e655fp-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.eca921b40e02ae18p-4 + 0xd.e655fp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.eca921b40e02cp-4 + 0xd.e655e694e510a94p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655e694e5108p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655e694e511p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.eca928p-4 + 0xd.e655fp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x7.eca92p-4 + 0xd.e655e694e510a95p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.eca92p-4 + 0xd.e655e694e511p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x7.eca92p-4 + 0xd.e655fp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1eca10d8p-4 + 0xd.e2d65939160b311p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1eca10d8p-4 + 0xd.e2d65939160b8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1eca10d8p-4 + 0xd.e2d65939160bp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1eca10d8p-4 + 0xd.e2d66p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1eca10dp-4 + 0xd.e2d65939160b31p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1eca10dp-4 + 0xd.e2d65939160bp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1eca10dp-4 + 0xd.e2d66p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d65939160b311p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d65939160b311p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1eca4p-4 + 0xd.e2d66p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65939160b311p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d20a1ecap-4 + 0xd.e2d65p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.f2c8d8p-4 + 0xd.e2d65939160b31p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8d8p-4 + 0xd.e2d65939160b8p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.f2c8d8p-4 + 0xd.e2d65939160bp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f2c8dp-4 + 0xd.e2d65939160bp-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f4b083cb0bp-4 + 0xd.e1bf1p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f4b088p-4 + 0xd.e1bf04f3688p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x7.f4b088p-4 + 0xd.e1bfp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x7.f4b08p-4 + 0xd.e1bf04f3688p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x8.88faep-4 + 0xd.888bdp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x8.88fafp-4 + 0xd.888bdp-4 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x8.ecbf810c4ae6p-4 + 0xd.47946p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x8.ecbf8p-4 + 0xd.479468b09a37p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x8.ecbf9p-4 + 0xd.479468b09a37p-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0x8.ecbf9p-4 + 0xd.47947p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x8p-152 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x8p-152 + 0xf.8p+124 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x8p-152 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x8p-152 - 0xf.8p+124 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x8p-152 - 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x8p-16448 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x8p-16448 - 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.b386fc56b9688p-4 + 0xc.b9317c470b4085cp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.b386fc56b9688p-4 + 0xc.b9317c470b41p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.b386fc56b9688p-4 + 0xc.b9317p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.b386fc56b968a66p-4 + 0xc.b9317p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.b386fc56b969p-4 + 0xc.b9317c470b41p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.b386fp-4 + 0xc.b9317c470b408p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.b386fp-4 + 0xc.b9317c470b41p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.b386fp-4 + 0xc.b9317p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0x9.b387p-4 + 0xc.b9317c470b4085cp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.b387p-4 + 0xc.b9317c470b41p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.b387p-4 + 0xc.b9317p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a246bap-4 + 0xc.ae53de1d5a7c8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a246bap-4 + 0xc.ae53ep-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a246bbp-4 + 0xc.ae53de1d5a7c8bp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a246bbp-4 + 0xc.ae53de1d5a7c8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53de1d5a7dp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a248p-4 + 0xc.ae53ep-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53de1d5a7c8bp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53dp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x9.c1b6ac509a24p-4 + 0xc.ae53ep-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53de1d5a7dp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0x9.c1b6ap-4 + 0xc.ae53dp-4 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog (0x9.c1b6bp-4 + 0xc.ae53de1d5a7c8b1p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0x9.c1b6bp-4 + 0xc.ae53de1d5a7c8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0x9.c1b6bp-4 + 0xc.ae53de1d5a7c8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.47c0c65bd4928p-4 + 0xc.42a51a3c05c19ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.47c0c65bd4928p-4 + 0xc.42a51p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xa.47c0c65bd492c7ep-4 + 0xc.42a51a3c05c18p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xa.47c0c65bd492c7ep-4 + 0xc.42a51a3c05c2p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c18p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c199fp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.47c0c65bd492c7fp-4 + 0xc.42a51a3c05c19ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xa.47c0c65bd493p-4 + 0xc.42a51a3c05c18p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51a3c05c199fp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51a3c05c19ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.47c0cp-4 + 0xc.42a51p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xa.47c0dp-4 + 0xc.42a51a3c05c18p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e867932966df589p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.afc57e2624342dfp-4 + 0xb.e867932966df8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.afc57e2624342ep-4 + 0xb.e867932966df58ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.afc57e2624342ep-4 + 0xb.e867ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xa.afc57e2624342ep-4 + 0xb.e867ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.afc57e2624348p-4 + 0xb.e867932966df589p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.afc57e2624348p-4 + 0xb.e867932966df8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xa.afc57e262434p-4 + 0xb.e867932966df589p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.afc57p-4 + 0xb.e867932966df589p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xa.afc57p-4 + 0xb.e867932966df589p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.afc57p-4 + 0xb.e867932966df58ap-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.afc57p-4 + 0xb.e867932966df8p-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog (0xa.afc57p-4 + 0xb.e8679p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xa.afc58p-4 + 0xb.e867932966df589p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.afc58p-4 + 0xb.e8679p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.b96da19075eap-8 + 0xf.fc679p-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc67818f89d2p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc678p-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xa.b96dap-8 + 0xf.fc679p-4 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.e7de8cc868ff8p-4 + 0xb.b51cbp-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.e7de8p-4 + 0xb.b51cbp-4 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xa.e7de9p-4 + 0xb.b51cb9f04d4dp-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f2405504a6059p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f2405504a68p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xa.ec55b7682e528a1p-4 + 0xb.b0f25p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.ec55b7682e528ap-4 + 0xb.b0f2405504a68p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.ec55b7682e528p-4 + 0xb.b0f24p-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xa.ec55b7682e528p-4 + 0xb.b0f25p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.ec55b7682e53p-4 + 0xb.b0f2405504a6058p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xa.ec55b7682e53p-4 + 0xb.b0f2405504a68p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.ec55b7682e53p-4 + 0xb.b0f2405504a6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.ec55b7682e53p-4 + 0xb.b0f25p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xa.ec55bp-4 + 0xb.b0f2405504a68p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.ec55bp-4 + 0xb.b0f2405504a6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a68p-4 i)":
+Function: Real part of "casin":
double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f2405504a6p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xa.ec55cp-4 + 0xb.b0f25p-4 i)":
float: 1
-ifloat: 1
-Test "Real part of: clog (0xb.263a77543bp-4 + 0xb.79c9ap-4 i)":
-double: 1
idouble: 1
-Test "Real part of: clog (0xb.263a8p-4 + 0xb.79c9bp-4 i)":
-float: 1
ifloat: 1
-Test "Real part of: clog (0xf.8p+124 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+124 - 0x8p-152 i)":
ildouble: 1
ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 + 0x8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 + 0xf.ffffffffffff8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 + 0xf.fffffp+124 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 - 0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 - 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 - 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.8p+16380 - 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.ffffffffffff8p+1020 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xf.ffffffffffff8p-4 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog (0xf.fffffffffffffffp-4 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.fffffffffffffffp-4 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xf.fffffffffffffffp-4 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.fffffffffffffffp-4 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog (0xf.fffffffffffffffp-4 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.fffffffffffffffp-4 + 0xf.fffffffffffffffp-15004 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.fffffp+124 + 0x8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.fffffp+124 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.fffffp+124 + 0xf.fffffp+124 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog (0xf.fffffp-4 + +0 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xf.fffffp-4 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Real part of: clog (0xf.fffffp-4 + 0xf.fffffp-104 i)":
-float: 1
-ifloat: 1
-# clog10
-Test "Imaginary part of: clog10 (-0 + inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-0 - inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-1000 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-0x1.0000000123456p0 + 0x1.2345678p-30 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-0x1.234566p-40 - 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-0x1.fp+1023 + 0x1p-1074 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-0x1.fp+1023 - 0x1p-1074 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (-0x1.fp+127 + 0x1p-149 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-0x1.fp+127 + 0x1p-149 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (-0x1.fp+127 - 0x1p-149 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-0x1.fp+127 - 0x1p-149 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (-0x1.fp+16383 + 0x1p-16445 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (-0x1.fp+16383 - 0x1p-16445 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-0x1p-1074 + 0x1.fp+1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-0x1p-1074 - 0x1.fp+1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (-0x1p-149 + 0x1.fp+127 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-0x1p-149 + 0x1.fp+127 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (-0x1p-149 - 0x1.fp+127 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-0x1p-149 - 0x1.fp+127 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (-0x1p-16445 + 0x1.fp+16383 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (-0x1p-16445 - 0x1.fp+16383 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-1.0 + 0x1.234566p-20 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-2 - 3 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-3 + inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-3 - inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + 0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + 1 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + inf i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-inf - 0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf - 1 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0 + inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0 - inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0x0.fffffffffffff8p0 + 0x0.fffffffffffff8p-1000 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x0.ffffffffffffffffp0 + 0x0.ffffffffffffffffp-15000 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x0.ffffffp0 + 0x0.ffffffp-100 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-100 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x1.234566p-30 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x1.234566p-30 + 1.0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1.234566p-50 + 1.0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x1.234566p-60 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0x1.fffffep+127 + 0x1.fffffep+127 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x1.fffffep+127 + 0x1.fffffep+127 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0x1.fffffffffffffp+1023 + 0x1p+1023 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x1.fp+16383 + 0x1.fp+16383 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x1.fp+16383 + 0x1p-16445 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x1.fp+16383 - 0x1p-16445 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x10673dd0f2481p-51 + 0x7ef1d17cefbd2p-51 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x11682p-23 + 0x7ffed1p-23 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x164c74eea876p-45 + 0x16f393482f77p-45 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0x1a6p-10 + 0x3a5p-10 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x1a6p-10 + 0x3a5p-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-1073 + 0x1p-1073 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-1074 + 0x1.fp+1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-1074 + 0x1p-1074 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-1074 - 0x1.fp+1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-147 + 0x1p-147 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0x1p-149 + 0x1.fp+127 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x1p-149 + 0x1.fp+127 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0x1p-149 + 0x1p-149 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x1p-149 + 0x1p-149 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0x1p-149 - 0x1.fp+127 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x1p-149 - 0x1.fp+127 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0x1p-16440 + 0x1p-16441 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x1p-16440 + 0x1p-16441 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x1p-16445 + 0x1.fp+16383 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x1p-16445 - 0x1.fp+16383 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x1p-509 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-510 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-511 + 1.0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x1p-61 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1p-62 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x1p-63 + 1.0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0x1p-8190 + 1.0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x2818p-15 + 0x798fp-15 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0x2818p-15 + 0x798fp-15 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x2dd46725bp-35 + 0x7783a1284p-35 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x2dd46725bp-35 + 0x7783a1284p-35 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x4d4ep-15 + 0x6605p-15 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x5b06b680ea2ccp-52 + 0xef452b965da9fp-52 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x659b70ab7971bp-53 + 0x1f5d111e08abecp-53 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x659feap-24 + 0xeaf6f9p-24 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x6b10b4f3520217b6p-64 + 0xe8893cbb449253a1p-64 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x81b7efa81fc35ad1p-65 + 0x1ef4b835f1c79d812p-65 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: clog10 (0x8ecbf810c4ae6p-52 + 0xd479468b09a37p-52 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0x9b57bp-20 + 0xcb7b4p-20 i)":
-double: 1
-idouble: 1
-Test "Real part of: clog10 (0xf2p-10 + 0x3e3p-10 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (0xf2p-10 + 0x3e3p-10 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (0xfe961079616p-45 + 0x1bc37e09e6d1p-45 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (1.0 + 0x1.234566p-10 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (3 + inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (3 - inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (inf + inf i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (inf - inf i)":
+Function: Imaginary part of "casin":
double: 1
float: 1
idouble: 1
ifloat: 1
-
-# cos
-Test "cos (0x1.921fb4p+0)":
-ildouble: 1
-ldouble: 1
-
-# cos_downward
-Test "cos_downward (-0x2p-16384)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (-0x4p-1024)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (-0x4p-1076)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (-0x4p-128)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (-0x4p-16384)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (-0x8p-152)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (-0x8p-16448)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (-0x8p-972)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (-0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (-0xf.fffffp+124)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1.000000cf4a2a2p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1.0000010b239a9p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1.00000162a932bp+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1.000002d452a1p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1.000002p+0)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1.0c152382d7365p+0)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1.921fb4p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1.921fb54442d18468p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1.921fb54442d1846ap+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1.921fb54442d19p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1.921fb6p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1p+0)":
-double: 1
-idouble: 1
-Test "cos_downward (0x1p+120)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x1p+28)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x2.182a44p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x2.182a4705ae6cap+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x2.182a4705ae6cb08cp+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x2.182a4705ae6cb09p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x2.182a4705ae6ccp+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x2.182a48p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x2.1e19e0c9bab24p+72)":
-double: 1
-idouble: 1
-Test "cos_downward (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "cos_downward (0x2.1e19ep+72)":
-double: 1
-idouble: 1
-Test "cos_downward (0x2p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x2p-16384)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x3p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x4p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x4p+48)":
-double: 1
-idouble: 1
-Test "cos_downward (0x4p-1024)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x4p-1076)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x4p-128)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x4p-16384)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x8p+0)":
ildouble: 2
ldouble: 2
-Test "cos_downward (0x8p+1020)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x8p-152)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x8p-16448)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x8p-972)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0x9p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0xa.217bap+12)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0xap+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0xc.d4966d92d1708p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0xc.d4966d92d171p-4)":
-double: 1
-idouble: 1
-Test "cos_downward (0xc.d4966p-4)":
-double: 1
-idouble: 1
-Test "cos_downward (0xcp-4)":
-double: 1
-idouble: 1
-Test "cos_downward (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0xf.fffffffffffffffp+16380)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (0xf.fffffp+124)":
-double: 1
-idouble: 1
-# cos_tonearest
-Test "cos_tonearest (0x1.921fb4p+0)":
-ildouble: 1
-ldouble: 1
-
-# cos_towardzero
-Test "cos_towardzero (-0x2p-16384)":
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (-0x4p-1024)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (-0x4p-1076)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (-0x4p-128)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (-0x4p-16384)":
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (-0x8p-152)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (-0x8p-16448)":
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (-0x8p-972)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (-0xf.fffffp+124)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.000000cf4a2a2p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x1.0000010b239a9p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x1.00000162a932bp+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x1.000002d452a1p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x1.000002p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.0c152382d7365p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.921fb4p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x1p+120)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2.182a4705ae6ccp+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2.182a48p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2.1e19e0c9bab24p+72)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2.1e19ep+72)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x2p-16384)":
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x4p+0)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x4p+48)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x4p-1024)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x4p-1076)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x4p-128)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x4p-16384)":
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x8p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x8p+1020)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0x8p-152)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x8p-16448)":
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0x8p-972)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0xa.217bap+12)":
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0xc.d4966d92d1708p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_towardzero (0xc.d4966d92d171p-4)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0xc.d4966p-4)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0xcp-4)":
-double: 1
-idouble: 1
-Test "cos_towardzero (0xf.fffffp+124)":
-double: 1
-idouble: 1
-
-# cos_upward
-Test "cos_upward (-0x2p+64)":
-double: 1
-idouble: 1
-Test "cos_upward (-0xf.ffffffffffff8p+1020)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (-0xf.fffffffffffffffp+16380)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x1.000004p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x1.000005bc7d86dp+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x1.000006p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x1.0c1522p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x1.0c152382d7366p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x1.0c1524p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x1.921fb4p+0)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "cos_upward (0x1.921fb54442d18468p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x1.921fb54442d1846ap+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x1.921fb54442d18p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x1.921fb6p+0)":
-ildouble: 2
-ldouble: 2
-Test "cos_upward (0x1p+120)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x1p+28)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x2.182a44p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x2.182a4705ae6cap+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x2.182a4705ae6cb08cp+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x2.182a4705ae6cb09p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x2.182a4705ae6ccp+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x2.182a48p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x2p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x2p+64)":
-double: 1
-idouble: 1
-Test "cos_upward (0x3p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x4p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x5p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x6p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x7p+0)":
-double: 1
-idouble: 1
-Test "cos_upward (0x8p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x8p+1020)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0x8p+124)":
-double: 1
-idouble: 1
-Test "cos_upward (0x9p+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0xa.217bap+12)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "cos_upward (0xap+0)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0xc.d4967p-4)":
-double: 1
-idouble: 1
-Test "cos_upward (0xf.ffffcp+124)":
-double: 1
-idouble: 1
-Test "cos_upward (0xf.ffffffffffff8p+1020)":
-ildouble: 1
-ldouble: 1
-Test "cos_upward (0xf.fffffffffffffffp+16380)":
+Function: Real part of "casin_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
ildouble: 2
ldouble: 2
-# cosh
-Test "cosh (-0x1p+0)":
-ldouble: 1
-Test "cosh (-0x2.c5d374p+12)":
-ldouble: 2
-Test "cosh (-0x2.c5d37700c6bbp+12)":
-ldouble: 1
-Test "cosh (-0x2.c5e3acp+8)":
-ildouble: 1
-Test "cosh (-0x2.c5e3bp+8)":
-ildouble: 1
-Test "cosh (-0x2.c679d1f73f0fap+8)":
-ildouble: 1
-Test "cosh (-0x2.c679d1f73f0fb624p+8)":
-ildouble: 1
-Test "cosh (-0x2.c679d1f73f0fb628p+8)":
-ildouble: 1
-Test "cosh (-0x2.c679d1f73f0fcp+8)":
-ildouble: 1
-Test "cosh (-0x2.c679dp+8)":
-ildouble: 1
-Test "cosh (0x1.6p+4)":
-ldouble: 1
-Test "cosh (0x2.c5d374p+12)":
-ldouble: 2
-Test "cosh (0x2.c5d37700c6bbp+12)":
-ldouble: 1
+Function: Imaginary part of "casin_downward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 5
+ldouble: 5
-# cosh_downward
-Test "cosh_downward (-0x1p+0)":
-ldouble: 1
-Test "cosh_downward (-0x2.c5d374p+12)":
-ldouble: 1
-Test "cosh_downward (-0x2.c5d37700c6bb03a4p+12)":
-ldouble: 3
-Test "cosh_downward (-0x2.c5d37700c6bbp+12)":
-ldouble: 2
-Test "cosh_downward (-0x2.c5e3acd2922a6p+8)":
-ildouble: 1
-Test "cosh_downward (-0x2.c679d1f73f0fap+8)":
-ildouble: 2
-Test "cosh_downward (-0x2.c679d1f73f0fb624p+8)":
-ildouble: 2
-Test "cosh_downward (-0x2.c679d1f73f0fb628p+8)":
-ildouble: 2
-Test "cosh_downward (-0x2.c679dp+8)":
-double: 1
-ildouble: 1
-Test "cosh_downward (-0x5.96a7ep+4)":
+Function: Real part of "casin_towardzero":
double: 1
+float: 1
+idouble: 1
+ifloat: 1
ildouble: 2
-Test "cosh_downward (0x1.6p+4)":
-ildouble: 1
ldouble: 2
-Test "cosh_downward (0x2.c5d374p+12)":
-ldouble: 1
-Test "cosh_downward (0x2.c5d37700c6bb03a4p+12)":
-ldouble: 3
-Test "cosh_downward (0x2.c5d37700c6bbp+12)":
-ldouble: 2
-Test "cosh_downward (0x2.c679dp+8)":
-double: 1
-Test "cosh_downward (0x5.96a7ep+4)":
-double: 1
-# cosh_tonearest
-Test "cosh_tonearest (-0x1p+0)":
-ldouble: 1
-Test "cosh_tonearest (-0x2.c5d374p+12)":
-ldouble: 2
-Test "cosh_tonearest (-0x2.c5d37700c6bbp+12)":
-ldouble: 1
-Test "cosh_tonearest (-0x2.c5e3acp+8)":
-ildouble: 1
-Test "cosh_tonearest (-0x2.c5e3bp+8)":
-ildouble: 1
-Test "cosh_tonearest (-0x2.c679d1f73f0fap+8)":
-ildouble: 1
-Test "cosh_tonearest (-0x2.c679d1f73f0fb624p+8)":
-ildouble: 1
-Test "cosh_tonearest (-0x2.c679d1f73f0fb628p+8)":
-ildouble: 1
-Test "cosh_tonearest (-0x2.c679d1f73f0fcp+8)":
-ildouble: 1
-Test "cosh_tonearest (-0x2.c679dp+8)":
-ildouble: 1
-Test "cosh_tonearest (0x1.6p+4)":
-ldouble: 1
-Test "cosh_tonearest (0x2.c5d374p+12)":
-ldouble: 2
-Test "cosh_tonearest (0x2.c5d37700c6bbp+12)":
-ldouble: 1
+Function: Imaginary part of "casin_towardzero":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 5
+ldouble: 5
-# cosh_towardzero
-Test "cosh_towardzero (-0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "cosh_towardzero (-0x2.c5d374p+12)":
-ldouble: 1
-Test "cosh_towardzero (-0x2.c5d37700c6bbp+12)":
-ldouble: 2
-Test "cosh_towardzero (-0x2.c5e3acd2922a6p+8)":
-ildouble: 1
-Test "cosh_towardzero (-0x2.c679d1f73f0fap+8)":
-ildouble: 2
-Test "cosh_towardzero (-0x2.c679d1f73f0fb624p+8)":
-ildouble: 2
-Test "cosh_towardzero (-0x2.c679d1f73f0fb628p+8)":
-ildouble: 2
-Test "cosh_towardzero (-0x2.c679dp+8)":
-double: 1
-ildouble: 1
-Test "cosh_towardzero (-0x5.96a7ep+4)":
-double: 1
+Function: Real part of "casin_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
ildouble: 2
-Test "cosh_towardzero (0x1.6p+4)":
-ldouble: 1
-Test "cosh_towardzero (0x1.8p+4)":
-ildouble: 1
-ldouble: 1
-Test "cosh_towardzero (0x2.c5d374p+12)":
-ldouble: 1
-Test "cosh_towardzero (0x2.c5d37700c6bbp+12)":
ldouble: 2
-Test "cosh_towardzero (0x2.c679dp+8)":
-double: 1
-Test "cosh_towardzero (0x5.96a7ep+4)":
-double: 1
-# cosh_upward
-Test "cosh_upward (-0x2.c5d374p+12)":
-ldouble: 2
-Test "cosh_upward (-0x2.c5d37700c6bb03a4p+12)":
-ldouble: 3
-Test "cosh_upward (-0x2.c5e3acd2922a6p+8)":
-double: 1
-ildouble: 1
-Test "cosh_upward (-0x2.c5e3acp+8)":
-ildouble: 1
-Test "cosh_upward (-0x2.c5e3bp+8)":
-ildouble: 1
-Test "cosh_upward (-0x2.c679d1f73f0fap+8)":
-double: 1
-ildouble: 1
-Test "cosh_upward (-0x2.c679d1f73f0fb624p+8)":
-ildouble: 1
-Test "cosh_upward (-0x2.c679d1f73f0fb628p+8)":
-ildouble: 1
-ldouble: 1
-Test "cosh_upward (-0x2.c679d1f73f0fcp+8)":
-ildouble: 1
-Test "cosh_upward (-0x2p-16384)":
-ildouble: 1
-Test "cosh_upward (-0x4p-1024)":
-idouble: 1
-ildouble: 1
-Test "cosh_upward (-0x4p-1076)":
-idouble: 1
-ildouble: 1
-Test "cosh_upward (-0x4p-128)":
-idouble: 1
-ifloat: 1
-ildouble: 1
-Test "cosh_upward (-0x4p-16384)":
-ildouble: 1
-Test "cosh_upward (-0x5.96a7ep+4)":
-ildouble: 1
-Test "cosh_upward (-0x8p-152)":
-idouble: 1
-ifloat: 1
-ildouble: 1
-Test "cosh_upward (-0x8p-16448)":
-ildouble: 1
-Test "cosh_upward (-0x8p-972)":
-idouble: 1
-ildouble: 1
-Test "cosh_upward (0x1.6p+4)":
-ildouble: 1
-ldouble: 1
-Test "cosh_upward (0x1.7p+4)":
-ildouble: 1
-Test "cosh_upward (0x1.8p+4)":
-ildouble: 1
-Test "cosh_upward (0x2.c5d374p+12)":
-ldouble: 2
-Test "cosh_upward (0x2.c5d37700c6bb03a4p+12)":
-ldouble: 3
-Test "cosh_upward (0x2.c5e3acd2922a6p+8)":
-double: 1
-ildouble: 1
-Test "cosh_upward (0x2.c5e3acp+8)":
-ildouble: 1
-Test "cosh_upward (0x2.c5e3bp+8)":
-ildouble: 1
-Test "cosh_upward (0x2.c679d1f73f0fap+8)":
-double: 1
-ildouble: 1
-Test "cosh_upward (0x2.c679d1f73f0fb624p+8)":
-ildouble: 1
-Test "cosh_upward (0x2.c679d1f73f0fb628p+8)":
-ildouble: 2
-ldouble: 1
-Test "cosh_upward (0x2.c679d1f73f0fcp+8)":
-ildouble: 1
-Test "cosh_upward (0x2.c679d4p+8)":
-ildouble: 1
-Test "cosh_upward (0x2.c679dp+8)":
-ildouble: 1
-Test "cosh_upward (0x3.2p+4)":
-ildouble: 1
-Test "cosh_upward (0x5.96a7e8p+4)":
-ildouble: 1
-Test "cosh_upward (0x5.96a7ep+4)":
-ildouble: 1
-
-# cpow
-Test "Real part of: cpow (0x2p+0 + +0 i, 0xap+0 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)":
-double: 1
-float: 5
-idouble: 1
-ifloat: 5
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cpow (0x2p+0 + 0x3p+0 i, 0x4p+0 + +0 i)":
-float: 1
-ifloat: 1
-ildouble: 4
-ldouble: 4
-Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, +0 + 0x1p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0x1p+0 + +0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0x1p+0 + 0x1p+0 i)":
-double: 2
+Function: Imaginary part of "casin_upward":
+double: 4
float: 4
-idouble: 2
+idouble: 4
ifloat: 4
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: cpow (0xcp-4 + 0x1.4p+0 i, 0x1p+0 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: cpow (0xcp-4 + 0x1.4p+0 i, 0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cpow (0xcp-4 + 0x1.4p+0 i, 0xcp-4 + 0x1.4p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
+ildouble: 5
+ldouble: 5
-# csin
-Test "Real part of: csin (-0.75 + 710.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csin (-0.75 + 710.5 i)":
+Function: Real part of "casinh":
double: 1
-idouble: 1
-Test "Real part of: csin (-0.75 + 89.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csin (-0.75 + 89.5 i)":
float: 1
-ifloat: 1
-Test "Real part of: csin (-0.75 - 710.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csin (-0.75 - 710.5 i)":
-double: 1
idouble: 1
-Test "Real part of: csin (-0.75 - 89.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csin (-0.75 - 89.5 i)":
-float: 1
ifloat: 1
-Test "Real part of: csin (0.75 + 1.25 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csin (0.75 + 1.25 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csin (0.75 + 710.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csin (0.75 + 710.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: csin (0.75 + 89.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csin (0.75 + 89.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csin (0.75 - 710.5 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csin (0.75 - 710.5 i)":
-double: 1
-idouble: 1
-Test "Real part of: csin (0.75 - 89.5 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csin (0.75 - 89.5 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csin (0x1p-1074 + 1440 i)":
-double: 1
-idouble: 1
+ildouble: 2
+ldouble: 2
-# csinh
-Test "Imaginary part of: csinh (-2 - 3 i)":
+Function: Imaginary part of "casinh":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Real part of: csinh (-710.5 + 0.75 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csinh (-710.5 + 0.75 i)":
-double: 1
-idouble: 1
-Test "Real part of: csinh (-710.5 - 0.75 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csinh (-710.5 - 0.75 i)":
-double: 1
-idouble: 1
-Test "Real part of: csinh (-89.5 + 0.75 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (-89.5 + 0.75 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csinh (-89.5 - 0.75 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (-89.5 - 0.75 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csinh (0.75 + 1.25 i)":
-float: 1
-ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: csinh (1440 + 0x1p-1074 i)":
-double: 1
-idouble: 1
-Test "Real part of: csinh (710.5 + 0.75 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csinh (710.5 + 0.75 i)":
-double: 1
-idouble: 1
-Test "Real part of: csinh (710.5 - 0.75 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csinh (710.5 - 0.75 i)":
-double: 1
-idouble: 1
-Test "Real part of: csinh (89.5 + 0.75 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (89.5 + 0.75 i)":
-float: 1
-ifloat: 1
-Test "Real part of: csinh (89.5 - 0.75 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (89.5 - 0.75 i)":
-float: 1
-ifloat: 1
-# csqrt
-Test "Real part of: csqrt (-0x4.0000000000000008p-16384 - 0x4.0000000000000008p-16384 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (-0x4.0000000000000008p-16384 - 0x4.0000000000000008p-16384 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-0x4.0000000000000008p-16384 - 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-0x4.0000000000004p-1024 - 0x4.0000000000004p-1024 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-0x4.000008p-128 - 0x4.000008p-128 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-0x4p-1076 - 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-0x4p-16384 - 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-0x4p-16384 - 0x4p-16384 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-0x8p-152 - 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-0x8p-152 - 0x4p-16384 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-0x8p-152 - 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x1p-16440 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x1p-5000 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x2p-148 + 0x2p-148 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (0x4.0000000000000008p-16384 + 0x4.0000000000000008p-16384 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x4.0000000000000008p-16384 + 0x4.0000000000000008p-16384 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x4.0000000000000008p-16384 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x4.0000000000004p-1024 + 0x4.0000000000004p-1024 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x4.000008p-128 + 0x4.000008p-128 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x4p-1076 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x4p-1076 + 0xf.ffffffffffff8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x4p-16384 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x4p-16384 + 0x4p-16384 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p+1020 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p+1020 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p+124 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p+16380 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p+16380 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p-1076 + 0x8p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p-152 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p-152 + 0x4p-16384 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-16444 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p-152 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p-152 + 0xf.ffffffffffff8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x8p-16448 + 0xf.ffffffffffff8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0xf.8p+16380 + 0xf.8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + +0 i)":
-double: 1
-idouble: 1
-Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + 0x8p-152 i)":
-double: 1
-idouble: 1
-Test "Real part of: csqrt (0xf.ffffffffffff8p+1020 + 0xf.fffffp+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0xf.fffffp+124 + 0xf.ffffffffffff8p+1020 i)":
-ildouble: 1
-ldouble: 1
+Function: Real part of "casinh_downward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 5
+ldouble: 5
-# ctan
-Test "Real part of: ctan (-0x2p+0 - 0x3p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (-0x2p+0 - 0x3p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan (0x1.921fb4p+0 + +0 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan (0x1.921fb4p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan (0x1.921fb4p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan (0x1.921fb4p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan (0x1.921fb4p+0 + 0x8p-16448 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0x1.921fb54442d1846ap+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0x1.921fb54442d18p+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0x1.921fb54442d18p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0x1.921fb54442d19p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan (0x1.921fb6p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan (0x1.921fb6p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan (0x1p+0 + 0x2.dp+4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan (0x1p+0 + 0x2.fp+4 i)":
-double: 1
-idouble: 1
+Function: Imaginary part of "casinh_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
ildouble: 2
ldouble: 2
-Test "Real part of: ctan (0x8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0x8p+1020 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0xcp-4 + 0x1.4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0xf.ffffffffffff8p+1020 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0xf.fffffp+124 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-# ctan_downward
-Test "Real part of: ctan_downward (-0x2p+0 - 0x3p+0 i)":
-float: 2
-ifloat: 2
+Function: Real part of "casinh_towardzero":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
ildouble: 5
ldouble: 5
-Test "Imaginary part of: ctan_downward (-0x2p+0 - 0x3p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_downward (0x1.921fb4p+0 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0x1.921fb4p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_downward (0x1.921fb4p+0 + 0x4p-1076 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_downward (0x1.921fb4p+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_downward (0x1.921fb4p+0 + 0x8p-152 i)":
+
+Function: Imaginary part of "casinh_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2
ldouble: 2
-Test "Real part of: ctan_downward (0x1.921fb4p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0x1.921fb54442d1846ap+0 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + +0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-152 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-152 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-16448 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x8p-16448 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + +0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_downward (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 2
-idouble: 2
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-152 i)":
+
+Function: Real part of "casinh_upward":
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "casinh_upward":
double: 2
-idouble: 2
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_downward (0x1.921fb54442d19p+0 + 0x8p-16448 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_downward (0x1.921fb6p+0 + +0 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x4p-1076 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_downward (0x1.921fb6p+0 + 0x4p-1076 i)":
-ildouble: 4
-ldouble: 4
-Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_downward (0x1.921fb6p+0 + 0x8p-152 i)":
-double: 1
float: 2
-idouble: 1
+idouble: 2
ifloat: 2
-ildouble: 4
-ldouble: 4
-Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x8p-16448 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_downward (0x1p+0 + 0x1.63p+8 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0x1p+0 + 0x1.6dp+8 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0x1p+0 + 0x2.dp+4 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctan_downward (0x1p+0 + 0x2.fp+4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0x8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 4
-ldouble: 4
-Test "Real part of: ctan_downward (0x8p+124 + 0x1p+0 i)":
ildouble: 2
ldouble: 2
-Test "Imaginary part of: ctan_downward (0x8p+124 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctan_downward (0x8p+16380 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_downward (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_downward (0xf.ffffffffffff8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 4
-ldouble: 4
-Test "Real part of: ctan_downward (0xf.fffffp+124 + 0x1p+0 i)":
+
+Function: Imaginary part of "catan":
double: 1
float: 1
idouble: 1
@@ -7000,1475 +465,417 @@ ifloat: 1
ildouble: 1
ldouble: 1
-# ctan_tonearest
-Test "Real part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)":
+Function: Real part of "catan_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: ctan_tonearest (-0x2p+0 - 0x3p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + +0 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_tonearest (0x1.921fb4p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_tonearest (0x1.921fb4p+0 + 0x8p-16448 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d1846ap+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d19p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + +0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_tonearest (0x1p+0 + 0x2.dp+4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_tonearest (0x1p+0 + 0x2.fp+4 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_tonearest (0x8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0x8p+1020 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0xcp-4 + 0x1.4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0xf.ffffffffffff8p+1020 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0xf.fffffp+124 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-# ctan_towardzero
-Test "Real part of: ctan_towardzero (-0x2p+0 - 0x3p+0 i)":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 5
-ldouble: 5
-Test "Imaginary part of: ctan_towardzero (-0x2p+0 - 0x3p+0 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_towardzero (-0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
+Function: Imaginary part of "catan_downward":
+double: 2
float: 1
-idouble: 1
+idouble: 2
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb4p+0 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb4p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb4p+0 + 0x4p-1076 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_towardzero (0x1.921fb4p+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb4p+0 + 0x8p-152 i)":
+ildouble: 4
+ldouble: 4
+
+Function: Real part of "catan_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_towardzero (0x1.921fb4p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + +0 i)":
ildouble: 1
ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + +0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 2
-idouble: 2
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-152 i)":
+
+Function: Imaginary part of "catan_towardzero":
double: 2
-idouble: 2
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d19p+0 + 0x8p-16448 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + +0 i)":
float: 1
+idouble: 2
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb6p+0 + 0x4p-1076 i)":
ildouble: 4
ldouble: 4
-Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x8p-152 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb6p+0 + 0x8p-152 i)":
+
+Function: Real part of "catan_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 4
-ldouble: 4
-Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1p+0 + 0x1.63p+8 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1p+0 + 0x1.6dp+8 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_towardzero (0x1p+0 + 0x2.dp+4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0x1p+0 + 0x2.fp+4 i)":
-double: 1
-idouble: 1
ildouble: 1
ldouble: 1
-Test "Real part of: ctan_towardzero (0x8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
+
+Function: Imaginary part of "catan_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
ildouble: 3
ldouble: 3
-Test "Real part of: ctan_towardzero (0x8p+124 + 0x1p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_towardzero (0x8p+124 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctan_towardzero (0x8p+16380 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0xc.35p+12 - 0xc.35p+12 i)":
+
+Function: Real part of "catanh":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Real part of: ctan_towardzero (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0xcp-4 + 0x1.4p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_towardzero (0xf.ffffffffffff8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_towardzero (0xf.fffffp+124 + 0x1p+0 i)":
-double: 1
-idouble: 1
-# ctan_upward
-Test "Real part of: ctan_upward (-0x2p+0 - 0x3p+0 i)":
-double: 3
+Function: Real part of "catanh_downward":
+double: 2
float: 1
-idouble: 3
+idouble: 2
ifloat: 1
-Test "Imaginary part of: ctan_upward (-0x2p+0 - 0x3p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctan_upward (-0xc.35p+12 + 0xc.35p+12 i)":
+ildouble: 4
+ldouble: 4
+
+Function: Imaginary part of "catanh_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: ctan_upward (-0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
+
+Function: Real part of "catanh_towardzero":
+double: 2
float: 1
-idouble: 1
+idouble: 2
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb4p+0 + +0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb4p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_upward (0x1.921fb4p+0 + 0x4p-1076 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_upward (0x1.921fb4p+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_upward (0x1.921fb4p+0 + 0x8p-152 i)":
+ildouble: 4
+ldouble: 4
+
+Function: Imaginary part of "catanh_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_upward (0x1.921fb4p+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d1846ap+0 + +0 i)":
ildouble: 1
ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x8p-152 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x8p-16448 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d18p+0 + 0x4p-1076 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d18p+0 + 0x8p-152 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + +0 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d19p+0 + 0x4p-1076 i)":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-152 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-152 i)":
+
+Function: Real part of "catanh_upward":
double: 2
+float: 2
idouble: 2
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-16448 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d19p+0 + 0x8p-16448 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_upward (0x1.921fb6p+0 + +0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x4p-1076 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x4p-1076 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x8p-152 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x8p-152 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x8p-16448 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.63ap+12 i)":
+ifloat: 2
+ildouble: 4
+ldouble: 4
+
+Function: Imaginary part of "catanh_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.63p+12 i)":
+
+Function: "cbrt":
double: 1
-float: 1
idouble: 1
-ifloat: 1
ildouble: 1
ldouble: 1
-Test "Real part of: ctan_upward (0x1p+0 + 0x1.63p+8 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.63p+8 i)":
+
+Function: "cbrt_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_upward (0x1p+0 + 0x1.6dp+8 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x1.6dp+8 i)":
+ildouble: 3
+ldouble: 3
+
+Function: "cbrt_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2
ldouble: 2
-Test "Real part of: ctan_upward (0x1p+0 + 0x2.dp+4 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x2.dp+4 i)":
+
+Function: "cbrt_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_upward (0x1p+0 + 0x2.fp+4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_upward (0x1p+0 + 0x2.fp+4 i)":
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "ccos":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_upward (0x8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_upward (0x8p+1020 + 0x1p+0 i)":
-double: 1
-idouble: 1
ildouble: 1
ldouble: 1
-Test "Real part of: ctan_upward (0x8p+124 + 0x1p+0 i)":
-double: 3
-idouble: 3
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0x8p+16380 + 0x1p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x8p+16380 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan_upward (0xc.35p+12 + 0xc.35p+12 i)":
+
+Function: Imaginary part of "ccos":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: ctan_upward (0xc.35p+12 - 0xc.35p+12 i)":
+
+Function: Real part of "ccos_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan_upward (0xcp-4 + 0x1.4p+0 i)":
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "ccos_downward":
double: 2
+float: 2
idouble: 2
-Test "Imaginary part of: ctan_upward (0xcp-4 + 0x1.4p+0 i)":
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "ccos_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Real part of: ctan_upward (0xf.ffffffffffff8p+1020 + 0x1p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_upward (0xf.fffffp+124 + 0x1p+0 i)":
-double: 1
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "ccos_towardzero":
+double: 2
float: 2
-idouble: 1
+idouble: 2
ifloat: 2
ildouble: 3
ldouble: 3
-Test "Imaginary part of: ctan_upward (0xf.fffffp+124 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-# ctanh
-Test "Imaginary part of: ctanh (+0 + 0x1.921fb4p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh (+0 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh (+0 + 0xc.90fdaa22168c235p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (+0 + 0xc.90fdap-4 i)":
+Function: Real part of "ccos_upward":
double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (+0 + 0xc.90fdbp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (-0x2p+0 - 0x3p+0 i)":
float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (-0x2p+0 - 0x3p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x1p+0 + 0x8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (0x1p+0 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x1p+0 + 0xf.ffffffffffff8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x1p+0 + 0xf.fffffp+124 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (0x2.dp+4 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (0x2.fp+4 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb4p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (0x4p-1076 + 0x1.921fb4p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x4p-1076 + 0x1.921fb6p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x8p-152 + 0x1.921fb4p+0 i)":
-double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb4p+0 i)":
-float: 1
ifloat: 1
ildouble: 2
ldouble: 2
-Test "Real part of: ctanh (0x8p-152 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x8p-152 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x8p-152 + 0x1.921fb54442d19p+0 i)":
+
+Function: Imaginary part of "ccos_upward":
double: 1
+float: 2
idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh (0x8p-16448 + 0x1.921fb4p+0 i)":
+ifloat: 2
ildouble: 2
ldouble: 2
-Test "Real part of: ctanh (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x8p-16448 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh (0x8p-16448 + 0x1.921fb54442d19p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-# ctanh_downward
-Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb54442d18p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb54442d19p+0 i)":
+Function: Real part of "ccosh":
double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (+0 + 0x1.921fb6p+0 i)":
float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168c234p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168c8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdaa22168cp-4 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (+0 + 0xc.90fdap-4 i)":
-double: 1
idouble: 1
-Test "Real part of: ctanh_downward (-0x2p+0 - 0x3p+0 i)":
-float: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: ctanh_downward (-0x2p+0 - 0x3p+0 i)":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (0x1.63p+8 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (0x1.6dp+8 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (0x1p+0 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-ildouble: 4
-ldouble: 4
-Test "Real part of: ctanh_downward (0x1p+0 + 0x8p+124 i)":
+
+Function: Imaginary part of "ccosh":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Imaginary part of: ctanh_downward (0x1p+0 + 0x8p+124 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_downward (0x1p+0 + 0x8p+16380 i)":
ildouble: 1
ldouble: 1
-Test "Imaginary part of: ctanh_downward (0x1p+0 + 0xf.ffffffffffff8p+1020 i)":
-double: 1
-idouble: 1
-ildouble: 4
-ldouble: 4
-Test "Imaginary part of: ctanh_downward (0x1p+0 + 0xf.fffffp+124 i)":
+
+Function: Real part of "ccosh_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (0x2.dp+4 + 0x1p+0 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_downward (0x2.fp+4 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb4p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
ildouble: 3
ldouble: 3
-Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
+
+Function: Imaginary part of "ccosh_downward":
double: 2
+float: 2
idouble: 2
+ifloat: 2
ildouble: 3
ldouble: 3
-Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_downward (0x4p-1076 + 0x1.921fb6p+0 i)":
-ildouble: 4
-ldouble: 4
-Test "Imaginary part of: ctanh_downward (0x4p-1076 + 0x1.921fb6p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb4p+0 i)":
+
+Function: Real part of "ccosh_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d18p+0 i)":
ildouble: 3
ldouble: 3
-Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d18p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d19p+0 i)":
+
+Function: Imaginary part of "ccosh_towardzero":
double: 2
-idouble: 2
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_downward (0x8p-152 + 0x1.921fb6p+0 i)":
-double: 1
float: 2
-idouble: 1
+idouble: 2
ifloat: 2
-ildouble: 4
-ldouble: 4
-Test "Imaginary part of: ctanh_downward (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d18p+0 i)":
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d18p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d19p+0 i)":
ildouble: 3
ldouble: 3
-Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb54442d19p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_downward (0x8p-16448 + 0x1.921fb6p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_downward (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_downward (0xcp-4 + 0x1.4p+0 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-# ctanh_tonearest
-Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb4p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_tonearest (+0 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdaa22168c235p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdap-4 i)":
+Function: Real part of "ccosh_upward":
double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_tonearest (+0 + 0xc.90fdbp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)":
float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_tonearest (-0x2p+0 - 0x3p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x1p+0 + 0x8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_tonearest (0x1p+0 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x1p+0 + 0xf.ffffffffffff8p+1020 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x1p+0 + 0xf.fffffp+124 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_tonearest (0x2.dp+4 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_tonearest (0x2.fp+4 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb4p+0 i)":
-double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb4p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x4p-1076 + 0x1.921fb6p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb4p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb4p+0 i)":
-float: 1
ifloat: 1
ildouble: 2
ldouble: 2
-Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb54442d19p+0 i)":
+
+Function: Imaginary part of "ccosh_upward":
double: 1
+float: 2
idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_tonearest (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb4p+0 i)":
+ifloat: 2
ildouble: 2
ldouble: 2
-Test "Real part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_tonearest (0x8p-16448 + 0x1.921fb54442d19p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_tonearest (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-# ctanh_towardzero
-Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (+0 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168c234p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168c8p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdaa22168cp-4 i)":
-double: 1
-idouble: 1
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: ctanh_towardzero (+0 + 0xc.90fdap-4 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_towardzero (-0x2p+0 - 0x3p+0 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh_towardzero (-0xc.35p+12 + 0xc.35p+12 i)":
+Function: Real part of "cexp":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Real part of: ctanh_towardzero (-0xc.35p+12 - 0xc.35p+12 i)":
+
+Function: Imaginary part of "cexp":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x1.63p+8 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x1.6dp+8 + 0x1p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctanh_towardzero (0x1p+0 + 0x8p+124 i)":
+
+Function: Real part of "cexp_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0x8p+124 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_towardzero (0x1p+0 + 0x8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0xf.ffffffffffff8p+1020 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x1p+0 + 0xf.fffffp+124 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x2.dp+4 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x2.fp+4 + 0x1p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb4p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 2
-idouble: 2
ildouble: 3
ldouble: 3
-Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb6p+0 i)":
-ildouble: 4
-ldouble: 4
-Test "Imaginary part of: ctanh_towardzero (0x4p-1076 + 0x1.921fb6p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d19p+0 i)":
+
+Function: Imaginary part of "cexp_downward":
double: 2
+float: 2
idouble: 2
+ifloat: 2
ildouble: 3
ldouble: 3
-Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0x8p-152 + 0x1.921fb6p+0 i)":
+
+Function: Real part of "cexp_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 4
-ldouble: 4
-Test "Imaginary part of: ctanh_towardzero (0x8p-152 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d18p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d19p+0 i)":
ildouble: 3
ldouble: 3
-Test "Imaginary part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb54442d19p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_towardzero (0x8p-16448 + 0x1.921fb6p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_towardzero (0xcp-4 + 0x1.4p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_towardzero (0xcp-4 + 0x1.4p+0 i)":
+
+Function: Imaginary part of "cexp_towardzero":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
+ifloat: 2
+ildouble: 3
+ldouble: 3
-# ctanh_upward
-Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_upward (+0 + 0x1.921fb6p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdaa22168c234p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdaa22168c235p-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdap-4 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: ctanh_upward (+0 + 0xc.90fdbp-4 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (-0x2p+0 - 0x3p+0 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_upward (-0x2p+0 - 0x3p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (-0xc.35p+12 + 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (-0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x1.63ap+12 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x1.63p+12 + 0x1p+0 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x1.63p+8 + 0x1p+0 i)":
+Function: Real part of "cexp_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2
ldouble: 2
-Test "Imaginary part of: ctanh_upward (0x1.63p+8 + 0x1p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_upward (0x1.6dp+8 + 0x1p+0 i)":
+
+Function: Imaginary part of "cexp_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_upward (0x1.6dp+8 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x1p+0 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+1020 i)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+124 i)":
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "clog":
double: 3
+float: 2
idouble: 3
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x1p+0 + 0x8p+16380 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x1p+0 + 0x8p+16380 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_upward (0x1p+0 + 0xf.ffffffffffff8p+1020 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_upward (0x1p+0 + 0xf.fffffp+124 i)":
+ifloat: 2
+ildouble: 4
+ldouble: 4
+
+Function: Imaginary part of "clog":
double: 1
-float: 1
idouble: 1
-ifloat: 1
ildouble: 1
ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x1p+0 + 0xf.fffffp+124 i)":
-double: 1
+
+Function: Real part of "clog10":
+double: 2
float: 2
-idouble: 1
+idouble: 2
ifloat: 2
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctanh_upward (0x2.dp+4 + 0x1p+0 i)":
+ildouble: 4
+ldouble: 4
+
+Function: Imaginary part of "clog10":
double: 1
-float: 1
idouble: 1
-ifloat: 1
ildouble: 2
ldouble: 2
-Test "Imaginary part of: ctanh_upward (0x2.dp+4 + 0x1p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x2.fp+4 + 0x1p+0 i)":
+
+Function: Real part of "clog10_downward":
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
+ildouble: 8
+ldouble: 8
+
+Function: Imaginary part of "clog10_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2
ldouble: 2
-Test "Imaginary part of: ctanh_upward (0x2.fp+4 + 0x1p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb4p+0 i)":
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d18p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_upward (0x4p-1076 + 0x1.921fb6p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x4p-1076 + 0x1.921fb6p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb4p+0 i)":
+
+Function: Real part of "clog10_towardzero":
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
+ildouble: 8
+ldouble: 8
+
+Function: Imaginary part of "clog10_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 3
ldouble: 3
-Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d18p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d19p+0 i)":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb54442d19p+0 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_upward (0x8p-152 + 0x1.921fb6p+0 i)":
+
+Function: Real part of "clog10_upward":
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
+ildouble: 6
+ldouble: 6
+
+Function: Imaginary part of "clog10_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x8p-152 + 0x1.921fb6p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_upward (0x8p-16448 + 0x1.921fb4p+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d1846ap+0 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d19p+0 i)":
ildouble: 3
ldouble: 3
-Test "Imaginary part of: ctanh_upward (0x8p-16448 + 0x1.921fb54442d19p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_upward (0x8p-16448 + 0x1.921fb6p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_upward (0xc.35p+12 + 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0xc.35p+12 - 0xc.35p+12 i)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctanh_upward (0xcp-4 + 0x1.4p+0 i)":
-float: 1
-ifloat: 1
-Test "Imaginary part of: ctanh_upward (0xcp-4 + 0x1.4p+0 i)":
-float: 3
-ifloat: 3
-
-# erf
-Test "erf (-0x8p-4)":
-ildouble: 1
-ldouble: 1
-Test "erf (0x1.4p+0)":
-double: 1
-idouble: 1
-
-# erfc
-Test "erfc (0x1.4p+0)":
-ildouble: 1
-ldouble: 1
-Test "erfc (0x2p+0)":
-double: 1
-idouble: 1
-Test "erfc (0x3.ee6078p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "erfc (0x4.2p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "erfc (0x6.4p+4)":
-ildouble: 1
-ldouble: 1
-Test "erfc (0x7.fe8008p+0)":
-ildouble: 1
-ldouble: 1
-Test "erfc (0x7.fffd58p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "erfc (0x7.fffd59e26af37bc8p+0)":
-ildouble: 1
-ldouble: 1
-Test "erfc (0x7.fffd59e26af37bcp+0)":
-ildouble: 1
-ldouble: 1
-Test "erfc (0x7.ffff2p+0)":
-double: 1
-idouble: 1
-# exp10
-Test "exp10 (0xcp-4)":
-ildouble: 1
-ldouble: 1
+Function: Real part of "clog_downward":
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
+ildouble: 7
+ldouble: 7
-# exp10_downward
-Test "exp10_downward (0x1.348e45573a1dd72cp+8)":
-ildouble: 2
-ldouble: 2
-Test "exp10_downward (0x3p+0)":
+Function: Imaginary part of "clog_downward":
double: 1
float: 1
idouble: 1
@@ -8476,29 +883,15 @@ ifloat: 1
ildouble: 1
ldouble: 1
-# exp10_tonearest
-Test "exp10_tonearest (0xcp-4)":
-ildouble: 1
-ldouble: 1
-
-# exp10_towardzero
-Test "exp10_towardzero (-0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "exp10_towardzero (0x1.344p+12)":
-ildouble: 1
-ldouble: 1
-Test "exp10_towardzero (0x3p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+Function: Real part of "clog_towardzero":
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
+ildouble: 8
+ldouble: 8
-# exp10_upward
-Test "exp10_upward (0x1.344p+12)":
-ildouble: 1
-ldouble: 1
-Test "exp10_upward (0x3p+0)":
+Function: Imaginary part of "clog_towardzero":
double: 1
float: 1
idouble: 1
@@ -8506,3140 +899,445 @@ ifloat: 1
ildouble: 1
ldouble: 1
-# exp_downward
-Test "exp_downward (0x2.c5cp+8)":
-double: 1
-idouble: 1
-
-# exp_towardzero
-Test "exp_towardzero (0x2.c5cp+8)":
-double: 1
-idouble: 1
-
-# exp_upward
-Test "exp_upward (0x2.c679d1f73f0fb628p+8)":
-ildouble: 1
-ldouble: 1
-
-# expm1
-Test "expm1 (-0x1p-64)":
-ildouble: 1
-ldouble: 1
-Test "expm1 (-0x2.dp+4)":
-ildouble: 1
-ldouble: 1
-Test "expm1 (-0x4p-12)":
-ildouble: 1
-ldouble: 1
-Test "expm1 (0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "expm1 (0x2.c5c4p+12)":
-ildouble: 1
-ldouble: 1
+Function: Real part of "clog_upward":
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
+ildouble: 6
+ldouble: 6
-# expm1_downward
-Test "expm1_downward (-0x1p-100)":
+Function: Imaginary part of "clog_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "expm1_downward (-0x2.ep+4)":
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (-0x4.9p+4)":
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (-0x4.bp+4)":
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (-0x4p-4)":
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (-0x5p+4)":
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (-0x6.4p+4)":
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (0x1p-100)":
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (0x1p-32)":
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (0x3.2p+4)":
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (0x4p-12)":
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (0x4p-52)":
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (0x7.fp+4)":
-ildouble: 1
-ldouble: 1
-Test "expm1_downward (0x8p-32)":
-ildouble: 1
-ldouble: 1
-# expm1_tonearest
-Test "expm1_tonearest (-0x1p-64)":
-ildouble: 1
-ldouble: 1
-Test "expm1_tonearest (-0x2.dp+4)":
-ildouble: 1
-ldouble: 1
-Test "expm1_tonearest (-0x4p-12)":
-ildouble: 1
-ldouble: 1
-Test "expm1_tonearest (0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "expm1_tonearest (0x2.c5c4p+12)":
+Function: "cos":
ildouble: 1
ldouble: 1
-# expm1_towardzero
-Test "expm1_towardzero (-0x1.2p+4)":
-float: 1
-Test "expm1_towardzero (-0x1.86ap+16)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x1p-100)":
-double: 1
-float: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x1p-20)":
-ildouble: 2
-ldouble: 2
-Test "expm1_towardzero (-0x1p-32)":
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x1p-64)":
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x2.4p+4)":
-float: 1
-Test "expm1_towardzero (-0x2.5p+4)":
-float: 1
-Test "expm1_towardzero (-0x2.6p+4)":
-double: 1
-float: 1
-Test "expm1_towardzero (-0x2.71p+12)":
+Function: "cos_downward":
double: 1
-float: 1
idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x2.cp+4)":
-double: 1
-float: 1
-Test "expm1_towardzero (-0x2.dp+4)":
-double: 1
-float: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x2.ep+4)":
-double: 1
-float: 1
-Test "expm1_towardzero (-0x3.e8p+8)":
+ildouble: 3
+ldouble: 3
+
+Function: "cos_towardzero":
double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x4.9p+4)":
-double: 1
-float: 1
-Test "expm1_towardzero (-0x4.ap+4)":
-double: 1
-float: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x4.bp+4)":
-double: 1
-float: 1
-Test "expm1_towardzero (-0x4.ep+4)":
-double: 1
-float: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x4.fp+4)":
-double: 1
-float: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x4p-12)":
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0x4p-52)":
idouble: 1
ildouble: 2
ldouble: 2
-Test "expm1_towardzero (-0x5p+4)":
-double: 1
-float: 1
-Test "expm1_towardzero (-0x6.4p+4)":
-double: 1
-float: 1
-Test "expm1_towardzero (-0x8p-32)":
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0xf.fffffffffffffffp+16380)":
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (-0xf.fffffp+124)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (0x1p-100)":
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (0x1p-32)":
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (0x3.2p+4)":
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (0x4p-12)":
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (0x4p-52)":
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (0x7.fp+4)":
-ildouble: 1
-ldouble: 1
-Test "expm1_towardzero (0x8p-32)":
-ildouble: 1
-ldouble: 1
-# expm1_upward
-Test "expm1_upward (-0x1.2p+4)":
-float: 1
-Test "expm1_upward (-0x1.86ap+16)":
+Function: "cos_upward":
double: 1
-float: 1
idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x1p-100)":
-double: 1
-float: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x1p-20)":
ildouble: 2
ldouble: 2
-Test "expm1_upward (-0x1p-32)":
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x1p-64)":
+
+Function: "cosh":
ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x2.4p+4)":
-float: 1
-Test "expm1_upward (-0x2.5p+4)":
-float: 1
-Test "expm1_upward (-0x2.6p+4)":
-double: 1
-float: 1
-Test "expm1_upward (-0x2.71p+12)":
+ldouble: 2
+
+Function: "cosh_downward":
double: 1
-float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x2.cp+4)":
-double: 1
-float: 1
-Test "expm1_upward (-0x2.dp+4)":
-double: 1
-float: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x2.ep+4)":
-double: 1
-float: 1
-Test "expm1_upward (-0x3.e8p+8)":
+ildouble: 2
+ldouble: 3
+
+Function: "cosh_towardzero":
double: 1
-float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x4.9p+4)":
-double: 1
-float: 1
-Test "expm1_upward (-0x4.ap+4)":
-double: 1
-float: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x4.bp+4)":
-double: 1
-float: 1
-Test "expm1_upward (-0x4.ep+4)":
-double: 1
-float: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x4.fp+4)":
-double: 1
-float: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x4p-12)":
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0x4p-52)":
-idouble: 1
ildouble: 2
ldouble: 2
-Test "expm1_upward (-0x5p+4)":
-double: 1
-float: 1
-Test "expm1_upward (-0x6.4p+4)":
-double: 1
-float: 1
-Test "expm1_upward (-0x8p-32)":
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0xf.fffffffffffffffp+16380)":
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (-0xf.fffffp+124)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (0x1.f4p+8)":
-ildouble: 1
-ldouble: 1
-Test "expm1_upward (0x4p-4)":
-ildouble: 1
-ldouble: 1
-# gamma
-Test "gamma (-0x1p-20)":
-double: 1
-idouble: 1
-Test "gamma (-0x2p-16)":
+Function: "cosh_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "gamma (-0x4p-12)":
+ildouble: 2
+ldouble: 3
+
+Function: Real part of "cpow":
+double: 2
+float: 5
+idouble: 2
+ifloat: 5
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "cpow":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "gamma (-0x4p-32)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "gamma (-0x8p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "gamma (-0x8p-8)":
-double: 1
-idouble: 1
-Test "gamma (0x1.3333333333334p+0)":
-ildouble: 1
-ldouble: 1
-Test "gamma (0x1p-40)":
-ildouble: 1
-ldouble: 1
-Test "gamma (0xb.333333333333334p-4)":
-ildouble: 1
-ldouble: 1
-Test "gamma (0xb.3333333333338p-4)":
-ildouble: 1
-ldouble: 1
+ildouble: 4
+ldouble: 4
-# hypot
-Test "hypot (-0xb.333333333333333p-4, -0xc.666666666666p+0)":
-ildouble: 1
-Test "hypot (-0xb.333333333333333p-4, 0xc.666666666666p+0)":
-ildouble: 1
-Test "hypot (-0xb.333333333333334p-4, -0xc.666666666666p+0)":
-ildouble: 1
-Test "hypot (-0xb.333333333333334p-4, 0xc.666666666666p+0)":
-ildouble: 1
-Test "hypot (-0xb.3333333333338p-4, -0xc.6666666666668p+0)":
-ldouble: 1
-Test "hypot (-0xb.3333333333338p-4, 0xc.6666666666668p+0)":
-ldouble: 1
-Test "hypot (-0xb.33333p-4, -0xc.666666666666p+0)":
-ildouble: 1
-ldouble: 1
-Test "hypot (-0xb.33333p-4, 0xc.666666666666p+0)":
-ildouble: 1
-ldouble: 1
-Test "hypot (-0xc.6666666666668p+0, -0xb.3333333333338p-4)":
-ldouble: 1
-Test "hypot (-0xc.6666666666668p+0, 0xb.3333333333338p-4)":
-ldouble: 1
-Test "hypot (-0xc.666666666666p+0, -0xb.333333333333333p-4)":
-ildouble: 1
-Test "hypot (-0xc.666666666666p+0, -0xb.333333333333334p-4)":
-ildouble: 1
-Test "hypot (-0xc.666666666666p+0, -0xb.33333p-4)":
-ildouble: 1
-ldouble: 1
-Test "hypot (-0xc.666666666666p+0, 0xb.333333333333333p-4)":
-ildouble: 1
-Test "hypot (-0xc.666666666666p+0, 0xb.333333333333334p-4)":
-ildouble: 1
-Test "hypot (-0xc.666666666666p+0, 0xb.33333p-4)":
-ildouble: 1
-ldouble: 1
-Test "hypot (0x1.23456789abcdef02p-500, 0x1.23456789abcdefp-500)":
-ildouble: 1
-ldouble: 1
-Test "hypot (0x1.23456789abcdefp-500, 0x1.23456789abcdef02p-500)":
-ildouble: 1
-ldouble: 1
-Test "hypot (0x1.23456789abcdefp-500, 0x1.23456789abcdfp-500)":
-ldouble: 1
-Test "hypot (0x1.23456789abcdfp-500, 0x1.23456789abcdefp-500)":
-ldouble: 1
-Test "hypot (0xb.333333333333333p-4, -0xc.666666666666p+0)":
-ildouble: 1
-Test "hypot (0xb.333333333333333p-4, 0xc.666666666666p+0)":
-ildouble: 1
-Test "hypot (0xb.333333333333334p-4, -0xc.666666666666p+0)":
-ildouble: 1
-Test "hypot (0xb.333333333333334p-4, 0xc.666666666666p+0)":
-ildouble: 1
-Test "hypot (0xb.3333333333338p-4, -0xc.6666666666668p+0)":
-ldouble: 1
-Test "hypot (0xb.3333333333338p-4, 0xc.6666666666668p+0)":
-ldouble: 1
-Test "hypot (0xb.33333p-4, -0xc.666666666666p+0)":
-ildouble: 1
-ldouble: 1
-Test "hypot (0xb.33333p-4, 0xc.666666666666p+0)":
-ildouble: 1
-ldouble: 1
-Test "hypot (0xc.6666666666668p+0, -0xb.3333333333338p-4)":
-ldouble: 1
-Test "hypot (0xc.6666666666668p+0, 0xb.3333333333338p-4)":
-ldouble: 1
-Test "hypot (0xc.666666666666p+0, -0xb.333333333333333p-4)":
-ildouble: 1
-Test "hypot (0xc.666666666666p+0, -0xb.333333333333334p-4)":
-ildouble: 1
-Test "hypot (0xc.666666666666p+0, -0xb.33333p-4)":
-ildouble: 1
-ldouble: 1
-Test "hypot (0xc.666666666666p+0, 0xb.333333333333333p-4)":
-ildouble: 1
-Test "hypot (0xc.666666666666p+0, 0xb.333333333333334p-4)":
-ildouble: 1
-Test "hypot (0xc.666666666666p+0, 0xb.33333p-4)":
-ildouble: 1
-ldouble: 1
+Function: Real part of "cpow_downward":
+double: 5
+float: 8
+idouble: 5
+ifloat: 8
+ildouble: 7
+ldouble: 7
-# j0
-Test "j0 (-0x2.002000002p+592)":
-ildouble: 2
-ldouble: 2
-Test "j0 (-0x4p+0)":
+Function: Imaginary part of "cpow_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2
ldouble: 2
-Test "j0 (-0xf.fffffp+124)":
+
+Function: Real part of "cpow_towardzero":
+double: 5
+float: 8
+idouble: 5
+ifloat: 8
+ildouble: 7
+ldouble: 7
+
+Function: Imaginary part of "cpow_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "j0 (0x2p+0)":
+
+Function: Real part of "cpow_upward":
+double: 4
float: 1
+idouble: 4
ifloat: 1
-Test "j0 (0x4p+0)":
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "cpow_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2
ldouble: 2
-Test "j0 (0x4p+16380)":
-ildouble: 1
-ldouble: 1
-Test "j0 (0x8p+0)":
-float: 1
-ifloat: 1
-Test "j0 (0x8p+1020)":
-double: 1
-idouble: 1
-Test "j0 (0xap+0)":
+
+Function: Real part of "csin":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "j0 (0xe.be71dp+104)":
-float: 1
-ifloat: 1
-Test "j0 (0xf.ffffffffffff8p+1020)":
ildouble: 1
ldouble: 1
-Test "j0 (0xf.fffffp+124)":
+
+Function: Imaginary part of "csin":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-# j1
-Test "j1 (0x1.ff00000000002p+840)":
-double: 1
-idouble: 1
-Test "j1 (0x2p+0)":
-double: 1
-idouble: 1
-Test "j1 (0x4.ffcp+72)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "j1 (0x4p+16380)":
-ildouble: 1
-ldouble: 1
-Test "j1 (0x8p+0)":
-float: 1
-ifloat: 1
-Test "j1 (0xap+0)":
+Function: Real part of "csin_downward":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "j1 (0xf.fffffp+124)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+ifloat: 2
+ildouble: 3
+ldouble: 3
-# jn
-Test "jn (0, -0x4p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "jn (0, 0x2p+0)":
-float: 1
-ifloat: 1
-Test "jn (0, 0x4p+0)":
+Function: Imaginary part of "csin_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "jn (0, 0x8p+0)":
-float: 1
-ifloat: 1
-Test "jn (0, 0xap+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (1, 0x2p+0)":
-double: 1
-idouble: 1
-Test "jn (1, 0x8p+0)":
-float: 1
-ifloat: 1
-Test "jn (1, 0xap+0)":
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "csin_towardzero":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (10, -0x1p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (10, 0x1p+0)":
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "csin_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (10, 0x2p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (10, 0x2p-4)":
-float: 1
-ifloat: 1
-Test "jn (10, 0xap+0)":
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "csin_upward":
double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "jn (10, 0xcp-4)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "jn (2, 0x2.67a2a4p+0)":
-float: 1
-ifloat: 1
ildouble: 3
ldouble: 3
-Test "jn (2, 0x2.67a2a5d2e36800fcp+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (2, 0x2.67a2a5d2e36801p+0)":
-ildouble: 2
-ldouble: 2
-Test "jn (2, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "jn (2, 0x2.67a2a5d2e368p+0)":
+
+Function: Imaginary part of "csin_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "csinh":
double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "jn (2, 0x2.67a2a8p+0)":
float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "jn (2, 0x8p+1020)":
-double: 1
idouble: 1
-Test "jn (2, 0x8p+124)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "jn (2, 0xf.fffb1p+96)":
-float: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "jn (2, 0xf.ffffffffffff8p+1020)":
-ildouble: 1
-ldouble: 1
-Test "jn (2, 0xf.fffffp+124)":
+
+Function: Imaginary part of "csinh":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "jn (3, -0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (3, 0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (3, 0x2.67a2a4p+0)":
+
+Function: Real part of "csinh_downward":
double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "jn (3, 0x2.67a2a5d2e36801p+0)":
ildouble: 3
ldouble: 3
-Test "jn (3, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "jn (3, 0x2.67a2a8p+0)":
-float: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "jn (3, 0x2p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "jn (3, 0xap+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (4, 0x2.67a2a4p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (4, 0x2.67a2a5d2e36800fcp+0)":
-ildouble: 2
-ldouble: 2
-Test "jn (4, 0x2.67a2a5d2e36801p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (4, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-Test "jn (4, 0x2.67a2a5d2e368p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (4, 0x2.67a2a8p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (5, 0x2.67a2a4p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (5, 0x2.67a2a5d2e36800fcp+0)":
-ildouble: 2
-ldouble: 2
-Test "jn (5, 0x2.67a2a5d2e36801p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (5, 0x2.67a2a5d2e368p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (6, 0x2.67a2a4p+0)":
+
+Function: Imaginary part of "csinh_downward":
+double: 2
float: 2
+idouble: 2
ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "jn (6, 0x2.67a2a5d2e36800fcp+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (6, 0x2.67a2a5d2e36801p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (6, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "jn (6, 0x2.67a2a5d2e368p+0)":
-double: 1
-idouble: 1
-Test "jn (6, 0x2.67a2a8p+0)":
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "csinh_towardzero":
double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "jn (7, 0x2.67a2a4p+0)":
-double: 1
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "csinh_towardzero":
+double: 2
float: 2
-idouble: 1
+idouble: 2
ifloat: 2
-Test "jn (7, 0x2.67a2a5d2e36800fcp+0)":
-ildouble: 2
-ldouble: 2
-Test "jn (7, 0x2.67a2a5d2e36801p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (7, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-ildouble: 4
-ldouble: 4
-Test "jn (7, 0x2.67a2a5d2e368p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "jn (7, 0x2.67a2a8p+0)":
-float: 1
-ifloat: 1
-Test "jn (8, 0x2.67a2a4p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (8, 0x2.67a2a5d2e3682p+0)":
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "csinh_upward":
double: 2
+float: 2
idouble: 2
-Test "jn (8, 0x2.67a2a5d2e368p+0)":
-double: 1
-idouble: 1
-Test "jn (8, 0x2.67a2a8p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (9, 0x2.67a2a4p+0)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "jn (9, 0x2.67a2a5d2e3682p+0)":
-double: 1
-idouble: 1
-Test "jn (9, 0x2.67a2a5d2e368p+0)":
-ildouble: 1
-ldouble: 1
-Test "jn (9, 0x2.67a2a8p+0)":
-float: 3
-ifloat: 3
+ifloat: 2
ildouble: 3
ldouble: 3
-# lgamma
-Test "lgamma (-0x1p-20)":
-double: 1
-idouble: 1
-Test "lgamma (-0x2p-16)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "lgamma (-0x4p-12)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "lgamma (-0x4p-32)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "lgamma (-0x8p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "lgamma (-0x8p-8)":
-double: 1
-idouble: 1
-Test "lgamma (0x1.3333333333334p+0)":
-ildouble: 1
-ldouble: 1
-Test "lgamma (0x1p-40)":
-ildouble: 1
-ldouble: 1
-Test "lgamma (0xb.333333333333334p-4)":
-ildouble: 1
-ldouble: 1
-Test "lgamma (0xb.3333333333338p-4)":
-ildouble: 1
-ldouble: 1
-
-# log
-Test "log (0x5.e2d59p-4)":
-ildouble: 1
-ldouble: 1
-
-# log10
-Test "log10 (0x1.999998p-4)":
-ildouble: 1
-ldouble: 1
-Test "log10 (0x1.9999999999999998p-4)":
-ildouble: 1
-ldouble: 1
-Test "log10 (0x1.999999999999ap-4)":
-ildouble: 1
-ldouble: 1
-Test "log10 (0x2.b7e151628aed2a68p+0)":
-ildouble: 1
-ldouble: 1
-Test "log10 (0x2.b7e151628aed2p+0)":
-ildouble: 1
-ldouble: 1
-Test "log10 (0x4p-128)":
-ildouble: 1
-ldouble: 1
-Test "log10 (0xcp-4)":
-ildouble: 1
-ldouble: 1
-
-# pow
-Test "pow (0x1.0000000000001p+0, 0x2.468adp+60)":
-ildouble: 1
-ldouble: 1
-Test "pow (0xf.ffffffffffff8p-4, 0x4.8d15ap+60)":
-ildouble: 1
-ldouble: 1
-Test "pow (0xf.fffffp-4, -0x1p+24)":
-ildouble: 1
-ldouble: 1
-
-# pow10
-Test "pow10 (0xcp-4)":
-ildouble: 1
-ldouble: 1
-
-# pow_downward
-Test "pow_downward (1.0625, 1.125)":
-double: 1
-idouble: 1
-Test "pow_downward (1.5, 1.03125)":
-float: 1
-ifloat: 1
-
-# pow_tonearest
-Test "pow_tonearest (0x1.0000000000001p+0, 0x2.468adp+60)":
-ildouble: 1
-ldouble: 1
-Test "pow_tonearest (0xf.ffffffffffff8p-4, 0x4.8d15ap+60)":
-ildouble: 1
-ldouble: 1
-Test "pow_tonearest (0xf.fffffp-4, -0x1p+24)":
-ildouble: 1
-ldouble: 1
-
-# pow_towardzero
-Test "pow_towardzero (1.0625, 1.125)":
-double: 1
-idouble: 1
-Test "pow_towardzero (1.5, 1.03125)":
-float: 1
-ifloat: 1
-
-# pow_upward
-Test "pow_upward (1.0625, 1.125)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "pow_upward (1.5, 1.03125)":
+Function: Imaginary part of "csinh_upward":
double: 1
+float: 2
idouble: 1
-ildouble: 1
-ldouble: 1
-
-# sin
-Test "sin (0xf.ffffffffffff8p+1020)":
-ildouble: 1
-ldouble: 1
+ifloat: 2
+ildouble: 3
+ldouble: 3
-# sin_downward
-Test "sin_downward (-0x1.921fb4p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (-0x1.921fb6p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (-0x2p+64)":
-double: 1
-idouble: 1
-Test "sin_downward (-0x8.60a91c16b9b28p-4)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (-0x8.60a91c16b9b2c24p-4)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (-0x8.60a91c16b9b3p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (-0x8.60a91p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (-0x8.60a92p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x1.921fb54442d18468p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x1.921fb54442d1846ap+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x1p+28)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x2.1e19e0c9bab24p+72)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x2.1e19e4p+72)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x2.1e19ep+72)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x2.553534p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x2.5535376715bap+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x2p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x3.be735c19be9fep+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x3.be735c19be9ffffcp+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x3.be735c19beap+0)":
-ildouble: 2
-ldouble: 2
-Test "sin_downward (0x3.be735cp+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x3.be736p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x3.ec2a0250032a0004p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x3.ec2a0250032a2p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x3.ec2a0250032ap+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x3.ec2a04p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x3.ec2ap+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x3p+0)":
-ildouble: 2
-ldouble: 2
-Test "sin_downward (0x4.093388p-4)":
-double: 1
-idouble: 1
-Test "sin_downward (0x4.1237e153f7080008p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x4.1237e153f7084p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x4.1237e153f708p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x4.1237e8p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x4.1237ep+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x4.c92d08p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x4.c92d0ffa4bf00008p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x4.c92d0ffa4bf04p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x4.c92d0ffa4bfp+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x4.c92d1p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x4p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x4p+48)":
-double: 1
-idouble: 1
-Test "sin_downward (0x5.fbec7477d4a80008p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x5.fbec7477d4a84p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x5.fbec7477d4a8p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x5.fbec78p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x5.fbec7p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x5p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x6p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0x8p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0x8p+1020)":
-double: 1
-idouble: 1
-Test "sin_downward (0x9p+0)":
-double: 1
-idouble: 1
-Test "sin_downward (0xap+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0xc.d4966d92d1708p-4)":
-double: 1
-idouble: 1
-Test "sin_downward (0xc.d4966p-4)":
-double: 1
-idouble: 1
-Test "sin_downward (0xe.ef3af1b5d8p-4)":
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0xf.ffffcp+124)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_downward (0xf.ffffffffffff8p+1020)":
+Function: Real part of "csqrt":
double: 1
idouble: 1
ildouble: 2
ldouble: 2
-Test "sin_downward (0xf.fffffp+124)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-# sin_tonearest
-Test "sin_tonearest (0xf.ffffffffffff8p+1020)":
-ildouble: 1
-ldouble: 1
-
-# sin_towardzero
-Test "sin_towardzero (-0x1.921fb54442d18468p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (-0x1.921fb54442d1846ap+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (-0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (-0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (-0x2p+64)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0x1.921fb54442d18468p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0x1.921fb54442d1846ap+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x2.1e19ep+72)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x2.553534p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x2.5535376715bap+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0x2p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x2p+64)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0x3.be735c19beap+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0x3.be735cp+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x3.ec2a0250032ap+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0x3.ec2a04p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4.093388p-4)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4.1237e153f708p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0x4.1237e8p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4.1237ep+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4.c92d0ffa4bf04p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4.c92d0ffa4bfp+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x4p+48)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x5.fbec7p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x8p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x8p+1020)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0x9p+0)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0xb.fa09ap+100)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0xc.d4966d92d1708p-4)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0xc.d4966p-4)":
-double: 1
-idouble: 1
-Test "sin_towardzero (0xf.ffffcp+124)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_towardzero (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-
-# sin_upward
-Test "sin_upward (-0x1.921fb4p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x1.921fb54442d18468p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x1.921fb54442d1846ap+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x1.921fb54442d18p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x1.921fb54442d19p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x1.921fb6p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x2p+64)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x8.60a91c16b9b28p-4)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x8.60a91c16b9b2c23p-4)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x8.60a91c16b9b2c24p-4)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x8.60a91c16b9b3p-4)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x8.60a91p-4)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (-0x8.60a92p-4)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x1.921fb4p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x1.921fb6p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x1p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x1p+120)":
-double: 1
-idouble: 1
-Test "sin_upward (0x1p+28)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x2.1e19e0c9bab24p+72)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x2.1e19ep+72)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x2.5535376715b9ep+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x2.5535376715bap+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x2.553538p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x2p+64)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x3.be735c19be9fep+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x3.be735c19be9ffffcp+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x3.be735c19beap+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x3.be735cp+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x3.be736p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x3.ec2a0250032a0004p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x3.ec2a0250032a2p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x3.ec2a0250032ap+0)":
-ildouble: 2
-ldouble: 2
-Test "sin_upward (0x3.ec2a04p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x3.ec2ap+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x3p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4.093385688a2d1508p-4)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4.093385688a2d4p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x4.093385688a2dp-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x4.09338p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x4.1237e153f7080008p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4.1237e153f7084p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4.1237e153f708p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4.1237e8p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4.1237ep+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4.c92d08p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4.c92d0ffa4bf00008p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4.c92d0ffa4bf04p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4.c92d0ffa4bfp+0)":
+Function: Imaginary part of "csqrt":
double: 1
idouble: 1
-Test "sin_upward (0x4.c92d1p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x4p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x5.fbec7477d4a80008p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x5.fbec7477d4a84p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x5.fbec7477d4a8p+0)":
ildouble: 2
ldouble: 2
-Test "sin_upward (0x5.fbec78p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x5.fbec7p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x5p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x6p+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0x7p+0)":
-double: 1
-idouble: 1
-Test "sin_upward (0x8.60a91c16b9b3p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x8.60a91p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x8.60a92p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0x8p+124)":
-double: 1
-idouble: 1
-Test "sin_upward (0xap+0)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0xb.fa09ap+100)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0xc.d4966d92d171p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xc.d4967p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0xcp-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xe.ef3af1b5d8008p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xe.ef3af1b5d8p-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xe.ef3afp-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xe.ef3bp-4)":
-double: 1
-idouble: 1
-Test "sin_upward (0xf.ffffffffffff8p+1020)":
-ildouble: 1
-ldouble: 1
-Test "sin_upward (0xf.fffffp+124)":
-ildouble: 1
-ldouble: 1
-
-# sincos
-Test "sincos (0x1.921fb4p+0) extra output 2":
-ildouble: 1
-ldouble: 1
-Test "sincos (0xf.ffffffffffff8p+1020) extra output 1":
-ildouble: 1
-ldouble: 1
-
-# sinh
-Test "sinh (0xcp-4)":
-ildouble: 1
-# sinh_downward
-Test "sinh_downward (0x1.6p+4)":
-ildouble: 1
-ldouble: 1
-Test "sinh_downward (0x1.7p+4)":
-ildouble: 1
-ldouble: 1
-Test "sinh_downward (0x1.8p+4)":
-ildouble: 1
-ldouble: 1
-Test "sinh_downward (0x8p-32)":
-ildouble: 1
-ldouble: 1
-Test "sinh_downward (0xcp-4)":
-float: 1
-ildouble: 1
-
-# sinh_tonearest
-Test "sinh_tonearest (0xcp-4)":
-ildouble: 1
-
-# sinh_towardzero
-Test "sinh_towardzero (0x1.7p+4)":
-ildouble: 1
-ldouble: 1
-Test "sinh_towardzero (0x8p-32)":
-ildouble: 1
-ldouble: 1
-Test "sinh_towardzero (0xcp-4)":
-float: 1
-ildouble: 1
-
-# sinh_upward
-Test "sinh_upward (0x1.6p+4)":
-ildouble: 1
-ldouble: 1
-Test "sinh_upward (0x8p-32)":
-double: 1
-float: 1
-Test "sinh_upward (0xcp-4)":
-float: 1
-
-# tan
-Test "tan (-0xc.90fdbp-4)":
-float: 1
-ifloat: 1
-Test "tan (-0xc.90fdcp-4)":
-float: 1
-ifloat: 1
-Test "tan (-0xc.90fep-4)":
-float: 1
-ifloat: 1
-Test "tan (-0xc.91p-4)":
-float: 1
-ifloat: 1
-Test "tan (-0xc.92p-4)":
-float: 1
-ifloat: 1
-Test "tan (-0xc.94p-4)":
-float: 1
-ifloat: 1
-Test "tan (0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "tan (0x2.1e19e0c9bab24p+72)":
-ildouble: 1
-ldouble: 1
-Test "tan (0x2p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan (0x8p+0)":
-ildouble: 1
-ldouble: 1
-Test "tan (0x8p+16380)":
-ildouble: 1
-ldouble: 1
-Test "tan (0xc.90fdbp-4)":
-float: 1
-ifloat: 1
-Test "tan (0xc.90fdcp-4)":
-float: 1
-ifloat: 1
-Test "tan (0xc.90fep-4)":
-float: 1
-ifloat: 1
-Test "tan (0xc.91p-4)":
-float: 1
-ifloat: 1
-Test "tan (0xc.92p-4)":
-float: 1
-ifloat: 1
-Test "tan (0xc.94p-4)":
-float: 1
-ifloat: 1
-
-# tan_downward
-Test "tan_downward (-0x2p+64)":
-double: 1
-idouble: 1
-Test "tan_downward (-0xc.908p-4)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90cp-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90ep-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90f8p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90fcp-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90fd8p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90fdap-4)":
+Function: Real part of "csqrt_downward":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90fdbp-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90fdcp-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90fdp-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90fep-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.90fp-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.91p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.92p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.94p-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.98p-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.9p-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (-0xc.ap-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (0x1p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (0x2.1e19e0c9bab24p+72)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (0x2p+0)":
-double: 1
-idouble: 1
-Test "tan_downward (0x3p+0)":
-double: 1
-idouble: 1
-Test "tan_downward (0x4p+0)":
-ildouble: 1
-ldouble: 1
-Test "tan_downward (0x6p+0)":
-double: 1
-idouble: 1
-Test "tan_downward (0x7p+0)":
-double: 1
-idouble: 1
-Test "tan_downward (0x8p+0)":
-ildouble: 1
-ldouble: 1
-Test "tan_downward (0x8p+1020)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_downward (0xc.908p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (0xc.90cp-4)":
-double: 1
-idouble: 1
-Test "tan_downward (0xc.90fcp-4)":
-double: 1
-idouble: 1
-Test "tan_downward (0xc.90fdaa22168c8p-4)":
-double: 1
-idouble: 1
-Test "tan_downward (0xc.90fdcp-4)":
-float: 1
-ifloat: 1
-Test "tan_downward (0xc.90fdp-4)":
-double: 1
-idouble: 1
-Test "tan_downward (0xc.90fep-4)":
-float: 1
-ifloat: 1
-Test "tan_downward (0xc.91p-4)":
-float: 1
-ifloat: 1
-Test "tan_downward (0xc.92p-4)":
-float: 1
-ifloat: 1
-Test "tan_downward (0xc.94p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (0xc.98p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_downward (0xcp-4)":
-double: 1
-idouble: 1
-
-# tan_tonearest
-Test "tan_tonearest (-0xc.90fdbp-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (-0xc.90fdcp-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (-0xc.90fep-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (-0xc.91p-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (-0xc.92p-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (-0xc.94p-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "tan_tonearest (0x2.1e19e0c9bab24p+72)":
-ildouble: 1
-ldouble: 1
-Test "tan_tonearest (0x2p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_tonearest (0x8p+0)":
-ildouble: 1
-ldouble: 1
-Test "tan_tonearest (0x8p+16380)":
-ildouble: 1
-ldouble: 1
-Test "tan_tonearest (0xc.90fdbp-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (0xc.90fdcp-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (0xc.90fep-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (0xc.91p-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (0xc.92p-4)":
-float: 1
-ifloat: 1
-Test "tan_tonearest (0xc.94p-4)":
-float: 1
-ifloat: 1
+ildouble: 4
+ldouble: 4
-# tan_towardzero
-Test "tan_towardzero (-0x2p+64)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.908p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_towardzero (-0xc.90cp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.90fcp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.90fdp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.94p-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.98p-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (-0xc.ap-4)":
-float: 1
-ifloat: 1
-Test "tan_towardzero (0x1p+0)":
+Function: Imaginary part of "csqrt_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_towardzero (0x2.1e19e0c9bab24p+72)":
-ildouble: 1
-ldouble: 1
-Test "tan_towardzero (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x2.1e19ep+72)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x2p+64)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x5p+0)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x7p+0)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0x8p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_towardzero (0x9p+0)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.908p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tan_towardzero (0xc.90cp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.90fcp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.90fdaa22168c8p-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.90fdp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.94p-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.98p-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xc.ap-4)":
-float: 1
-ifloat: 1
-Test "tan_towardzero (0xcp-4)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "tan_towardzero (0xf.fffffp+124)":
-double: 1
-idouble: 1
+ildouble: 3
+ldouble: 3
-# tan_upward
-Test "tan_upward (-0xc.908p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90cp-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90ep-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90f8p-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90fcp-4)":
+Function: Real part of "csqrt_towardzero":
double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90fd8p-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90fdap-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90fdbp-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90fdcp-4)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90fdp-4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90fep-4)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.90fp-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.91p-4)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.92p-4)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.94p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.98p-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.9p-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_upward (-0xc.ap-4)":
-ildouble: 1
-ldouble: 1
-Test "tan_upward (0x1p+0)":
-float: 1
-ifloat: 1
-Test "tan_upward (0x2.1e19e4p+72)":
-double: 1
-idouble: 1
-Test "tan_upward (0x2.1e19ep+72)":
-double: 1
-idouble: 1
-Test "tan_upward (0x2p+64)":
-double: 1
-idouble: 1
-Test "tan_upward (0x4p+0)":
-double: 1
-idouble: 1
-Test "tan_upward (0x5p+0)":
+ildouble: 4
+ldouble: 4
+
+Function: Imaginary part of "csqrt_towardzero":
double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "tan_upward (0x7p+0)":
float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (0x8p+0)":
-double: 1
-idouble: 1
-Test "tan_upward (0x9p+0)":
-double: 1
idouble: 1
-Test "tan_upward (0xap+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (0xc.908p-4)":
-float: 1
ifloat: 1
-Test "tan_upward (0xc.90ep-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90f8p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fd8p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fdap-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fdbp-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fdcp-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fep-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.90fp-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.91p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.92p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.9p-4)":
-double: 1
-idouble: 1
-Test "tan_upward (0xc.ap-4)":
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "csqrt_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "tan_upward (0xcp-4)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tan_upward (0xf.ffffffffffff8p+1020)":
-double: 1
-idouble: 1
-Test "tan_upward (0xf.fffffp+124)":
-double: 1
-idouble: 1
+ildouble: 5
+ldouble: 5
-# tgamma
-Test "tgamma (-0x1.000002p+0)":
+Function: Imaginary part of "csqrt_upward":
double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1.3ffffep+4)":
float: 1
-ifloat: 1
-Test "tgamma (-0x1.3ffffffffffffffep+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1.3ffffffffffffp+4)":
-double: 1
idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1.4000000000001p+4)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0x1.8p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1.dffffep+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1.dffffffffffffffep+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1.e000000000000002p+4)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0x1.e00002p+4)":
-float: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1.f3fffep+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1.f3fffffffffffp+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1.f400000000000002p+8)":
ildouble: 3
ldouble: 3
-Test "tgamma (-0x1.f40002p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1.fffffffffffffp+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x1p-24)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.0000000000000004p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.0000000000002p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.000004p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.146544p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.7ffffcp+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.7fffffffffffep+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.8000000000002p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x2.800004p+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.8ffffcp+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.8fffffffffffep+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.8ffffffffffffffcp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.8p+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x2.9000000000000004p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.9000000000002p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.900004p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.9ffffcp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.a00004p+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.edfffffffffffffcp+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.ee00000000002p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x2.fffffcp+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x3.0000000000002p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x3.000004p+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x3.1fffffffffffep+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x3.2000000000000004p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x3.2000000000002p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x3.200004p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x3.e7fffcp+8)":
-ildouble: 3
-ldouble: 3
-Test "tgamma (-0x3.e7fffffffffffffcp+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x3.e800000000000004p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x3.e800000000002p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x3.e80004p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x3.fffffcp+0)":
-float: 1
-ifloat: 1
-Test "tgamma (-0x3.ffffffffffffep+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x3.fffffffffffffffcp+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x4.0000000000000008p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x4.000008p+0)":
-float: 2
-ifloat: 2
-Test "tgamma (-0x4.8p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x4.e200000000000008p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x4.e200000000004p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x4.e20008p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x4.fffff8p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x4.ffffffffffffcp+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x5.0000000000000008p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x5.0000000000004p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x5.000008p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x5.8p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (-0x5.dbfff8p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x5.dbffffffffffcp+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x5.dbfffffffffffff8p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x5.dc00000000004p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x5.fffff8p+0)":
+
+Function: Real part of "ctan":
double: 1
float: 1
idouble: 1
ifloat: 1
-Test "tgamma (-0x5.ffffffffffffcp+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x6.0000000000000008p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x6.000008p+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0x6.3ffff8p+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x6.3fffffffffffcp+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x6.3ffffffffffffff8p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x6.4000000000000008p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x6.4000000000004p+4)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0x6.400008p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x6.8p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (-0x6.d600000000000008p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x6.fffff8p+0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
ildouble: 2
ldouble: 2
-Test "tgamma (-0x6.ffffffffffffcp+0)":
-double: 3
-idouble: 3
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x7.0000000000000008p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x7.0000000000004p+0)":
-double: 4
-idouble: 4
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x7.000008p+0)":
+
+Function: Imaginary part of "ctan":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "tgamma (-0x7.8p+0)":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x7.fffff8p+0)":
+
+Function: Real part of "ctan_downward":
double: 1
+float: 2
idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x7.ffffffffffffcp+0)":
+ifloat: 2
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "ctan_downward":
double: 2
+float: 2
idouble: 2
-Test "tgamma (-0x7.fffffffffffffff8p+0)":
+ifloat: 2
ildouble: 4
ldouble: 4
-Test "tgamma (-0x8.000000000000001p+0)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0x8.00001p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x8.8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x8p-4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x9.5fffffffffff8p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x9.5ffffffffffffffp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x9.6000000000008p+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0x9.60001p+4)":
-double: 1
-idouble: 1
-Test "tgamma (-0x9.8p+0)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0x9.ffffffffffff8p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xa.000000000000001p+0)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0xa.0000000000008p+0)":
-double: 1
-idouble: 1
-Test "tgamma (-0xa.00001p+0)":
-double: 1
+
+Function: Real part of "ctan_towardzero":
+double: 3
float: 1
-idouble: 1
+idouble: 3
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xa.c000000400008p+4)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0xa.c0001p+4)":
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "ctan_towardzero":
double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.4ffffffffffffffp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.500000000000001p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.5000000000008p+4)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0xb.5ffffffffffffffp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.600000000000001p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.6fffffffffff8p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.6ffffffffffffffp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.7fffffffffff8p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.7ffffffffffffffp+4)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0xb.8000000000008p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.bffffffffffffffp+4)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0xb.c00000000000001p+4)":
-ildouble: 3
-ldouble: 3
-Test "tgamma (-0xb.c000000000008p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.d00000000000001p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.d000000000008p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.dffffp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.e00000000000001p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.e000000000008p+4)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (-0xb.e0001p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.effffffffffffffp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.effffp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.f00000000000001p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xb.f000000000008p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xf.9fffffffffff8p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xf.9ffffffffffffffp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xf.a00000000000001p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xf.a000000000008p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xf.a0001p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (-0xf.fffffffffffffffp-4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x1.28p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x1.38p+4)":
-double: 1
-idouble: 1
-Test "tgamma (0x1.78p+4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x1.d8p+4)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x1.e8p+4)":
-float: 1
-ifloat: 1
-Test "tgamma (0x1.f8p+4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (0x1.fffffep+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x1.fffffffffffffffep+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x1p-24)":
-float: 1
-ifloat: 1
-Test "tgamma (0x1p-64)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x2.0000000000002p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x2.000004p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x2.08p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x2.28p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x2.30a43cp+4)":
-double: 1
-idouble: 1
-Test "tgamma (0x2.8p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (0x2.fffffcp+0)":
-float: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x2.ffffffffffffep+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x3.0000000000002p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x3.8p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (0x3.e8p+8)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x3.fffffcp+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x3.fffffffffffffffcp+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x3p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (0x4.0000000000000008p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x4.000008p+0)":
float: 1
+idouble: 2
ifloat: 1
-Test "tgamma (0x4.8p+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x4.fffff8p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x4.fffffffffffffff8p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x4p+0)":
-float: 1
-ifloat: 1
-Test "tgamma (0x5.0000000000000008p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x5.000008p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x5.8p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x5.fffff8p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x5.ffffffffffffcp+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x6.0000000000000008p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x6.000008p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x6.8p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x6.db8c603359a94p+8)":
-ildouble: 2
-ldouble: 2
-Test "tgamma (0x6.fffff8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x6.ffffffffffffcp+0)":
+ildouble: 4
+ldouble: 4
+
+Function: Real part of "ctan_upward":
double: 3
+float: 2
idouble: 3
-Test "tgamma (0x7.0000000000000008p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x7.0000000000004p+0)":
-double: 4
-idouble: 4
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x7.000008p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x7.8p+0)":
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "ctan_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x7.fffff8p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x7.ffffffffffffcp+0)":
-double: 2
-idouble: 2
-Test "tgamma (0x7.fffffffffffffff8p+0)":
ildouble: 3
ldouble: 3
-Test "tgamma (0x8.000000000000001p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x8.0000000000008p+0)":
-double: 1
-idouble: 1
-Test "tgamma (0x8.00001p+0)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x8.8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "tgamma (0x8p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x8p-4)":
-float: 1
-ifloat: 1
-Test "tgamma (0x8p-56)":
-double: 1
-idouble: 1
-Test "tgamma (0x9.8p+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0x9p+0)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0xa.b9fd72b0fb238p+4)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "tgamma (0xa.b9fd72b0fb23a9dp+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0xa.b9fd72b0fb23a9ep+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0xa.b9fd7p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0xa.b9fd8p+4)":
-ildouble: 1
-ldouble: 1
-Test "tgamma (0xap+0)":
-double: 1
-idouble: 1
-Test "tgamma (0xb.333333333333p-4)":
-ildouble: 1
-ldouble: 1
-# y0
-Test "y0 (0x1.ff00000000002p+840)":
-double: 1
-idouble: 1
-Test "y0 (0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "y0 (0x1p-40)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "y0 (0x1p-60)":
-double: 1
-idouble: 1
-Test "y0 (0x1p-80)":
+Function: Real part of "ctanh":
double: 1
-idouble: 1
-Test "y0 (0x2p-4)":
-ildouble: 1
-ldouble: 1
-Test "y0 (0x4.ffcp+72)":
float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "y0 (0x4p+16380)":
-ildouble: 1
-ldouble: 1
-Test "y0 (0x4p-12)":
-ildouble: 1
-ldouble: 1
-Test "y0 (0x4p-32)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "y0 (0x4p-72)":
-double: 1
idouble: 1
-Test "y0 (0x8p+0)":
-float: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "y0 (0xap+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "y0 (0xcp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "y0 (0xf.fffffp+124)":
+
+Function: Imaginary part of "ctanh":
double: 1
float: 1
idouble: 1
ifloat: 1
-
-# y1
-Test "y1 (0x2.002000002p+592)":
ildouble: 2
ldouble: 2
-Test "y1 (0x2p+0)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "y1 (0x2p-4)":
-ildouble: 1
-ldouble: 1
-Test "y1 (0x4p+16380)":
-ildouble: 1
-ldouble: 1
-Test "y1 (0x4p-12)":
-float: 1
-ifloat: 1
-Test "y1 (0x8p+0)":
-float: 2
-ifloat: 2
-Test "y1 (0x8p+1020)":
-double: 1
-idouble: 1
-Test "y1 (0x9.3f102p+96)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "y1 (0xap+0)":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-Test "y1 (0xf.ffffffffffff8p+1020)":
-ildouble: 1
-ldouble: 1
-Test "y1 (0xf.fffffp+124)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-# yn
-Test "yn (-10, 0x1p+0)":
-float: 2
-ifloat: 2
-Test "yn (0, 0x1p+0)":
-ildouble: 1
-ldouble: 1
-Test "yn (0, 0x2p-4)":
-ildouble: 1
-ldouble: 1
-Test "yn (0, 0x8p+0)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "yn (0, 0xap+0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (0, 0xcp-4)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "yn (1, 0x2p+0)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "yn (1, 0x2p-4)":
-ildouble: 1
-ldouble: 1
-Test "yn (1, 0x8p+0)":
-float: 2
-ifloat: 2
-Test "yn (1, 0xap+0)":
+Function: Real part of "ctanh_downward":
double: 2
float: 2
idouble: 2
ifloat: 2
-Test "yn (10, 0x1p+0)":
-float: 2
-ifloat: 2
-Test "yn (10, 0x2p+0)":
-float: 3
-ifloat: 3
-Test "yn (10, 0x2p-4)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "yn (10, 0x4p-1024)":
-ildouble: 1
-ldouble: 1
-Test "yn (10, 0x4p-128)":
-ildouble: 1
-ldouble: 1
-Test "yn (10, 0x8p-972)":
-ildouble: 1
-ldouble: 1
-Test "yn (10, 0xap+0)":
+ildouble: 4
+ldouble: 4
+
+Function: Imaginary part of "ctanh_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
-Test "yn (10, 0xcp-4)":
-float: 1
-ifloat: 1
ildouble: 4
ldouble: 4
-Test "yn (2, 0x8p+124)":
-float: 2
-ifloat: 2
-Test "yn (2, 0xf.fffb1p+96)":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "yn (2, 0xf.fffffp+124)":
-double: 1
+
+Function: Real part of "ctanh_towardzero":
+double: 2
float: 1
-idouble: 1
+idouble: 2
ifloat: 1
-Test "yn (3, 0x2p+0)":
+ildouble: 4
+ldouble: 4
+
+Function: Imaginary part of "ctanh_towardzero":
+double: 2
float: 1
+idouble: 2
ifloat: 1
-Test "yn (3, 0x2p-4)":
-ildouble: 1
-ldouble: 1
-Test "yn (3, 0xap+0)":
-double: 1
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "ctanh_upward":
+double: 2
float: 1
-idouble: 1
+idouble: 2
ifloat: 1
-Test "yn (3, 0xcp-4)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-# Maximal error of functions:
-Function: "acos":
-ildouble: 1
-ldouble: 1
-
-Function: "acos_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "acos_tonearest":
-ildouble: 1
-ldouble: 1
-
-Function: "acos_towardzero":
-ildouble: 1
-ldouble: 1
+ildouble: 3
+ldouble: 3
-Function: "acos_upward":
-ildouble: 1
-ldouble: 1
+Function: Imaginary part of "ctanh_upward":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 3
+ldouble: 3
-Function: "asin_downward":
+Function: "erf":
double: 1
float: 1
idouble: 1
@@ -11647,43 +1345,23 @@ ifloat: 1
ildouble: 1
ldouble: 1
-Function: "asin_towardzero":
+Function: "erf_downward":
double: 1
-float: 1
idouble: 1
-ifloat: 1
ildouble: 1
ldouble: 1
-Function: "asin_upward":
+Function: "erf_towardzero":
double: 1
-float: 1
idouble: 1
-ifloat: 1
ildouble: 1
ldouble: 1
-Function: "asinh":
-ildouble: 1
-ldouble: 1
-
-Function: "atan2":
-ildouble: 1
-ldouble: 1
-
-Function: "atanh":
-ildouble: 2
-ldouble: 1
-
-Function: Real part of "cacos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+Function: "erf_upward":
ildouble: 1
ldouble: 1
-Function: Imaginary part of "cacos":
+Function: "erfc":
double: 1
float: 1
idouble: 1
@@ -11691,31 +1369,39 @@ ifloat: 1
ildouble: 2
ldouble: 2
-Function: Real part of "cacosh":
+Function: "erfc_downward":
double: 1
-float: 1
+float: 2
idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
+ifloat: 2
+ildouble: 4
+ldouble: 4
-Function: Imaginary part of "cacosh":
+Function: "erfc_towardzero":
double: 1
-float: 1
+float: 2
idouble: 1
-ifloat: 1
+ifloat: 2
+ildouble: 4
+ldouble: 4
+
+Function: "erfc_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 4
+ldouble: 4
+
+Function: "exp":
ildouble: 1
ldouble: 1
-Function: Real part of "casin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+Function: "exp10":
ildouble: 1
ldouble: 1
-Function: Imaginary part of "casin":
+Function: "exp10_downward":
double: 1
float: 1
idouble: 1
@@ -11723,7 +1409,7 @@ ifloat: 1
ildouble: 2
ldouble: 2
-Function: Real part of "casinh":
+Function: "exp10_towardzero":
double: 1
float: 1
idouble: 1
@@ -11731,222 +1417,131 @@ ifloat: 1
ildouble: 2
ldouble: 2
-Function: Imaginary part of "casinh":
+Function: "exp10_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
+ildouble: 2
+ldouble: 2
-Function: Imaginary part of "catan":
+Function: "exp2":
double: 1
-float: 1
idouble: 1
-ifloat: 1
ildouble: 1
ldouble: 1
-Function: Real part of "catanh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+Function: "exp2_downward":
ildouble: 1
ldouble: 1
-Function: "cbrt":
-double: 1
-idouble: 1
+Function: "exp2_towardzero":
ildouble: 1
ldouble: 1
-Function: Real part of "ccos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+Function: "exp2_upward":
ildouble: 1
ldouble: 1
-Function: Imaginary part of "ccos":
+Function: "exp_downward":
double: 1
-float: 1
idouble: 1
-ifloat: 1
ildouble: 1
ldouble: 1
-Function: Real part of "ccosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "ccosh":
+Function: "exp_towardzero":
double: 1
-float: 1
idouble: 1
-ifloat: 1
ildouble: 1
ldouble: 1
-Function: Real part of "cexp":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+Function: "exp_upward":
ildouble: 1
ldouble: 1
-Function: Imaginary part of "cexp":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
+Function: "expm1":
+ildouble: 2
+ldouble: 2
-Function: Real part of "clog":
+Function: "expm1_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "clog":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
+ildouble: 4
+ldouble: 4
-Function: Real part of "clog10":
+Function: "expm1_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
+ildouble: 4
+ldouble: 4
-Function: Imaginary part of "clog10":
+Function: "expm1_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cos":
-ildouble: 1
-ldouble: 1
-
-Function: "cos_downward":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: "cos_tonearest":
-ildouble: 1
-ldouble: 1
-
-Function: "cos_towardzero":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cos_upward":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: "cosh":
-ildouble: 1
-ldouble: 2
-
-Function: "cosh_downward":
-double: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 3
-
-Function: "cosh_tonearest":
-ildouble: 1
-ldouble: 2
+ildouble: 4
+ldouble: 4
-Function: "cosh_towardzero":
+Function: "gamma":
double: 1
+float: 1
idouble: 1
ifloat: 1
ildouble: 2
ldouble: 2
-Function: "cosh_upward":
-double: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 3
+Function: "gamma_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 6
+ldouble: 6
-Function: Real part of "cpow":
+Function: "gamma_towardzero":
double: 2
-float: 5
+float: 2
idouble: 2
-ifloat: 5
-ildouble: 3
-ldouble: 3
+ifloat: 2
+ildouble: 6
+ldouble: 6
-Function: Imaginary part of "cpow":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+Function: "gamma_upward":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
ildouble: 4
ldouble: 4
-Function: Real part of "csin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+Function: "hypot":
ildouble: 1
ldouble: 1
-Function: Imaginary part of "csin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "csinh":
+Function: "hypot_downward":
double: 1
-float: 1
idouble: 1
-ifloat: 1
ildouble: 1
ldouble: 1
-Function: Imaginary part of "csinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "csqrt":
+Function: "hypot_towardzero":
double: 1
idouble: 1
ildouble: 1
ldouble: 1
-Function: Imaginary part of "csqrt":
+Function: "hypot_upward":
+double: 1
+idouble: 1
ildouble: 1
ldouble: 1
-Function: Real part of "ctan":
+Function: "j0":
double: 1
float: 1
idouble: 1
@@ -11954,55 +1549,47 @@ ifloat: 1
ildouble: 2
ldouble: 2
-Function: Imaginary part of "ctan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "ctan_downward":
+Function: "j0_downward":
double: 1
float: 2
idouble: 1
ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: Imaginary part of "ctan_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
ildouble: 4
ldouble: 4
-Function: Real part of "ctan_tonearest":
-double: 1
+Function: "j0_towardzero":
+double: 2
float: 1
-idouble: 1
+idouble: 2
ifloat: 1
-ildouble: 2
-ldouble: 2
+ildouble: 5
+ldouble: 5
-Function: Imaginary part of "ctan_tonearest":
+Function: "j0_upward":
double: 1
-float: 1
+float: 3
idouble: 1
+ifloat: 3
+ildouble: 4
+ldouble: 4
+
+Function: "j1":
+double: 2
+float: 1
+idouble: 2
ifloat: 1
ildouble: 1
ldouble: 1
-Function: Real part of "ctan_towardzero":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 5
-ldouble: 5
+Function: "j1_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 4
+ldouble: 4
-Function: Imaginary part of "ctan_towardzero":
+Function: "j1_towardzero":
double: 2
float: 1
idouble: 2
@@ -12010,63 +1597,47 @@ ifloat: 1
ildouble: 4
ldouble: 4
-Function: Real part of "ctan_upward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "ctan_upward":
+Function: "j1_upward":
double: 2
-float: 1
+float: 3
idouble: 2
-ifloat: 1
+ifloat: 3
ildouble: 3
ldouble: 3
-Function: Real part of "ctanh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ctanh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ctanh_downward":
+Function: "jn":
double: 2
-float: 2
+float: 3
idouble: 2
-ifloat: 2
+ifloat: 3
ildouble: 4
ldouble: 4
-Function: Imaginary part of "ctanh_downward":
+Function: "jn_downward":
double: 2
-float: 1
+float: 3
idouble: 2
-ifloat: 1
+ifloat: 3
ildouble: 4
ldouble: 4
-Function: Real part of "ctanh_tonearest":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
+Function: "jn_towardzero":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 5
+ldouble: 5
-Function: Imaginary part of "ctanh_tonearest":
+Function: "jn_upward":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: "lgamma":
double: 1
float: 1
idouble: 1
@@ -12074,55 +1645,39 @@ ifloat: 1
ildouble: 2
ldouble: 2
-Function: Real part of "ctanh_towardzero":
+Function: "lgamma_downward":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
-ildouble: 4
-ldouble: 4
+ifloat: 2
+ildouble: 6
+ldouble: 6
-Function: Imaginary part of "ctanh_towardzero":
+Function: "lgamma_towardzero":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
+ifloat: 2
+ildouble: 6
+ldouble: 6
-Function: Real part of "ctanh_upward":
+Function: "lgamma_upward":
double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "ctanh_upward":
-double: 3
float: 3
-idouble: 3
+idouble: 2
ifloat: 3
-ildouble: 3
-ldouble: 3
-
-Function: "erf":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
+ildouble: 4
+ldouble: 4
-Function: "erfc":
-double: 1
-idouble: 1
+Function: "log":
ildouble: 1
ldouble: 1
-Function: "exp10":
+Function: "log10":
ildouble: 1
ldouble: 1
-Function: "exp10_downward":
+Function: "log10_downward":
double: 1
float: 1
idouble: 1
@@ -12130,19 +1685,15 @@ ifloat: 1
ildouble: 2
ldouble: 2
-Function: "exp10_tonearest":
-ildouble: 1
-ldouble: 1
-
-Function: "exp10_towardzero":
+Function: "log10_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
+ildouble: 2
+ldouble: 2
-Function: "exp10_upward":
+Function: "log10_upward":
double: 1
float: 1
idouble: 1
@@ -12150,87 +1701,51 @@ ifloat: 1
ildouble: 1
ldouble: 1
-Function: "exp_downward":
-double: 1
-idouble: 1
-
-Function: "exp_towardzero":
-double: 1
-idouble: 1
-
-Function: "exp_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "expm1":
-ildouble: 1
-ldouble: 1
+Function: "log1p":
+ildouble: 2
+ldouble: 2
-Function: "expm1_downward":
+Function: "log1p_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "expm1_tonearest":
-ildouble: 1
-ldouble: 1
+ildouble: 3
+ldouble: 3
-Function: "expm1_towardzero":
+Function: "log1p_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
+ildouble: 3
+ldouble: 3
-Function: "expm1_upward":
+Function: "log1p_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
+ildouble: 3
+ldouble: 3
-Function: "gamma":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+Function: "log2":
ildouble: 1
ldouble: 1
-Function: "hypot":
+Function: "log2_downward":
ildouble: 1
ldouble: 1
-Function: "j0":
+Function: "log2_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "j1":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
ildouble: 1
ldouble: 1
-Function: "jn":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 4
-ldouble: 4
-
-Function: "lgamma":
+Function: "log2_upward":
double: 1
float: 1
idouble: 1
@@ -12238,15 +1753,15 @@ ifloat: 1
ildouble: 1
ldouble: 1
-Function: "log":
-ildouble: 1
-ldouble: 1
+Function: "log_downward":
+ildouble: 2
+ldouble: 2
-Function: "log10":
-ildouble: 1
-ldouble: 1
+Function: "log_towardzero":
+ildouble: 2
+ldouble: 2
-Function: "log1p":
+Function: "log_upward":
ildouble: 1
ldouble: 1
@@ -12258,30 +1773,48 @@ Function: "pow10":
ildouble: 1
ldouble: 1
-Function: "pow_downward":
+Function: "pow10_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 2
+ldouble: 2
-Function: "pow_tonearest":
-ildouble: 1
-ldouble: 1
-
-Function: "pow_towardzero":
+Function: "pow10_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 2
+ldouble: 2
-Function: "pow_upward":
+Function: "pow10_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "pow_downward":
+double: 1
+idouble: 1
+ildouble: 4
+ldouble: 4
+
+Function: "pow_towardzero":
+double: 1
+idouble: 1
ildouble: 1
ldouble: 1
+Function: "pow_upward":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+
Function: "sin":
ildouble: 1
ldouble: 1
@@ -12292,10 +1825,6 @@ idouble: 1
ildouble: 2
ldouble: 2
-Function: "sin_tonearest":
-ildouble: 1
-ldouble: 1
-
Function: "sin_towardzero":
double: 1
idouble: 1
@@ -12305,34 +1834,48 @@ ldouble: 1
Function: "sin_upward":
double: 1
idouble: 1
-ildouble: 2
-ldouble: 2
+ildouble: 3
+ldouble: 3
Function: "sincos":
ildouble: 1
ldouble: 1
+Function: "sincos_downward":
+double: 1
+idouble: 1
+ildouble: 3
+ldouble: 3
+
+Function: "sincos_towardzero":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+
+Function: "sincos_upward":
+double: 1
+idouble: 1
+ildouble: 3
+ldouble: 3
+
Function: "sinh":
-ildouble: 1
+ildouble: 2
+ldouble: 2
Function: "sinh_downward":
-float: 1
-ildouble: 1
-ldouble: 1
-
-Function: "sinh_tonearest":
-ildouble: 1
+ildouble: 4
+ldouble: 5
Function: "sinh_towardzero":
-float: 1
-ildouble: 1
-ldouble: 1
+ildouble: 3
+ldouble: 4
Function: "sinh_upward":
double: 1
float: 1
-ildouble: 1
-ldouble: 1
+ildouble: 4
+ldouble: 5
Function: "tan":
float: 1
@@ -12345,22 +1888,16 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "tan_tonearest":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
+ildouble: 2
+ldouble: 2
Function: "tan_towardzero":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 1
+ildouble: 2
+ldouble: 2
Function: "tan_upward":
double: 1
@@ -12370,14 +1907,62 @@ ifloat: 1
ildouble: 2
ldouble: 2
-Function: "tgamma":
-double: 4
-float: 2
-idouble: 4
-ifloat: 2
-ildouble: 4
+Function: "tanh":
+ildouble: 2
+ldouble: 2
+
+Function: "tanh_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 5
ldouble: 4
+Function: "tanh_towardzero":
+double: 1
+float: 1
+ildouble: 3
+ldouble: 3
+
+Function: "tanh_upward":
+double: 1
+float: 1
+ildouble: 5
+ldouble: 4
+
+Function: "tgamma":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
+Function: "tgamma_downward":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
+Function: "tgamma_towardzero":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
+Function: "tgamma_upward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
Function: "y0":
double: 1
float: 1
@@ -12386,6 +1971,30 @@ ifloat: 1
ildouble: 1
ldouble: 1
+Function: "y0_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 5
+ldouble: 5
+
+Function: "y0_towardzero":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 5
+ldouble: 5
+
+Function: "y0_upward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
Function: "y1":
double: 2
float: 2
@@ -12394,6 +2003,30 @@ ifloat: 2
ildouble: 2
ldouble: 2
+Function: "y1_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 7
+ldouble: 7
+
+Function: "y1_towardzero":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 5
+ldouble: 5
+
+Function: "y1_upward":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+ildouble: 7
+ldouble: 7
+
Function: "yn":
double: 2
float: 3
@@ -12402,4 +2035,28 @@ ifloat: 3
ildouble: 4
ldouble: 4
+Function: "yn_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 5
+ldouble: 5
+
+Function: "yn_towardzero":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: "yn_upward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 4
+ldouble: 4
+
# end of automatic generation
diff --git a/sysdeps/i386/fpu/math-tests.h b/sysdeps/i386/fpu/math-tests.h
index 46a5fd0251..a9be19a361 100644
--- a/sysdeps/i386/fpu/math-tests.h
+++ b/sysdeps/i386/fpu/math-tests.h
@@ -1,5 +1,5 @@
/* Configuration for math tests. 32-bit x86 version.
- Copyright (C) 2013-2014 Free Software Foundation, Inc.
+ Copyright (C) 2013-2015 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
diff --git a/sysdeps/i386/fpu/s_asinh.S b/sysdeps/i386/fpu/s_asinh.S
index 729e50ecd0..7123772dee 100644
--- a/sysdeps/i386/fpu/s_asinh.S
+++ b/sysdeps/i386/fpu/s_asinh.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -100,7 +100,16 @@ ENTRY(__asinh)
4: fld %st // x : x
faddl MO(huge) // huge+x : x
fstp %st(0) // x
- ret
+ cmpl $0x00100000, %eax
+ jae 8f
+ subl $8, %esp
+ cfi_adjust_cfa_offset (8)
+ fld %st(0)
+ fmul %st(0)
+ fstpl (%esp)
+ addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
+8: ret
// |x| > 2^28 => y = sign(x) * (log(|x|) + log(2))
.align ALIGNARG(4)
diff --git a/sysdeps/i386/fpu/s_asinhf.S b/sysdeps/i386/fpu/s_asinhf.S
index c2a1114341..77ebae46ec 100644
--- a/sysdeps/i386/fpu/s_asinhf.S
+++ b/sysdeps/i386/fpu/s_asinhf.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -100,7 +100,16 @@ ENTRY(__asinhf)
4: fld %st // x : x
faddl MO(huge) // huge+x : x
fstp %st(0) // x
- ret
+ cmpl $0x00800000, %eax
+ jae 8f
+ subl $4, %esp
+ cfi_adjust_cfa_offset (4)
+ fld %st(0)
+ fmul %st(0)
+ fstps (%esp)
+ addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
+8: ret
// |x| > 2^14 => y = sign(x) * (log(|x|) + log(2))
.align ALIGNARG(4)
diff --git a/sysdeps/i386/fpu/s_asinhl.S b/sysdeps/i386/fpu/s_asinhl.S
index 557613e65e..8799da6e53 100644
--- a/sysdeps/i386/fpu/s_asinhl.S
+++ b/sysdeps/i386/fpu/s_asinhl.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -108,7 +108,12 @@ ENTRY(__asinhl)
fldt MO(huge) // huge : x : x
faddp // huge+x : x
fstp %st(0) // x
- ret
+ cmpl $0x0001, %eax
+ jae 8f
+ fld %st(0)
+ fmul %st(0)
+ fstp %st(0)
+8: ret
// |x| > 2^34 => y = sign(x) * (log(|x|) + log(2))
.align ALIGNARG(4)
diff --git a/sysdeps/i386/fpu/s_atan.S b/sysdeps/i386/fpu/s_atan.S
index 7502f6d828..c28b73ce75 100644
--- a/sysdeps/i386/fpu/s_atan.S
+++ b/sysdeps/i386/fpu/s_atan.S
@@ -7,10 +7,41 @@
RCSID("$NetBSD: s_atan.S,v 1.4 1995/05/08 23:50:41 jtc Exp $")
+ .section .rodata.cst8,"aM",@progbits,8
+
+ .p2align 3
+ .type dbl_min,@object
+dbl_min: .byte 0, 0, 0, 0, 0, 0, 0x10, 0
+ ASM_SIZE_DIRECTIVE(dbl_min)
+
+#ifdef PIC
+# define MO(op) op##@GOTOFF(%ecx)
+#else
+# define MO(op) op
+#endif
+
+ .text
ENTRY(__atan)
+#ifdef PIC
+ LOAD_PIC_REG (cx)
+#endif
fldl 4(%esp)
fld1
fpatan
- ret
+ fldl MO(dbl_min)
+ fld %st(1)
+ fabs
+ fucompp
+ fnstsw
+ sahf
+ jnc 1f
+ subl $8, %esp
+ cfi_adjust_cfa_offset (8)
+ fld %st(0)
+ fmul %st(0)
+ fstpl (%esp)
+ addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
+1: ret
END (__atan)
weak_alias (__atan, atan)
diff --git a/sysdeps/i386/fpu/s_atanf.S b/sysdeps/i386/fpu/s_atanf.S
index 70232c8240..da3c2a64b5 100644
--- a/sysdeps/i386/fpu/s_atanf.S
+++ b/sysdeps/i386/fpu/s_atanf.S
@@ -7,10 +7,41 @@
RCSID("$NetBSD: s_atanf.S,v 1.3 1995/05/08 23:51:33 jtc Exp $")
+ .section .rodata.cst4,"aM",@progbits,4
+
+ .p2align 2
+ .type flt_min,@object
+flt_min: .byte 0, 0, 0x80, 0
+ ASM_SIZE_DIRECTIVE(flt_min)
+
+#ifdef PIC
+# define MO(op) op##@GOTOFF(%ecx)
+#else
+# define MO(op) op
+#endif
+
+ .text
ENTRY(__atanf)
+#ifdef PIC
+ LOAD_PIC_REG (cx)
+#endif
flds 4(%esp)
fld1
fpatan
- ret
+ flds MO(flt_min)
+ fld %st(1)
+ fabs
+ fucompp
+ fnstsw
+ sahf
+ jnc 1f
+ subl $4, %esp
+ cfi_adjust_cfa_offset (4)
+ fld %st(0)
+ fmul %st(0)
+ fstps (%esp)
+ addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
+1: ret
END (__atanf)
weak_alias (__atanf, atanf)
diff --git a/sysdeps/i386/fpu/s_cbrt.S b/sysdeps/i386/fpu/s_cbrt.S
index df62268dc7..cb5b11c8b4 100644
--- a/sysdeps/i386/fpu/s_cbrt.S
+++ b/sysdeps/i386/fpu/s_cbrt.S
@@ -1,5 +1,5 @@
/* Compute cubic root of double value.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_cbrtf.S b/sysdeps/i386/fpu/s_cbrtf.S
index 7393cccaae..ba6a029a35 100644
--- a/sysdeps/i386/fpu/s_cbrtf.S
+++ b/sysdeps/i386/fpu/s_cbrtf.S
@@ -1,5 +1,5 @@
/* Compute cubic root of float value.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_cbrtl.S b/sysdeps/i386/fpu/s_cbrtl.S
index ef068da554..e45295248b 100644
--- a/sysdeps/i386/fpu/s_cbrtl.S
+++ b/sysdeps/i386/fpu/s_cbrtl.S
@@ -1,5 +1,5 @@
/* Compute cubic root of long double value.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_ceil.S b/sysdeps/i386/fpu/s_ceil.S
index b0159128aa..f32fa26d34 100644
--- a/sysdeps/i386/fpu/s_ceil.S
+++ b/sysdeps/i386/fpu/s_ceil.S
@@ -10,6 +10,7 @@ RCSID("$NetBSD: s_ceil.S,v 1.4 1995/05/08 23:52:13 jtc Exp $")
ENTRY(__ceil)
fldl 4(%esp)
subl $8,%esp
+ cfi_adjust_cfa_offset (8)
fstcw 4(%esp) /* store fpu control word */
@@ -27,6 +28,7 @@ ENTRY(__ceil)
fldcw 4(%esp) /* restore original control word */
addl $8,%esp
+ cfi_adjust_cfa_offset (-8)
ret
END (__ceil)
weak_alias (__ceil, ceil)
diff --git a/sysdeps/i386/fpu/s_ceilf.S b/sysdeps/i386/fpu/s_ceilf.S
index 352d40d7ce..4fe703b179 100644
--- a/sysdeps/i386/fpu/s_ceilf.S
+++ b/sysdeps/i386/fpu/s_ceilf.S
@@ -10,6 +10,7 @@ RCSID("$NetBSD: s_ceilf.S,v 1.3 1995/05/08 23:52:44 jtc Exp $")
ENTRY(__ceilf)
flds 4(%esp)
subl $8,%esp
+ cfi_adjust_cfa_offset (8)
fstcw 4(%esp) /* store fpu control word */
@@ -27,6 +28,7 @@ ENTRY(__ceilf)
fldcw 4(%esp) /* restore original control word */
addl $8,%esp
+ cfi_adjust_cfa_offset (-8)
ret
END (__ceilf)
weak_alias (__ceilf, ceilf)
diff --git a/sysdeps/i386/fpu/s_ceill.S b/sysdeps/i386/fpu/s_ceill.S
index 0128966ebe..4b272c522a 100644
--- a/sysdeps/i386/fpu/s_ceill.S
+++ b/sysdeps/i386/fpu/s_ceill.S
@@ -11,6 +11,7 @@ RCSID("$NetBSD: $")
ENTRY(__ceill)
fldt 4(%esp)
subl $8,%esp
+ cfi_adjust_cfa_offset (8)
fstcw 4(%esp) /* store fpu control word */
@@ -28,6 +29,7 @@ ENTRY(__ceill)
fldcw 4(%esp) /* restore original control word */
addl $8,%esp
+ cfi_adjust_cfa_offset (-8)
ret
END (__ceill)
weak_alias (__ceill, ceill)
diff --git a/sysdeps/i386/fpu/s_expm1.S b/sysdeps/i386/fpu/s_expm1.S
index 36f8214c0b..05e5285d7b 100644
--- a/sysdeps/i386/fpu/s_expm1.S
+++ b/sysdeps/i386/fpu/s_expm1.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@@ -37,6 +37,13 @@ one: .double 1.0
l2e: .tfloat 1.442695040888963407359924681002
ASM_SIZE_DIRECTIVE(l2e)
+ .section .rodata.cst8,"aM",@progbits,8
+
+ .p2align 3
+ .type dbl_min,@object
+dbl_min: .byte 0, 0, 0, 0, 0, 0, 0x10, 0
+ ASM_SIZE_DIRECTIVE(dbl_min)
+
#ifdef PIC
#define MO(op) op##@GOTOFF(%edx)
#else
@@ -74,6 +81,21 @@ ENTRY(__expm1)
#ifdef PIC
LOAD_PIC_REG (dx)
#endif
+ fld %st
+ fabs
+ fcoml MO(dbl_min)
+ fstp %st
+ fnstsw
+ sahf
+ jae 5f
+ subl $8, %esp
+ cfi_adjust_cfa_offset (8)
+ fld %st(0)
+ fmul %st(0)
+ fstpl (%esp)
+ addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
+ ret
5: fldt MO(l2e) // log2(e) : x
fmulp // log2(e)*x
diff --git a/sysdeps/i386/fpu/s_expm1f.S b/sysdeps/i386/fpu/s_expm1f.S
index 1f191c576a..a83e435e22 100644
--- a/sysdeps/i386/fpu/s_expm1f.S
+++ b/sysdeps/i386/fpu/s_expm1f.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@@ -37,6 +37,13 @@ one: .double 1.0
l2e: .tfloat 1.442695040888963407359924681002
ASM_SIZE_DIRECTIVE(l2e)
+ .section .rodata.cst4,"aM",@progbits,4
+
+ .p2align 2
+ .type flt_min,@object
+flt_min: .byte 0, 0, 0x80, 0
+ ASM_SIZE_DIRECTIVE(flt_min)
+
#ifdef PIC
#define MO(op) op##@GOTOFF(%edx)
#else
@@ -74,6 +81,21 @@ ENTRY(__expm1f)
#ifdef PIC
LOAD_PIC_REG (dx)
#endif
+ fld %st
+ fabs
+ fcoms MO(flt_min)
+ fstp %st
+ fnstsw
+ sahf
+ jae 5f
+ subl $4, %esp
+ cfi_adjust_cfa_offset (4)
+ fld %st(0)
+ fmul %st(0)
+ fstps (%esp)
+ addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
+ ret
5: fldt MO(l2e) // log2(e) : x
fmulp // log2(e)*x
diff --git a/sysdeps/i386/fpu/s_fdim.S b/sysdeps/i386/fpu/s_fdim.S
index b16fae39b3..c929e28680 100644
--- a/sysdeps/i386/fpu/s_fdim.S
+++ b/sysdeps/i386/fpu/s_fdim.S
@@ -1,5 +1,5 @@
/* Compute positive difference.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_fdimf.S b/sysdeps/i386/fpu/s_fdimf.S
index 97f5d60dd0..40ca54a27d 100644
--- a/sysdeps/i386/fpu/s_fdimf.S
+++ b/sysdeps/i386/fpu/s_fdimf.S
@@ -1,5 +1,5 @@
/* Compute positive difference.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_fdiml.S b/sysdeps/i386/fpu/s_fdiml.S
index b904b8e8c7..1787f240fb 100644
--- a/sysdeps/i386/fpu/s_fdiml.S
+++ b/sysdeps/i386/fpu/s_fdiml.S
@@ -1,5 +1,5 @@
/* Compute positive difference.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_floor.S b/sysdeps/i386/fpu/s_floor.S
index 20a8660424..2d6287dc79 100644
--- a/sysdeps/i386/fpu/s_floor.S
+++ b/sysdeps/i386/fpu/s_floor.S
@@ -10,6 +10,7 @@ RCSID("$NetBSD: s_floor.S,v 1.4 1995/05/09 00:01:59 jtc Exp $")
ENTRY(__floor)
fldl 4(%esp)
subl $8,%esp
+ cfi_adjust_cfa_offset (8)
fstcw 4(%esp) /* store fpu control word */
@@ -27,6 +28,7 @@ ENTRY(__floor)
fldcw 4(%esp) /* restore original control word */
addl $8,%esp
+ cfi_adjust_cfa_offset (-8)
ret
END (__floor)
weak_alias (__floor, floor)
diff --git a/sysdeps/i386/fpu/s_floorf.S b/sysdeps/i386/fpu/s_floorf.S
index eca93a2aa3..e969fbe587 100644
--- a/sysdeps/i386/fpu/s_floorf.S
+++ b/sysdeps/i386/fpu/s_floorf.S
@@ -10,6 +10,7 @@ RCSID("$NetBSD: s_floorf.S,v 1.3 1995/05/09 00:04:32 jtc Exp $")
ENTRY(__floorf)
flds 4(%esp)
subl $8,%esp
+ cfi_adjust_cfa_offset (8)
fstcw 4(%esp) /* store fpu control word */
@@ -27,6 +28,7 @@ ENTRY(__floorf)
fldcw 4(%esp) /* restore original control word */
addl $8,%esp
+ cfi_adjust_cfa_offset (-8)
ret
END (__floorf)
weak_alias (__floorf, floorf)
diff --git a/sysdeps/i386/fpu/s_floorl.S b/sysdeps/i386/fpu/s_floorl.S
index c2bf091d73..1206554c4a 100644
--- a/sysdeps/i386/fpu/s_floorl.S
+++ b/sysdeps/i386/fpu/s_floorl.S
@@ -11,6 +11,7 @@ RCSID("$NetBSD: $")
ENTRY(__floorl)
fldt 4(%esp)
subl $8,%esp
+ cfi_adjust_cfa_offset (8)
fstcw 4(%esp) /* store fpu control word */
@@ -28,6 +29,7 @@ ENTRY(__floorl)
fldcw 4(%esp) /* restore original control word */
addl $8,%esp
+ cfi_adjust_cfa_offset (-8)
ret
END (__floorl)
weak_alias (__floorl, floorl)
diff --git a/sysdeps/i386/fpu/s_fmax.S b/sysdeps/i386/fpu/s_fmax.S
index 0b0f79f80c..129f623b9a 100644
--- a/sysdeps/i386/fpu/s_fmax.S
+++ b/sysdeps/i386/fpu/s_fmax.S
@@ -1,5 +1,5 @@
/* Compute maximum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_fmaxf.S b/sysdeps/i386/fpu/s_fmaxf.S
index 66083298f8..998b58069c 100644
--- a/sysdeps/i386/fpu/s_fmaxf.S
+++ b/sysdeps/i386/fpu/s_fmaxf.S
@@ -1,5 +1,5 @@
/* Compute maximum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_fmaxl.S b/sysdeps/i386/fpu/s_fmaxl.S
index ab63edfc2a..375b08a5ea 100644
--- a/sysdeps/i386/fpu/s_fmaxl.S
+++ b/sysdeps/i386/fpu/s_fmaxl.S
@@ -1,5 +1,5 @@
/* Compute maximum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_fmin.S b/sysdeps/i386/fpu/s_fmin.S
index 75e07aa987..953c5f0657 100644
--- a/sysdeps/i386/fpu/s_fmin.S
+++ b/sysdeps/i386/fpu/s_fmin.S
@@ -1,5 +1,5 @@
/* Compute minimum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_fminf.S b/sysdeps/i386/fpu/s_fminf.S
index 6e774fa0ec..34e32496ac 100644
--- a/sysdeps/i386/fpu/s_fminf.S
+++ b/sysdeps/i386/fpu/s_fminf.S
@@ -1,5 +1,5 @@
/* Compute minimum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_fminl.S b/sysdeps/i386/fpu/s_fminl.S
index ed8801eb01..80c8758001 100644
--- a/sysdeps/i386/fpu/s_fminl.S
+++ b/sysdeps/i386/fpu/s_fminl.S
@@ -1,5 +1,5 @@
/* Compute minimum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_fpclassifyl.c b/sysdeps/i386/fpu/s_fpclassifyl.c
index d66fcf7cdb..be23e66f41 100644
--- a/sysdeps/i386/fpu/s_fpclassifyl.c
+++ b/sysdeps/i386/fpu/s_fpclassifyl.c
@@ -1,5 +1,5 @@
/* Return classification value corresponding to argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_frexp.S b/sysdeps/i386/fpu/s_frexp.S
index 5768083831..be61be7c9f 100644
--- a/sysdeps/i386/fpu/s_frexp.S
+++ b/sysdeps/i386/fpu/s_frexp.S
@@ -1,5 +1,5 @@
/* ix87 specific frexp implementation for double.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_frexpf.S b/sysdeps/i386/fpu/s_frexpf.S
index cfdf28e8ed..840dab7f92 100644
--- a/sysdeps/i386/fpu/s_frexpf.S
+++ b/sysdeps/i386/fpu/s_frexpf.S
@@ -1,5 +1,5 @@
/* ix87 specific frexp implementation for float.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_frexpl.S b/sysdeps/i386/fpu/s_frexpl.S
index dc819cc79c..6c8e9c09b7 100644
--- a/sysdeps/i386/fpu/s_frexpl.S
+++ b/sysdeps/i386/fpu/s_frexpl.S
@@ -1,5 +1,5 @@
/* ix87 specific frexp implementation for long double.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_llrint.S b/sysdeps/i386/fpu/s_llrint.S
index d9333f52ce..87bc27d2af 100644
--- a/sysdeps/i386/fpu/s_llrint.S
+++ b/sysdeps/i386/fpu/s_llrint.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_llrintf.S b/sysdeps/i386/fpu/s_llrintf.S
index 26a9ac4b91..f3f9aefd04 100644
--- a/sysdeps/i386/fpu/s_llrintf.S
+++ b/sysdeps/i386/fpu/s_llrintf.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_llrintl.S b/sysdeps/i386/fpu/s_llrintl.S
index 55ce482810..8db250a580 100644
--- a/sysdeps/i386/fpu/s_llrintl.S
+++ b/sysdeps/i386/fpu/s_llrintl.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_log1p.S b/sysdeps/i386/fpu/s_log1p.S
index 797a2abf62..c2559a3f18 100644
--- a/sysdeps/i386/fpu/s_log1p.S
+++ b/sysdeps/i386/fpu/s_log1p.S
@@ -17,6 +17,13 @@ RCSID("$NetBSD: s_log1p.S,v 1.7 1995/05/09 00:10:58 jtc Exp $")
limit: .double 0.29
one: .double 1.0
+ .section .rodata.cst8,"aM",@progbits,8
+
+ .p2align 3
+ .type dbl_min,@object
+dbl_min: .byte 0, 0, 0, 0, 0, 0, 0x10, 0
+ ASM_SIZE_DIRECTIVE(dbl_min)
+
/*
* Use the fyl2xp1 function when the argument is in the range -0.29 to 0.29,
* otherwise fyl2x with the needed extra computation.
@@ -55,7 +62,25 @@ ENTRY(__log1p)
ret
2: fyl2xp1
- ret
+#ifdef PIC
+ fldl dbl_min@GOTOFF(%edx)
+#else
+ fldl dbl_min
+#endif
+ fld %st(1)
+ fabs
+ fucompp
+ fnstsw
+ sahf
+ jnc 1f
+ subl $8, %esp
+ cfi_adjust_cfa_offset (8)
+ fld %st(0)
+ fmul %st(0)
+ fstpl (%esp)
+ addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
+1: ret
3: jp 4b // in case x is ±Inf
fstp %st(1)
@@ -63,4 +88,3 @@ ENTRY(__log1p)
ret
END (__log1p)
-weak_alias (__log1p, log1p)
diff --git a/sysdeps/i386/fpu/s_log1pf.S b/sysdeps/i386/fpu/s_log1pf.S
index 1e7f2e1c5f..8fca22e4ff 100644
--- a/sysdeps/i386/fpu/s_log1pf.S
+++ b/sysdeps/i386/fpu/s_log1pf.S
@@ -17,6 +17,13 @@ RCSID("$NetBSD: s_log1pf.S,v 1.4 1995/05/09 00:13:05 jtc Exp $")
limit: .float 0.29
one: .float 1.0
+ .section .rodata.cst4,"aM",@progbits,4
+
+ .p2align 2
+ .type flt_min,@object
+flt_min: .byte 0, 0, 0x80, 0
+ ASM_SIZE_DIRECTIVE(flt_min)
+
/*
* Use the fyl2xp1 function when the argument is in the range -0.29 to 0.29,
* otherwise fyl2x with the needed extra computation.
@@ -55,7 +62,25 @@ ENTRY(__log1pf)
ret
2: fyl2xp1
- ret
+#ifdef PIC
+ flds flt_min@GOTOFF(%edx)
+#else
+ flds flt_min
+#endif
+ fld %st(1)
+ fabs
+ fucompp
+ fnstsw
+ sahf
+ jnc 1f
+ subl $4, %esp
+ cfi_adjust_cfa_offset (4)
+ fld %st(0)
+ fmul %st(0)
+ fstps (%esp)
+ addl $4, %esp
+ cfi_adjust_cfa_offset (-4)
+1: ret
3: jp 4b // in case x is ±Inf
fstp %st(1)
@@ -63,4 +88,3 @@ ENTRY(__log1pf)
ret
END (__log1pf)
-weak_alias (__log1pf, log1pf)
diff --git a/sysdeps/i386/fpu/s_log1pl.S b/sysdeps/i386/fpu/s_log1pl.S
index 93c07b637c..8f87cf61c6 100644
--- a/sysdeps/i386/fpu/s_log1pl.S
+++ b/sysdeps/i386/fpu/s_log1pl.S
@@ -53,12 +53,17 @@ ENTRY(__log1pl)
sahf
jnc 2f
+ movzwl 4+8(%esp), %eax
+ xorb $0x80, %ah
+ cmpl $0xc040, %eax
+ jae 5f
+
#ifdef PIC
faddl one@GOTOFF(%edx)
#else
faddl one
#endif
- fyl2x
+5: fyl2x
ret
2: fyl2xp1
@@ -70,4 +75,3 @@ ENTRY(__log1pl)
ret
END (__log1pl)
-weak_alias (__log1pl, log1pl)
diff --git a/sysdeps/i386/fpu/s_lrint.S b/sysdeps/i386/fpu/s_lrint.S
index 0de8fcfb4b..7a72af38c3 100644
--- a/sysdeps/i386/fpu/s_lrint.S
+++ b/sysdeps/i386/fpu/s_lrint.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_lrintf.S b/sysdeps/i386/fpu/s_lrintf.S
index 602adfd752..f46401f729 100644
--- a/sysdeps/i386/fpu/s_lrintf.S
+++ b/sysdeps/i386/fpu/s_lrintf.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_lrintl.S b/sysdeps/i386/fpu/s_lrintl.S
index fb2ab36740..dbe770cd8c 100644
--- a/sysdeps/i386/fpu/s_lrintl.S
+++ b/sysdeps/i386/fpu/s_lrintl.S
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/fpu/s_nextafterl.c b/sysdeps/i386/fpu/s_nextafterl.c
index bafe7437fa..66d903f801 100644
--- a/sysdeps/i386/fpu/s_nextafterl.c
+++ b/sysdeps/i386/fpu/s_nextafterl.c
@@ -106,7 +106,10 @@ long double __nextafterl(long double x, long double y)
}
}
esy = esx&0x7fff;
- if(esy==0x7fff) return x+x; /* overflow */
+ if(esy==0x7fff) {
+ long double u = x + x; /* overflow */
+ math_force_eval (u);
+ }
if(esy==0) {
long double u = x*x; /* underflow */
math_force_eval (u); /* raise underflow flag */
diff --git a/sysdeps/i386/fpu/s_scalbn.S b/sysdeps/i386/fpu/s_scalbn.S
index ea9e25f094..cc9d708022 100644
--- a/sysdeps/i386/fpu/s_scalbn.S
+++ b/sysdeps/i386/fpu/s_scalbn.S
@@ -16,4 +16,8 @@ ENTRY(__scalbn)
END (__scalbn)
weak_alias (__scalbn, scalbn)
strong_alias (__scalbn, __scalbln)
-weak_alias (__scalbn, scalbln)
+
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_20)
+compat_symbol (libc, __scalbn, scalbln, GLIBC_2_1);
+#endif
diff --git a/sysdeps/i386/fpu/s_scalbnf.S b/sysdeps/i386/fpu/s_scalbnf.S
index dc8cfb4296..0de0694c70 100644
--- a/sysdeps/i386/fpu/s_scalbnf.S
+++ b/sysdeps/i386/fpu/s_scalbnf.S
@@ -16,4 +16,8 @@ ENTRY(__scalbnf)
END (__scalbnf)
weak_alias (__scalbnf, scalbnf)
strong_alias (__scalbnf, __scalblnf)
-weak_alias (__scalbnf, scalblnf)
+
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_20)
+compat_symbol (libc, __scalbnf, scalblnf, GLIBC_2_1);
+#endif
diff --git a/sysdeps/i386/fpu/s_scalbnl.S b/sysdeps/i386/fpu/s_scalbnl.S
index 295494b3d2..8da0b009e0 100644
--- a/sysdeps/i386/fpu/s_scalbnl.S
+++ b/sysdeps/i386/fpu/s_scalbnl.S
@@ -17,4 +17,8 @@ ENTRY(__scalbnl)
END (__scalbnl)
weak_alias (__scalbnl, scalbnl)
strong_alias (__scalbnl, __scalblnl)
-weak_alias (__scalbnl, scalblnl)
+
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_20)
+compat_symbol (libc, __scalbnl, scalblnl, GLIBC_2_1);
+#endif
diff --git a/sysdeps/i386/fpu/s_trunc.S b/sysdeps/i386/fpu/s_trunc.S
index 5a148643e3..a42a295281 100644
--- a/sysdeps/i386/fpu/s_trunc.S
+++ b/sysdeps/i386/fpu/s_trunc.S
@@ -1,5 +1,5 @@
/* Truncate double value.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -22,6 +22,7 @@
ENTRY(__trunc)
fldl 4(%esp)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fstcw 4(%esp)
movl $0xc00, %edx
orl 4(%esp), %edx
@@ -30,6 +31,7 @@ ENTRY(__trunc)
frndint
fldcw 4(%esp)
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
ret
END(__trunc)
weak_alias (__trunc, trunc)
diff --git a/sysdeps/i386/fpu/s_truncf.S b/sysdeps/i386/fpu/s_truncf.S
index d3b9385bfb..88ee2a7360 100644
--- a/sysdeps/i386/fpu/s_truncf.S
+++ b/sysdeps/i386/fpu/s_truncf.S
@@ -1,5 +1,5 @@
/* Truncate float value.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -22,6 +22,7 @@
ENTRY(__truncf)
flds 4(%esp)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fstcw 4(%esp)
movl $0xc00, %edx
orl 4(%esp), %edx
@@ -30,6 +31,7 @@ ENTRY(__truncf)
frndint
fldcw 4(%esp)
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
ret
END(__truncf)
weak_alias (__truncf, truncf)
diff --git a/sysdeps/i386/fpu/s_truncl.S b/sysdeps/i386/fpu/s_truncl.S
index 4bef0f478a..01006bf8bc 100644
--- a/sysdeps/i386/fpu/s_truncl.S
+++ b/sysdeps/i386/fpu/s_truncl.S
@@ -1,5 +1,5 @@
/* Truncate long double value.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -22,6 +22,7 @@
ENTRY(__truncl)
fldt 4(%esp)
subl $8, %esp
+ cfi_adjust_cfa_offset (8)
fstcw 4(%esp)
movl $0xc00, %edx
orl 4(%esp), %edx
@@ -30,6 +31,7 @@ ENTRY(__truncl)
frndint
fldcw 4(%esp)
addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
ret
END(__truncl)
weak_alias (__truncl, truncl)
diff --git a/sysdeps/i386/gccframe.h b/sysdeps/i386/gccframe.h
index 05861c8441..b1a5374a68 100644
--- a/sysdeps/i386/gccframe.h
+++ b/sysdeps/i386/gccframe.h
@@ -1,5 +1,5 @@
/* Definition of object in frame unwind info. i386 version.
- Copyright (C) 2001-2014 Free Software Foundation, Inc.
+ Copyright (C) 2001-2015 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
diff --git a/sysdeps/i386/gmp-mparam.h b/sysdeps/i386/gmp-mparam.h
index 2414529280..6a7f116c07 100644
--- a/sysdeps/i386/gmp-mparam.h
+++ b/sysdeps/i386/gmp-mparam.h
@@ -1,6 +1,6 @@
/* gmp-mparam.h -- Compiler/machine parameter header file.
-Copyright (C) 1991-2014 Free Software Foundation, Inc.
+Copyright (C) 1991-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/sysdeps/i386/htonl.S b/sysdeps/i386/htonl.S
index ec974c7169..698e9762fc 100644
--- a/sysdeps/i386/htonl.S
+++ b/sysdeps/i386/htonl.S
@@ -1,5 +1,5 @@
/* Change byte order in word. For Intel 80386.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 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
diff --git a/sysdeps/i386/htons.S b/sysdeps/i386/htons.S
index f1f3b361dc..982970fe37 100644
--- a/sysdeps/i386/htons.S
+++ b/sysdeps/i386/htons.S
@@ -1,5 +1,5 @@
/* Change byte order in word. For Intel 80x86, x >= 3.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 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
diff --git a/sysdeps/i386/i386-mcount.S b/sysdeps/i386/i386-mcount.S
index d75dc32fa7..b86d34d217 100644
--- a/sysdeps/i386/i386-mcount.S
+++ b/sysdeps/i386/i386-mcount.S
@@ -1,5 +1,5 @@
/* i386-specific implemetation of profiling support.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i486/bits/atomic.h b/sysdeps/i386/i486/bits/atomic.h
index 76e0e8e2e3..59f3d34871 100644
--- a/sysdeps/i386/i486/bits/atomic.h
+++ b/sysdeps/i386/i486/bits/atomic.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2014 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -54,6 +54,9 @@ typedef uintmax_t uatomic_max_t;
# endif
#endif
+#define __HAVE_64B_ATOMICS 0
+#define USE_ATOMIC_COMPILER_BUILTINS 0
+
#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
__sync_val_compare_and_swap (mem, oldval, newval)
@@ -476,7 +479,7 @@ typedef uintmax_t uatomic_max_t;
__result; })
-#define atomic_delay() asm ("rep; nop")
+#define atomic_spin_nop() asm ("rep; nop")
#define __arch_and_body(lock, mem, mask) \
@@ -532,3 +535,10 @@ typedef uintmax_t uatomic_max_t;
#define atomic_or(mem, mask) __arch_or_body (LOCK_PREFIX, mem, mask)
#define catomic_or(mem, mask) __arch_or_body (__arch_cprefix, mem, mask)
+
+/* We don't use mfence because it is supposedly slower due to having to
+ provide stronger guarantees (e.g., regarding self-modifying code). */
+#define atomic_full_barrier() \
+ __asm __volatile (LOCK_PREFIX "orl $0, (%%esp)" ::: "memory")
+#define atomic_read_barrier() __asm ("" ::: "memory")
+#define atomic_write_barrier() __asm ("" ::: "memory")
diff --git a/sysdeps/i386/i486/htonl.S b/sysdeps/i386/i486/htonl.S
index 3d6304c830..d39bca5725 100644
--- a/sysdeps/i386/i486/htonl.S
+++ b/sysdeps/i386/i486/htonl.S
@@ -1,5 +1,5 @@
/* Change byte order in word. For Intel 80x86, x >= 4.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 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
diff --git a/sysdeps/i386/i486/pthread_spin_trylock.S b/sysdeps/i386/i486/pthread_spin_trylock.S
new file mode 100644
index 0000000000..afa479dfab
--- /dev/null
+++ b/sysdeps/i386/i486/pthread_spin_trylock.S
@@ -0,0 +1,46 @@
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <pthread-errnos.h>
+
+
+#ifdef UP
+# define LOCK
+#else
+# define LOCK lock
+#endif
+
+ .globl pthread_spin_trylock
+ .type pthread_spin_trylock,@function
+ .align 16
+pthread_spin_trylock:
+ movl 4(%esp), %edx
+ movl $1, %eax
+ xorl %ecx, %ecx
+ LOCK
+ cmpxchgl %ecx, (%edx)
+ movl $EBUSY, %eax
+#ifdef HAVE_CMOV
+ cmovel %ecx, %eax
+#else
+ jne 0f
+ movl %ecx, %eax
+0:
+#endif
+ ret
+ .size pthread_spin_trylock,.-pthread_spin_trylock
diff --git a/sysdeps/i386/i486/strcat.S b/sysdeps/i386/i486/strcat.S
index aa8539d95a..88c29fb572 100644
--- a/sysdeps/i386/i486/strcat.S
+++ b/sysdeps/i386/i486/strcat.S
@@ -1,6 +1,6 @@
/* strcat(dest, src) -- Append SRC on the end of DEST.
For Intel 80x86, x>=4.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>.
Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
diff --git a/sysdeps/i386/i486/string-inlines.c b/sysdeps/i386/i486/string-inlines.c
index 6348f151bd..862a431fb5 100644
--- a/sysdeps/i386/i486/string-inlines.c
+++ b/sysdeps/i386/i486/string-inlines.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2014 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2015 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
diff --git a/sysdeps/i386/i486/strlen.S b/sysdeps/i386/i486/strlen.S
index 4592f73b3d..fa0e0fe6e3 100644
--- a/sysdeps/i386/i486/strlen.S
+++ b/sysdeps/i386/i486/strlen.S
@@ -1,6 +1,6 @@
/* strlen(str) -- determine the length of the string STR.
Optimized for Intel 80x86, x>=4.
- Copyright (C) 1991-2014 Free Software Foundation, Inc.
+ Copyright (C) 1991-2015 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>.
This file is part of the GNU C Library.
diff --git a/sysdeps/i386/i586/add_n.S b/sysdeps/i386/i586/add_n.S
index 0459046d93..b28a39639a 100644
--- a/sysdeps/i386/i586/add_n.S
+++ b/sysdeps/i386/i586/add_n.S
@@ -1,6 +1,6 @@
/* Pentium __mpn_add_n -- Add two limb vectors of the same length > 0 and store
sum in a third limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/i586/addmul_1.S b/sysdeps/i386/i586/addmul_1.S
index a75c95041f..f1fa2f359f 100644
--- a/sysdeps/i386/i586/addmul_1.S
+++ b/sysdeps/i386/i586/addmul_1.S
@@ -1,6 +1,6 @@
/* Pentium __mpn_addmul_1 -- Multiply a limb vector with a limb and add
the result to a second limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/i586/lshift.S b/sysdeps/i386/i586/lshift.S
index 4a77f9e785..4aa0de936e 100644
--- a/sysdeps/i386/i586/lshift.S
+++ b/sysdeps/i386/i586/lshift.S
@@ -1,5 +1,5 @@
/* Pentium optimized __mpn_lshift --
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 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
diff --git a/sysdeps/i386/i586/memcopy.h b/sysdeps/i386/i586/memcopy.h
index 972258b516..52e19d861b 100644
--- a/sysdeps/i386/i586/memcopy.h
+++ b/sysdeps/i386/i586/memcopy.h
@@ -1,5 +1,5 @@
/* memcopy.h -- definitions for memory copy functions. Pentium version.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
Contributed by Torbjorn Granlund (tege@sics.se).
This file is part of the GNU C Library.
diff --git a/sysdeps/i386/i586/memcpy.S b/sysdeps/i386/i586/memcpy.S
index edd9f08723..97973658b6 100644
--- a/sysdeps/i386/i586/memcpy.S
+++ b/sysdeps/i386/i586/memcpy.S
@@ -1,5 +1,5 @@
/* Highly optimized version for i586.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -32,7 +32,7 @@
#define LEN SRC+4
.text
-#if defined PIC && !defined NOT_IN_libc
+#if defined PIC && IS_IN (libc)
ENTRY (__memcpy_chk)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
diff --git a/sysdeps/i386/i586/memset.S b/sysdeps/i386/i586/memset.S
index 910d7bbb99..bc26501d10 100644
--- a/sysdeps/i386/i586/memset.S
+++ b/sysdeps/i386/i586/memset.S
@@ -1,6 +1,6 @@
/* memset/bzero -- set memory area to CH/0
Highly optimized version for ix86, x>=5.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund, <tege@matematik.su.se>
@@ -35,7 +35,7 @@
#endif
.text
-#if defined PIC && !defined NOT_IN_libc && !BZERO_P
+#if defined PIC && IS_IN (libc) && !BZERO_P
ENTRY (__memset_chk)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
diff --git a/sysdeps/i386/i586/mul_1.S b/sysdeps/i386/i586/mul_1.S
index 61a18fda7e..1e2eafab0a 100644
--- a/sysdeps/i386/i586/mul_1.S
+++ b/sysdeps/i386/i586/mul_1.S
@@ -1,6 +1,6 @@
/* Pentium __mpn_mul_1 -- Multiply a limb vector with a limb and store
the result in a second limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/i586/pthread_spin_trylock.S b/sysdeps/i386/i586/pthread_spin_trylock.S
new file mode 100644
index 0000000000..0cf8b3ab70
--- /dev/null
+++ b/sysdeps/i386/i586/pthread_spin_trylock.S
@@ -0,0 +1 @@
+#include <sysdeps/i386/i486/pthread_spin_trylock.S>
diff --git a/sysdeps/i386/i586/rshift.S b/sysdeps/i386/i586/rshift.S
index b108b479de..4037013952 100644
--- a/sysdeps/i386/i586/rshift.S
+++ b/sysdeps/i386/i586/rshift.S
@@ -1,5 +1,5 @@
/* Pentium optimized __mpn_rshift --
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/i586/strchr.S b/sysdeps/i386/i586/strchr.S
index 6095a18407..b6564dd955 100644
--- a/sysdeps/i386/i586/strchr.S
+++ b/sysdeps/i386/i586/strchr.S
@@ -1,6 +1,6 @@
/* Find character CH in a NUL terminated string.
Highly optimized version for ix85, x>=5.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ Copyright (C) 1995-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
diff --git a/sysdeps/i386/i586/strcpy.S b/sysdeps/i386/i586/strcpy.S
index b061491532..848b8ae322 100644
--- a/sysdeps/i386/i586/strcpy.S
+++ b/sysdeps/i386/i586/strcpy.S
@@ -1,5 +1,5 @@
/* strcpy/stpcpy implementation for i586.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i586/strlen.S b/sysdeps/i386/i586/strlen.S
index a1fa464957..b718120e20 100644
--- a/sysdeps/i386/i586/strlen.S
+++ b/sysdeps/i386/i586/strlen.S
@@ -1,6 +1,6 @@
/* strlen -- Compute length of NUL terminated string.
Highly optimized version for ix86, x>=5.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ Copyright (C) 1995-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
diff --git a/sysdeps/i386/i586/sub_n.S b/sysdeps/i386/i586/sub_n.S
index d0ae56ab5b..e7dbb1c373 100644
--- a/sysdeps/i386/i586/sub_n.S
+++ b/sysdeps/i386/i586/sub_n.S
@@ -1,6 +1,6 @@
/* Pentium __mpn_sub_n -- Subtract two limb vectors of the same length > 0
and store difference in a third limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/i586/submul_1.S b/sysdeps/i386/i586/submul_1.S
index 982ea215eb..d8cbefdaa3 100644
--- a/sysdeps/i386/i586/submul_1.S
+++ b/sysdeps/i386/i586/submul_1.S
@@ -1,6 +1,6 @@
/* Pentium __mpn_submul_1 -- Multiply a limb vector with a limb and subtract
the result from a second limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/i686/Makefile b/sysdeps/i386/i686/Makefile
index 01c2917892..5ce9fc670a 100644
--- a/sysdeps/i386/i686/Makefile
+++ b/sysdeps/i386/i686/Makefile
@@ -1,8 +1,3 @@
-ifeq ($(subdir),csu)
-sysdep_routines += hp-timing
-elide-routines.os += hp-timing
-endif
-
# So that we can test __m128's alignment
stack-align-test-flags += -msse
diff --git a/sysdeps/i386/i686/add_n.S b/sysdeps/i386/i686/add_n.S
index f6113b38d5..386d9f3fb5 100644
--- a/sysdeps/i386/i686/add_n.S
+++ b/sysdeps/i386/i686/add_n.S
@@ -1,6 +1,6 @@
/* Add two limb vectors of the same length > 0 and store sum in a third
limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/i686/dl-hash.h b/sysdeps/i386/i686/dl-hash.h
index ac04459821..0f94bbea84 100644
--- a/sysdeps/i386/i686/dl-hash.h
+++ b/sysdeps/i386/i686/dl-hash.h
@@ -1,5 +1,5 @@
/* Compute hash alue for given string according to ELF standard.
- Copyright (C) 1998-2014 Free Software Foundation, Inc.
+ Copyright (C) 1998-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
diff --git a/sysdeps/i386/i686/ffs.c b/sysdeps/i386/i686/ffs.c
index 73b68c889d..70f7de7887 100644
--- a/sysdeps/i386/i686/ffs.c
+++ b/sysdeps/i386/i686/ffs.c
@@ -1,7 +1,7 @@
/* ffs -- find first set bit in a word, counted from least significant end.
For Intel 80x86, x>=6.
This file is part of the GNU C Library.
- Copyright (C) 1991-2014 Free Software Foundation, Inc.
+ Copyright (C) 1991-2015 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@cygnus.com>.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/sysdeps/i386/i686/fpu/e_logl.S b/sysdeps/i386/i686/fpu/e_logl.S
index 8a86222b13..0ccc8fc71e 100644
--- a/sysdeps/i386/i686/fpu/e_logl.S
+++ b/sysdeps/i386/i686/fpu/e_logl.S
@@ -39,14 +39,23 @@ ENTRY(__ieee754_logl)
LOAD_PIC_REG (dx)
#endif
fld %st // x : x : log(2)
+ movzwl 4+8(%esp), %eax
+ cmpl $0xc000, %eax
+ jae 5f // x <= -2, avoid overflow from -LDBL_MAX - 1.
fsubl MO(one) // x-1 : x : log(2)
- fld %st // x-1 : x-1 : x : log(2)
+5: fld %st // x-1 : x-1 : x : log(2)
fabs // |x-1| : x-1 : x : log(2)
fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2)
fcomip %st(1) // |x-1| : x-1 : x : log(2)
fstp %st(0) // x-1 : x : log(2)
jc 2f
- fstp %st(1) // x-1 : log(2)
+ fxam
+ fnstsw
+ andb $0x45, %ah
+ cmpb $0x40, %ah
+ jne 4f
+ fabs // log(1) is +0 in all rounding modes.
+4: fstp %st(1) // x-1 : log(2)
fyl2xp1 // log(x)
ret
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_expf-ia32.S b/sysdeps/i386/i686/fpu/multiarch/e_expf-ia32.S
index af925bcd1f..8ceb172f06 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_expf-ia32.S
+++ b/sysdeps/i386/i686/fpu/multiarch/e_expf-ia32.S
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 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
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S b/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
index 046e366878..be3b145e0f 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
+++ b/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
@@ -1,5 +1,5 @@
/* SSE2 version of __ieee754_expf and __expf_finite
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 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
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_expf.c b/sysdeps/i386/i686/fpu/multiarch/e_expf.c
index f97620bd63..5102dae3bb 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_expf.c
+++ b/sysdeps/i386/i686/fpu/multiarch/e_expf.c
@@ -1,5 +1,5 @@
/* Multiple versions of expf
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 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
diff --git a/sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S b/sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S
index 4b564bf801..0f99edc9e3 100644
--- a/sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S
+++ b/sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S
@@ -1,5 +1,5 @@
/* Optimized with sse2 version of cosf
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 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
diff --git a/sysdeps/i386/i686/fpu/multiarch/s_cosf.c b/sysdeps/i386/i686/fpu/multiarch/s_cosf.c
index 4cc4594575..0799dca3ef 100644
--- a/sysdeps/i386/i686/fpu/multiarch/s_cosf.c
+++ b/sysdeps/i386/i686/fpu/multiarch/s_cosf.c
@@ -1,5 +1,5 @@
/* Multiple versions of cosf
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 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
diff --git a/sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.S b/sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.S
index 60d239bb0b..f9aa221d9e 100644
--- a/sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.S
+++ b/sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.S
@@ -1,5 +1,5 @@
/* Optimized with sse2 version of sincosf
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 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
diff --git a/sysdeps/i386/i686/fpu/multiarch/s_sincosf.c b/sysdeps/i386/i686/fpu/multiarch/s_sincosf.c
index 18e887d801..384d84470f 100644
--- a/sysdeps/i386/i686/fpu/multiarch/s_sincosf.c
+++ b/sysdeps/i386/i686/fpu/multiarch/s_sincosf.c
@@ -1,5 +1,5 @@
/* Multiple versions of sincosf
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 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
diff --git a/sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S b/sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S
index b9a24cf9d7..1731e4d7be 100644
--- a/sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S
+++ b/sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S
@@ -1,5 +1,5 @@
/* Optimized with sse2 version of sinf
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 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
diff --git a/sysdeps/i386/i686/fpu/multiarch/s_sinf.c b/sysdeps/i386/i686/fpu/multiarch/s_sinf.c
index 0465edd502..6b627720cf 100644
--- a/sysdeps/i386/i686/fpu/multiarch/s_sinf.c
+++ b/sysdeps/i386/i686/fpu/multiarch/s_sinf.c
@@ -1,5 +1,5 @@
/* Multiple versions of sinf
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 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
diff --git a/sysdeps/i386/i686/fpu/s_fdim.S b/sysdeps/i386/i686/fpu/s_fdim.S
index 3d4b01f820..16fd54476a 100644
--- a/sysdeps/i386/i686/fpu/s_fdim.S
+++ b/sysdeps/i386/i686/fpu/s_fdim.S
@@ -1,5 +1,5 @@
/* Compute positive difference.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i686/fpu/s_fdimf.S b/sysdeps/i386/i686/fpu/s_fdimf.S
index 1310128438..e3a69f142c 100644
--- a/sysdeps/i386/i686/fpu/s_fdimf.S
+++ b/sysdeps/i386/i686/fpu/s_fdimf.S
@@ -1,5 +1,5 @@
/* Compute positive difference.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i686/fpu/s_fdiml.S b/sysdeps/i386/i686/fpu/s_fdiml.S
index b7b1d6d33f..f160f0d19e 100644
--- a/sysdeps/i386/i686/fpu/s_fdiml.S
+++ b/sysdeps/i386/i686/fpu/s_fdiml.S
@@ -1,5 +1,5 @@
/* Compute positive difference.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i686/fpu/s_fmax.S b/sysdeps/i386/i686/fpu/s_fmax.S
index e865ee01d9..898ecda44b 100644
--- a/sysdeps/i386/i686/fpu/s_fmax.S
+++ b/sysdeps/i386/i686/fpu/s_fmax.S
@@ -1,5 +1,5 @@
/* Compute maximum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i686/fpu/s_fmaxf.S b/sysdeps/i386/i686/fpu/s_fmaxf.S
index 7f7ac28c68..8e6808c56e 100644
--- a/sysdeps/i386/i686/fpu/s_fmaxf.S
+++ b/sysdeps/i386/i686/fpu/s_fmaxf.S
@@ -1,5 +1,5 @@
/* Compute maximum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i686/fpu/s_fmaxl.S b/sysdeps/i386/i686/fpu/s_fmaxl.S
index 5281f39814..346a379334 100644
--- a/sysdeps/i386/i686/fpu/s_fmaxl.S
+++ b/sysdeps/i386/i686/fpu/s_fmaxl.S
@@ -1,5 +1,5 @@
/* Compute maximum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i686/fpu/s_fmin.S b/sysdeps/i386/i686/fpu/s_fmin.S
index a173d55fd3..d788324429 100644
--- a/sysdeps/i386/i686/fpu/s_fmin.S
+++ b/sysdeps/i386/i686/fpu/s_fmin.S
@@ -1,5 +1,5 @@
/* Compute minimum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i686/fpu/s_fminf.S b/sysdeps/i386/i686/fpu/s_fminf.S
index f5371b073b..5cb84925c3 100644
--- a/sysdeps/i386/i686/fpu/s_fminf.S
+++ b/sysdeps/i386/i686/fpu/s_fminf.S
@@ -1,5 +1,5 @@
/* Compute minimum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i686/fpu/s_fminl.S b/sysdeps/i386/i686/fpu/s_fminl.S
index 048c42349c..91851a138b 100644
--- a/sysdeps/i386/i686/fpu/s_fminl.S
+++ b/sysdeps/i386/i686/fpu/s_fminl.S
@@ -1,5 +1,5 @@
/* Compute minimum of two numbers, regarding NaN as missing argument.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/i686/hp-timing.h b/sysdeps/i386/i686/hp-timing.h
index 4a2006e745..49a4c19e11 100644
--- a/sysdeps/i386/i686/hp-timing.h
+++ b/sysdeps/i386/i686/hp-timing.h
@@ -1,5 +1,5 @@
/* High precision, low overhead timing functions. i686 version.
- Copyright (C) 1998-2014 Free Software Foundation, Inc.
+ Copyright (C) 1998-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -20,62 +20,9 @@
#ifndef _HP_TIMING_H
#define _HP_TIMING_H 1
-#include <string.h>
-#include <sys/param.h>
-#include <_itoa.h>
-
-/* The macros defined here use the timestamp counter in i586 and up versions
- of the x86 processors. They provide a very accurate way to measure the
- time with very little overhead. The time values themself have no real
- meaning, only differences are interesting.
-
- This version is for the i686 processors. The difference to the i586
- version is that the timerstamp register is unconditionally used. This is
- not the case for the i586 version where we have to perform runtime test
- whether the processor really has this capability. We have to make this
- distinction since the sysdeps/i386/i586 code is supposed to work on all
- platforms while the i686 already contains i686-specific code.
-
- The list of macros we need includes the following:
-
- - HP_TIMING_AVAIL: test for availability.
-
- - HP_TIMING_INLINE: this macro is non-zero if the functionality is not
- implemented using function calls but instead uses some inlined code
- which might simply consist of a few assembler instructions. We have to
- know this since we might want to use the macros here in places where we
- cannot make function calls.
-
- - hp_timing_t: This is the type for variables used to store the time
- values.
-
- - HP_TIMING_ZERO: clear `hp_timing_t' object.
-
- - HP_TIMING_NOW: place timestamp for current time in variable given as
- parameter.
-
- - HP_TIMING_DIFF_INIT: do whatever is necessary to be able to use the
- HP_TIMING_DIFF macro.
-
- - HP_TIMING_DIFF: compute difference between two times and store it
- in a third. Source and destination might overlap.
-
- - HP_TIMING_ACCUM: add time difference to another variable. This might
- be a bit more complicated to implement for some platforms as the
- operation should be thread-safe and 64bit arithmetic on 32bit platforms
- is not.
-
- - HP_TIMING_ACCUM_NT: this is the variant for situations where we know
- there are no threads involved.
-
- - HP_TIMING_PRINT: write decimal representation of the timing value into
- the given string. This operation need not be inline even though
- HP_TIMING_INLINE is specified.
-
-*/
-
/* We always assume having the timestamp register. */
#define HP_TIMING_AVAIL (1)
+#define HP_SMALL_TIMING_AVAIL (1)
/* We indeed have inlined functions. */
#define HP_TIMING_INLINE (1)
@@ -83,9 +30,6 @@
/* We use 64bit values for the times. */
typedef unsigned long long int hp_timing_t;
-/* Set timestamp value to zero. */
-#define HP_TIMING_ZERO(Var) (Var) = (0)
-
/* That's quite simple. Use the `rdtsc' instruction. Note that the value
might not be 100% accurate since there might be some more instructions
running in this moment. This could be changed by using a barrier like
@@ -93,64 +37,6 @@ typedef unsigned long long int hp_timing_t;
in accurate clock cycles here so we don't do this. */
#define HP_TIMING_NOW(Var) __asm__ __volatile__ ("rdtsc" : "=A" (Var))
-/* Use two 'rdtsc' instructions in a row to find out how long it takes. */
-#define HP_TIMING_DIFF_INIT() \
- do { \
- if (GLRO(dl_hp_timing_overhead) == 0) \
- { \
- int __cnt = 5; \
- GLRO(dl_hp_timing_overhead) = ~0ull; \
- do \
- { \
- hp_timing_t __t1, __t2; \
- HP_TIMING_NOW (__t1); \
- HP_TIMING_NOW (__t2); \
- if (__t2 - __t1 < GLRO(dl_hp_timing_overhead)) \
- GLRO(dl_hp_timing_overhead) = __t2 - __t1; \
- } \
- while (--__cnt > 0); \
- } \
- } while (0)
-
-/* It's simple arithmetic for us. */
-#define HP_TIMING_DIFF(Diff, Start, End) (Diff) = ((End) - (Start))
-
-/* We have to jump through hoops to get this correctly implemented. */
-#define HP_TIMING_ACCUM(Sum, Diff) \
- do { \
- int __not_done; \
- hp_timing_t __oldval = (Sum); \
- hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead); \
- do \
- { \
- hp_timing_t __newval = __oldval + __diff; \
- int __temp0, __temp1; \
- __asm__ __volatile__ ("xchgl %0, %%ebx\n\t" \
- "lock; cmpxchg8b %1\n\t" \
- "sete %%bl\n\t" \
- "xchgl %0, %%ebx" \
- : "=SD" (__not_done), "=m" (Sum), \
- "=A" (__oldval), "=c" (__temp0) \
- : "m" (Sum), "2" (__oldval), \
- "3" ((unsigned int) (__newval >> 32)), \
- "0" ((unsigned int) __newval)); \
- } \
- while ((unsigned char) __not_done); \
- } while (0)
-
-/* No threads, no extra work. */
-#define HP_TIMING_ACCUM_NT(Sum, Diff) (Sum) += (Diff)
-
-/* Print the time value. */
-#define HP_TIMING_PRINT(Buf, Len, Val) \
- do { \
- char __buf[20]; \
- char *__cp = _itoa (Val, __buf + sizeof (__buf), 10, 0); \
- size_t __len = (Len); \
- char *__dest = (Buf); \
- while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \
- *__dest++ = *__cp++; \
- memcpy (__dest, " clock cycles", MIN (__len, sizeof (" clock cycles"))); \
- } while (0)
+#include <hp-timing-common.h>
#endif /* hp-timing.h */
diff --git a/sysdeps/i386/i686/memcmp.S b/sysdeps/i386/i686/memcmp.S
index 612e37dcb0..b6e375b95f 100644
--- a/sysdeps/i386/i686/memcmp.S
+++ b/sysdeps/i386/i686/memcmp.S
@@ -1,5 +1,5 @@
/* Compare two memory blocks for differences in the first COUNT bytes.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
+ Copyright (C) 2004-2015 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
diff --git a/sysdeps/i386/i686/memcpy.S b/sysdeps/i386/i686/memcpy.S
index 17e815e901..f9f3df73e9 100644
--- a/sysdeps/i386/i686/memcpy.S
+++ b/sysdeps/i386/i686/memcpy.S
@@ -1,7 +1,7 @@
/* Copy memory block and return pointer to beginning of destination block
For Intel 80x86, x>=6.
This file is part of the GNU C Library.
- Copyright (C) 1999-2014 Free Software Foundation, Inc.
+ Copyright (C) 1999-2015 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
The GNU C Library is free software; you can redistribute it and/or
@@ -28,7 +28,7 @@
#define LEN SRC+4
.text
-#if defined PIC && !defined NOT_IN_libc
+#if defined PIC && IS_IN (libc)
ENTRY_CHK (__memcpy_chk)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
diff --git a/sysdeps/i386/i686/memcpy_chk.S b/sysdeps/i386/i686/memcpy_chk.S
index b320e5c1a8..cdf807fdad 100644
--- a/sysdeps/i386/i686/memcpy_chk.S
+++ b/sysdeps/i386/i686/memcpy_chk.S
@@ -1,5 +1,5 @@
/* Checking memcpy for i686.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
+ Copyright (C) 2004-2015 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
diff --git a/sysdeps/i386/i686/memmove.S b/sysdeps/i386/i686/memmove.S
index 4b8785f22c..d994b7213a 100644
--- a/sysdeps/i386/i686/memmove.S
+++ b/sysdeps/i386/i686/memmove.S
@@ -1,7 +1,7 @@
/* Copy memory block and return pointer to beginning of destination block
For Intel 80x86, x>=6.
This file is part of the GNU C Library.
- Copyright (C) 2003-2014 Free Software Foundation, Inc.
+ Copyright (C) 2003-2015 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 2003.
The GNU C Library is free software; you can redistribute it and/or
@@ -35,7 +35,7 @@
# define SRC DEST+4
# define LEN SRC+4
-# if defined PIC && !defined NOT_IN_libc
+# if defined PIC && IS_IN (libc)
ENTRY_CHK (__memmove_chk)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
diff --git a/sysdeps/i386/i686/memmove_chk.S b/sysdeps/i386/i686/memmove_chk.S
index 9b1ae23318..64bf9e0ed6 100644
--- a/sysdeps/i386/i686/memmove_chk.S
+++ b/sysdeps/i386/i686/memmove_chk.S
@@ -1,5 +1,5 @@
/* Checking memmove for x86-64.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
+ Copyright (C) 2004-2015 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
diff --git a/sysdeps/i386/i686/mempcpy.S b/sysdeps/i386/i686/mempcpy.S
index ec4b42b8d7..f3a244ac31 100644
--- a/sysdeps/i386/i686/mempcpy.S
+++ b/sysdeps/i386/i686/mempcpy.S
@@ -1,7 +1,7 @@
/* Copy memory block and return pointer to following byte.
For Intel 80x86, x>=6.
This file is part of the GNU C Library.
- Copyright (C) 1998-2014 Free Software Foundation, Inc.
+ Copyright (C) 1998-2015 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
The GNU C Library is free software; you can redistribute it and/or
@@ -28,7 +28,7 @@
#define LEN SRC+4
.text
-#if defined PIC && !defined NOT_IN_libc
+#if defined PIC && IS_IN (libc)
ENTRY_CHK (__mempcpy_chk)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
diff --git a/sysdeps/i386/i686/mempcpy_chk.S b/sysdeps/i386/i686/mempcpy_chk.S
index 7bbb9f28f1..a61757b4e0 100644
--- a/sysdeps/i386/i686/mempcpy_chk.S
+++ b/sysdeps/i386/i686/mempcpy_chk.S
@@ -1,5 +1,5 @@
/* Checking mempcpy for x86-64.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
+ Copyright (C) 2004-2015 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
diff --git a/sysdeps/i386/i686/memset.S b/sysdeps/i386/i686/memset.S
index 72d21fa92d..b6dbf2a56d 100644
--- a/sysdeps/i386/i686/memset.S
+++ b/sysdeps/i386/i686/memset.S
@@ -1,6 +1,6 @@
/* memset/bzero -- set memory area to CH/0
Highly optimized version for ix86, x>=6.
- Copyright (C) 1999-2014 Free Software Foundation, Inc.
+ Copyright (C) 1999-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
@@ -36,7 +36,7 @@
#endif
.text
-#if defined PIC && !defined NOT_IN_libc && !BZERO_P
+#if defined PIC && IS_IN (libc) && !BZERO_P
ENTRY_CHK (__memset_chk)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
@@ -99,7 +99,7 @@ ENTRY (memset)
END (memset)
libc_hidden_builtin_def (memset)
-#if defined PIC && !defined NOT_IN_libc && !BZERO_P
+#if defined PIC && IS_IN (libc) && !BZERO_P
strong_alias (__memset_chk, __memset_zero_constant_len_parameter)
.section .gnu.warning.__memset_zero_constant_len_parameter
.string "memset used with constant zero length parameter; this could be due to transposed parameters"
diff --git a/sysdeps/i386/i686/memset_chk.S b/sysdeps/i386/i686/memset_chk.S
index 6211f75426..da982fd916 100644
--- a/sysdeps/i386/i686/memset_chk.S
+++ b/sysdeps/i386/i686/memset_chk.S
@@ -1,5 +1,5 @@
/* Checking memset for i686.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
+ Copyright (C) 2004-2015 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
diff --git a/sysdeps/i386/i686/memusage.h b/sysdeps/i386/i686/memusage.h
index 7191434272..042f704f38 100644
--- a/sysdeps/i386/i686/memusage.h
+++ b/sysdeps/i386/i686/memusage.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2014 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2015 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
diff --git a/sysdeps/i386/i686/multiarch/Makefile b/sysdeps/i386/i686/multiarch/Makefile
index 55778cbcd1..11ce4ba1e3 100644
--- a/sysdeps/i386/i686/multiarch/Makefile
+++ b/sysdeps/i386/i686/multiarch/Makefile
@@ -23,7 +23,9 @@ sysdep_routines += bzero-sse2 memset-sse2 memcpy-ssse3 mempcpy-ssse3 \
strnlen-sse2 strnlen-c \
strcasecmp_l-c strcasecmp-c strcasecmp_l-ssse3 \
strncase_l-c strncase-c strncase_l-ssse3 \
- strcasecmp_l-sse4 strncase_l-sse4
+ strcasecmp_l-sse4 strncase_l-sse4 \
+ bcopy-sse2-unaligned memcpy-sse2-unaligned \
+ mempcpy-sse2-unaligned memmove-sse2-unaligned
ifeq (yes,$(config-cflags-sse4))
sysdep_routines += strcspn-c strpbrk-c strspn-c
CFLAGS-varshift.c += -msse4
diff --git a/sysdeps/i386/i686/multiarch/bcopy-sse2-unaligned.S b/sysdeps/i386/i686/multiarch/bcopy-sse2-unaligned.S
new file mode 100644
index 0000000000..efef2a10dd
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/bcopy-sse2-unaligned.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMMOVE
+#define USE_AS_BCOPY
+#define MEMCPY __bcopy_sse2_unaligned
+#include "memcpy-sse2-unaligned.S"
diff --git a/sysdeps/i386/i686/multiarch/bcopy.S b/sysdeps/i386/i686/multiarch/bcopy.S
index 4f50035d0a..e767d97019 100644
--- a/sysdeps/i386/i686/multiarch/bcopy.S
+++ b/sysdeps/i386/i686/multiarch/bcopy.S
@@ -1,6 +1,6 @@
/* Multiple versions of bcopy
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -22,7 +22,7 @@
#include <init-arch.h>
/* Define multiple versions only for the definition in lib. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
ENTRY(bcopy)
@@ -35,6 +35,11 @@ ENTRY(bcopy)
jne 1f
call __init_cpu_features
1: leal __bcopy_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __bcopy_sse2_unaligned@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features@GOTOFF(%ebx)
+ jnz 2f
testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
jz 2f
leal __bcopy_ssse3@GOTOFF(%ebx), %eax
diff --git a/sysdeps/i386/i686/multiarch/bzero.S b/sysdeps/i386/i686/multiarch/bzero.S
index cd59940f9c..e8dc85fc9f 100644
--- a/sysdeps/i386/i686/multiarch/bzero.S
+++ b/sysdeps/i386/i686/multiarch/bzero.S
@@ -1,6 +1,6 @@
/* Multiple versions of bzero
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -22,7 +22,7 @@
#include <init-arch.h>
/* Define multiple versions only for the definition in lib. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
ENTRY(__bzero)
diff --git a/sysdeps/i386/i686/multiarch/ifunc-impl-list.c b/sysdeps/i386/i686/multiarch/ifunc-impl-list.c
index e47577690d..92366a7b46 100644
--- a/sysdeps/i386/i686/multiarch/ifunc-impl-list.c
+++ b/sysdeps/i386/i686/multiarch/ifunc-impl-list.c
@@ -1,5 +1,5 @@
/* Enumerate available IFUNC implementations of a function. i686 version.
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 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
@@ -23,7 +23,7 @@
#include "init-arch.h"
/* Maximum number of IFUNC implementations. */
-#define MAX_IFUNC 3
+#define MAX_IFUNC 4
/* Fill ARRAY of MAX elements with IFUNC implementations for function
NAME and return the number of valid entries. */
@@ -41,6 +41,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
IFUNC_IMPL_ADD (array, i, bcopy, HAS_SSSE3,
__bcopy_ssse3_rep)
IFUNC_IMPL_ADD (array, i, bcopy, HAS_SSSE3, __bcopy_ssse3)
+ IFUNC_IMPL_ADD (array, i, bcopy, HAS_SSE2,
+ __bcopy_sse2_unaligned)
IFUNC_IMPL_ADD (array, i, bcopy, 1, __bcopy_ia32))
/* Support sysdeps/i386/i686/multiarch/bzero.S. */
@@ -69,6 +71,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
__memmove_chk_ssse3_rep)
IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_SSSE3,
__memmove_chk_ssse3)
+ IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_SSE2,
+ __memmove_chk_sse2_unaligned)
IFUNC_IMPL_ADD (array, i, __memmove_chk, 1,
__memmove_chk_ia32))
@@ -78,6 +82,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
__memmove_ssse3_rep)
IFUNC_IMPL_ADD (array, i, memmove, HAS_SSSE3,
__memmove_ssse3)
+ IFUNC_IMPL_ADD (array, i, memmove, HAS_SSE2,
+ __memmove_sse2_unaligned)
IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_ia32))
/* Support sysdeps/i386/i686/multiarch/memrchr.S. */
@@ -268,6 +274,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
__memcpy_chk_ssse3_rep)
IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_SSSE3,
__memcpy_chk_ssse3)
+ IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_SSE2,
+ __memcpy_chk_sse2_unaligned)
IFUNC_IMPL_ADD (array, i, __memcpy_chk, 1,
__memcpy_chk_ia32))
@@ -276,6 +284,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSSE3,
__memcpy_ssse3_rep)
IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSSE3, __memcpy_ssse3)
+ IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSE2,
+ __memcpy_sse2_unaligned)
IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ia32))
/* Support sysdeps/i386/i686/multiarch/mempcpy_chk.S. */
@@ -284,6 +294,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
__mempcpy_chk_ssse3_rep)
IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_SSSE3,
__mempcpy_chk_ssse3)
+ IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_SSE2,
+ __mempcpy_chk_sse2_unaligned)
IFUNC_IMPL_ADD (array, i, __mempcpy_chk, 1,
__mempcpy_chk_ia32))
@@ -293,6 +305,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
__mempcpy_ssse3_rep)
IFUNC_IMPL_ADD (array, i, mempcpy, HAS_SSSE3,
__mempcpy_ssse3)
+ IFUNC_IMPL_ADD (array, i, mempcpy, HAS_SSE2,
+ __mempcpy_sse2_unaligned)
IFUNC_IMPL_ADD (array, i, mempcpy, 1, __mempcpy_ia32))
/* Support sysdeps/i386/i686/multiarch/strlen.S. */
diff --git a/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S b/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
index 8f5ccca195..a5ae86a7ff 100644
--- a/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
+++ b/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
@@ -1,5 +1,5 @@
/* Optimized memchr with sse2
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/memchr-sse2.S b/sysdeps/i386/i686/multiarch/memchr-sse2.S
index 8d2c159cea..ae40677278 100644
--- a/sysdeps/i386/i686/multiarch/memchr-sse2.S
+++ b/sysdeps/i386/i686/multiarch/memchr-sse2.S
@@ -1,5 +1,5 @@
/* Optimized memchr with sse2 without bsf
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/memchr.S b/sysdeps/i386/i686/multiarch/memchr.S
index 1bdf0e7968..02994d055e 100644
--- a/sysdeps/i386/i686/multiarch/memchr.S
+++ b/sysdeps/i386/i686/multiarch/memchr.S
@@ -1,6 +1,6 @@
/* Multiple versions of memchr
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -21,7 +21,7 @@
#include <sysdep.h>
#include <init-arch.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# define CFI_POP(REG) \
cfi_adjust_cfa_offset (-4); \
cfi_restore (REG)
diff --git a/sysdeps/i386/i686/multiarch/memcmp-sse4.S b/sysdeps/i386/i686/multiarch/memcmp-sse4.S
index a23861556a..b3756f4a00 100644
--- a/sysdeps/i386/i686/multiarch/memcmp-sse4.S
+++ b/sysdeps/i386/i686/multiarch/memcmp-sse4.S
@@ -1,5 +1,5 @@
/* memcmp with SSE4.2, wmemcmp with SSE4.2
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/memcmp-ssse3.S b/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
index 4a0bd6727a..ea2a25b216 100644
--- a/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
+++ b/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
@@ -1,5 +1,5 @@
/* memcmp with SSSE3, wmemcmp with SSSE3
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/memcmp.S b/sysdeps/i386/i686/multiarch/memcmp.S
index e4d56fa28f..6b607ebd3b 100644
--- a/sysdeps/i386/i686/multiarch/memcmp.S
+++ b/sysdeps/i386/i686/multiarch/memcmp.S
@@ -1,6 +1,6 @@
/* Multiple versions of memcmp
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -22,7 +22,7 @@
#include <init-arch.h>
/* Define multiple versions only for the definition in libc. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
ENTRY(memcmp)
diff --git a/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S b/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S
new file mode 100644
index 0000000000..8215c70b15
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S
@@ -0,0 +1,681 @@
+/* memcpy optimized with SSE2 unaligned memory access instructions.
+ Copyright (C) 2014-2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#if IS_IN (libc) \
+ && (defined SHARED \
+ || defined USE_AS_MEMMOVE \
+ || !defined USE_MULTIARCH)
+
+# include <sysdep.h>
+# include "asm-syntax.h"
+
+# ifndef MEMCPY
+# define MEMCPY __memcpy_sse2_unaligned
+# define MEMCPY_CHK __memcpy_chk_sse2_unaligned
+# endif
+
+# ifdef USE_AS_BCOPY
+# define SRC PARMS
+# define DEST SRC+4
+# define LEN DEST+4
+# else
+# define DEST PARMS
+# define SRC DEST+4
+# define LEN SRC+4
+# endif
+
+# define CFI_PUSH(REG) \
+ cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (REG, 0)
+
+# define CFI_POP(REG) \
+ cfi_adjust_cfa_offset (-4); \
+ cfi_restore (REG)
+
+# define PUSH(REG) pushl REG; CFI_PUSH (REG)
+# define POP(REG) popl REG; CFI_POP (REG)
+
+# define PARMS 8 /* Preserve EBX. */
+# define ENTRANCE PUSH (%ebx);
+# define RETURN_END POP (%ebx); ret
+# define RETURN RETURN_END; CFI_PUSH (%ebx)
+
+ .section .text.sse2,"ax",@progbits
+# if !defined USE_AS_BCOPY
+ENTRY (MEMCPY_CHK)
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb HIDDEN_JUMPTARGET (__chk_fail)
+END (MEMCPY_CHK)
+# endif
+
+ENTRY (MEMCPY)
+ ENTRANCE
+ movl LEN(%esp), %ecx
+ movl SRC(%esp), %eax
+ movl DEST(%esp), %edx
+ cmp %edx, %eax
+
+# ifdef USE_AS_MEMMOVE
+ jg L(check_forward)
+
+L(mm_len_0_or_more_backward):
+/* Now do checks for lengths. We do [0..16], [16..32], [32..64], [64..128]
+ separately. */
+ cmp $16, %ecx
+ jbe L(mm_len_0_16_bytes_backward)
+
+ cmpl $32, %ecx
+ jg L(mm_len_32_or_more_backward)
+
+/* Copy [0..32] and return. */
+ movdqu (%eax), %xmm0
+ movdqu -16(%eax, %ecx), %xmm1
+ movdqu %xmm0, (%edx)
+ movdqu %xmm1, -16(%edx, %ecx)
+ jmp L(return)
+
+L(mm_len_32_or_more_backward):
+ cmpl $64, %ecx
+ jg L(mm_len_64_or_more_backward)
+
+/* Copy [0..64] and return. */
+ movdqu (%eax), %xmm0
+ movdqu 16(%eax), %xmm1
+ movdqu -16(%eax, %ecx), %xmm2
+ movdqu -32(%eax, %ecx), %xmm3
+ movdqu %xmm0, (%edx)
+ movdqu %xmm1, 16(%edx)
+ movdqu %xmm2, -16(%edx, %ecx)
+ movdqu %xmm3, -32(%edx, %ecx)
+ jmp L(return)
+
+L(mm_len_64_or_more_backward):
+ cmpl $128, %ecx
+ jg L(mm_len_128_or_more_backward)
+
+/* Copy [0..128] and return. */
+ movdqu (%eax), %xmm0
+ movdqu 16(%eax), %xmm1
+ movdqu 32(%eax), %xmm2
+ movdqu 48(%eax), %xmm3
+ movdqu -64(%eax, %ecx), %xmm4
+ movdqu -48(%eax, %ecx), %xmm5
+ movdqu -32(%eax, %ecx), %xmm6
+ movdqu -16(%eax, %ecx), %xmm7
+ movdqu %xmm0, (%edx)
+ movdqu %xmm1, 16(%edx)
+ movdqu %xmm2, 32(%edx)
+ movdqu %xmm3, 48(%edx)
+ movdqu %xmm4, -64(%edx, %ecx)
+ movdqu %xmm5, -48(%edx, %ecx)
+ movdqu %xmm6, -32(%edx, %ecx)
+ movdqu %xmm7, -16(%edx, %ecx)
+ jmp L(return)
+
+L(mm_len_128_or_more_backward):
+ add %ecx, %eax
+ cmp %edx, %eax
+ movl SRC(%esp), %eax
+ jle L(forward)
+ PUSH (%esi)
+ PUSH (%edi)
+ PUSH (%ebx)
+
+/* Aligning the address of destination. */
+ movdqu (%eax), %xmm4
+ movdqu 16(%eax), %xmm5
+ movdqu 32(%eax), %xmm6
+ movdqu 48(%eax), %xmm7
+ leal (%edx, %ecx), %esi
+ movdqu -16(%eax, %ecx), %xmm0
+ subl $16, %esp
+ movdqu %xmm0, (%esp)
+ mov %ecx, %edi
+ movl %esi, %ecx
+ andl $-16, %ecx
+ leal (%ecx), %ebx
+ subl %edx, %ebx
+ leal (%eax, %ebx), %eax
+ shrl $6, %ebx
+
+# ifdef SHARED_CACHE_SIZE_HALF
+ cmp $SHARED_CACHE_SIZE_HALF, %edi
+# else
+# ifdef SHARED
+ PUSH (%ebx)
+ SETUP_PIC_REG (bx)
+ add $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmp __x86_shared_cache_size_half@GOTOFF(%ebx), %edi
+ POP (%ebx)
+# else
+ cmp __x86_shared_cache_size_half, %edi
+# endif
+# endif
+ jae L(mm_large_page_loop_backward)
+
+ .p2align 4
+L(mm_main_loop_backward):
+
+ prefetcht0 -128(%eax)
+
+ movdqu -64(%eax), %xmm0
+ movdqu -48(%eax), %xmm1
+ movdqu -32(%eax), %xmm2
+ movdqu -16(%eax), %xmm3
+ movaps %xmm0, -64(%ecx)
+ subl $64, %eax
+ movaps %xmm1, -48(%ecx)
+ movaps %xmm2, -32(%ecx)
+ movaps %xmm3, -16(%ecx)
+ subl $64, %ecx
+ sub $1, %ebx
+ jnz L(mm_main_loop_backward)
+ movdqu (%esp), %xmm0
+ addl $16, %esp
+ movdqu %xmm0, -16(%esi)
+ movdqu %xmm4, (%edx)
+ movdqu %xmm5, 16(%edx)
+ movdqu %xmm6, 32(%edx)
+ movdqu %xmm7, 48(%edx)
+ POP (%ebx)
+ jmp L(mm_return_pop_all)
+
+/* Copy [0..16] and return. */
+L(mm_len_0_16_bytes_backward):
+ testb $24, %cl
+ jnz L(mm_len_9_16_bytes_backward)
+ testb $4, %cl
+ .p2align 4,,5
+ jnz L(mm_len_5_8_bytes_backward)
+ testl %ecx, %ecx
+ .p2align 4,,2
+ je L(return)
+ testb $2, %cl
+ .p2align 4,,1
+ jne L(mm_len_3_4_bytes_backward)
+ movzbl -1(%eax,%ecx), %ebx
+ movzbl (%eax), %eax
+ movb %bl, -1(%edx,%ecx)
+ movb %al, (%edx)
+ jmp L(return)
+
+L(mm_len_3_4_bytes_backward):
+ movzwl -2(%eax,%ecx), %ebx
+ movzwl (%eax), %eax
+ movw %bx, -2(%edx,%ecx)
+ movw %ax, (%edx)
+ jmp L(return)
+
+L(mm_len_9_16_bytes_backward):
+ PUSH (%esi)
+ movl -4(%eax,%ecx), %ebx
+ movl -8(%eax,%ecx), %esi
+ movl %ebx, -4(%edx,%ecx)
+ movl %esi, -8(%edx,%ecx)
+ subl $8, %ecx
+ POP (%esi)
+ jmp L(mm_len_0_16_bytes_backward)
+
+L(mm_len_5_8_bytes_backward):
+ movl (%eax), %ebx
+ movl -4(%eax,%ecx), %eax
+ movl %ebx, (%edx)
+ movl %eax, -4(%edx,%ecx)
+ jmp L(return)
+
+/* Big length copy backward part. */
+ .p2align 4
+L(mm_large_page_loop_backward):
+ movdqu -64(%eax), %xmm0
+ movdqu -48(%eax), %xmm1
+ movdqu -32(%eax), %xmm2
+ movdqu -16(%eax), %xmm3
+ movntdq %xmm0, -64(%ecx)
+ subl $64, %eax
+ movntdq %xmm1, -48(%ecx)
+ movntdq %xmm2, -32(%ecx)
+ movntdq %xmm3, -16(%ecx)
+ subl $64, %ecx
+ sub $1, %ebx
+ jnz L(mm_large_page_loop_backward)
+ sfence
+ movdqu (%esp), %xmm0
+ addl $16, %esp
+ movdqu %xmm0, -16(%esi)
+ movdqu %xmm4, (%edx)
+ movdqu %xmm5, 16(%edx)
+ movdqu %xmm6, 32(%edx)
+ movdqu %xmm7, 48(%edx)
+ POP (%ebx)
+ jmp L(mm_return_pop_all)
+
+L(check_forward):
+ add %edx, %ecx
+ cmp %eax, %ecx
+ movl LEN(%esp), %ecx
+ jle L(forward)
+
+/* Now do checks for lengths. We do [0..16], [0..32], [0..64], [0..128]
+ separately. */
+ cmp $16, %ecx
+ jbe L(mm_len_0_16_bytes_forward)
+
+ cmpl $32, %ecx
+ ja L(mm_len_32_or_more_forward)
+
+/* Copy [0..32] and return. */
+ movdqu (%eax), %xmm0
+ movdqu -16(%eax, %ecx), %xmm1
+ movdqu %xmm0, (%edx)
+ movdqu %xmm1, -16(%edx, %ecx)
+ jmp L(return)
+
+L(mm_len_32_or_more_forward):
+ cmpl $64, %ecx
+ ja L(mm_len_64_or_more_forward)
+
+/* Copy [0..64] and return. */
+ movdqu (%eax), %xmm0
+ movdqu 16(%eax), %xmm1
+ movdqu -16(%eax, %ecx), %xmm2
+ movdqu -32(%eax, %ecx), %xmm3
+ movdqu %xmm0, (%edx)
+ movdqu %xmm1, 16(%edx)
+ movdqu %xmm2, -16(%edx, %ecx)
+ movdqu %xmm3, -32(%edx, %ecx)
+ jmp L(return)
+
+L(mm_len_64_or_more_forward):
+ cmpl $128, %ecx
+ ja L(mm_len_128_or_more_forward)
+
+/* Copy [0..128] and return. */
+ movdqu (%eax), %xmm0
+ movdqu 16(%eax), %xmm1
+ movdqu 32(%eax), %xmm2
+ movdqu 48(%eax), %xmm3
+ movdqu -64(%eax, %ecx), %xmm4
+ movdqu -48(%eax, %ecx), %xmm5
+ movdqu -32(%eax, %ecx), %xmm6
+ movdqu -16(%eax, %ecx), %xmm7
+ movdqu %xmm0, (%edx)
+ movdqu %xmm1, 16(%edx)
+ movdqu %xmm2, 32(%edx)
+ movdqu %xmm3, 48(%edx)
+ movdqu %xmm4, -64(%edx, %ecx)
+ movdqu %xmm5, -48(%edx, %ecx)
+ movdqu %xmm6, -32(%edx, %ecx)
+ movdqu %xmm7, -16(%edx, %ecx)
+ jmp L(return)
+
+L(mm_len_128_or_more_forward):
+ PUSH (%esi)
+ PUSH (%edi)
+ PUSH (%ebx)
+
+/* Aligning the address of destination. */
+ movdqu -16(%eax, %ecx), %xmm4
+ movdqu -32(%eax, %ecx), %xmm5
+ movdqu -48(%eax, %ecx), %xmm6
+ movdqu -64(%eax, %ecx), %xmm7
+ leal (%edx, %ecx), %esi
+ movdqu (%eax), %xmm0
+ subl $16, %esp
+ movdqu %xmm0, (%esp)
+ mov %ecx, %edi
+ leal 16(%edx), %ecx
+ andl $-16, %ecx
+ movl %ecx, %ebx
+ subl %edx, %ebx
+ addl %ebx, %eax
+ movl %esi, %ebx
+ subl %ecx, %ebx
+ shrl $6, %ebx
+
+# ifdef SHARED_CACHE_SIZE_HALF
+ cmp $SHARED_CACHE_SIZE_HALF, %edi
+# else
+# ifdef SHARED
+ PUSH (%ebx)
+ SETUP_PIC_REG(bx)
+ add $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmp __x86_shared_cache_size_half@GOTOFF(%ebx), %edi
+ POP (%ebx)
+# else
+ cmp __x86_shared_cache_size_half, %edi
+# endif
+# endif
+ jae L(mm_large_page_loop_forward)
+
+ .p2align 4
+L(mm_main_loop_forward):
+
+ prefetcht0 128(%eax)
+
+ movdqu (%eax), %xmm0
+ movdqu 16(%eax), %xmm1
+ movdqu 32(%eax), %xmm2
+ movdqu 48(%eax), %xmm3
+ movdqa %xmm0, (%ecx)
+ addl $64, %eax
+ movaps %xmm1, 16(%ecx)
+ movaps %xmm2, 32(%ecx)
+ movaps %xmm3, 48(%ecx)
+ addl $64, %ecx
+ sub $1, %ebx
+ jnz L(mm_main_loop_forward)
+ movdqu (%esp), %xmm0
+ addl $16, %esp
+ movdqu %xmm0, (%edx)
+ movdqu %xmm4, -16(%esi)
+ movdqu %xmm5, -32(%esi)
+ movdqu %xmm6, -48(%esi)
+ movdqu %xmm7, -64(%esi)
+ POP (%ebx)
+ jmp L(mm_return_pop_all)
+
+L(mm_len_0_16_bytes_forward):
+ testb $24, %cl
+ jne L(mm_len_9_16_bytes_forward)
+ testb $4, %cl
+ .p2align 4,,5
+ jne L(mm_len_5_8_bytes_forward)
+ testl %ecx, %ecx
+ .p2align 4,,2
+ je L(return)
+ testb $2, %cl
+ .p2align 4,,1
+ jne L(mm_len_2_4_bytes_forward)
+ movzbl -1(%eax,%ecx), %ebx
+ movzbl (%eax), %eax
+ movb %bl, -1(%edx,%ecx)
+ movb %al, (%edx)
+ jmp L(return)
+
+L(mm_len_2_4_bytes_forward):
+ movzwl -2(%eax,%ecx), %ebx
+ movzwl (%eax), %eax
+ movw %bx, -2(%edx,%ecx)
+ movw %ax, (%edx)
+ jmp L(return)
+
+L(mm_len_5_8_bytes_forward):
+ movl (%eax), %ebx
+ movl -4(%eax,%ecx), %eax
+ movl %ebx, (%edx)
+ movl %eax, -4(%edx,%ecx)
+ jmp L(return)
+
+L(mm_len_9_16_bytes_forward):
+ movq (%eax), %xmm0
+ movq -8(%eax, %ecx), %xmm1
+ movq %xmm0, (%edx)
+ movq %xmm1, -8(%edx, %ecx)
+ jmp L(return)
+
+L(mm_return_pop_all):
+ movl %edx, %eax
+ POP (%edi)
+ POP (%esi)
+ RETURN
+
+/* Big length copy forward part. */
+ .p2align 4
+L(mm_large_page_loop_forward):
+ movdqu (%eax), %xmm0
+ movdqu 16(%eax), %xmm1
+ movdqu 32(%eax), %xmm2
+ movdqu 48(%eax), %xmm3
+ movntdq %xmm0, (%ecx)
+ addl $64, %eax
+ movntdq %xmm1, 16(%ecx)
+ movntdq %xmm2, 32(%ecx)
+ movntdq %xmm3, 48(%ecx)
+ addl $64, %ecx
+ sub $1, %ebx
+ jnz L(mm_large_page_loop_forward)
+ sfence
+ movdqu (%esp), %xmm0
+ addl $16, %esp
+ movdqu %xmm0, (%edx)
+ movdqu %xmm4, -16(%esi)
+ movdqu %xmm5, -32(%esi)
+ movdqu %xmm6, -48(%esi)
+ movdqu %xmm7, -64(%esi)
+ POP (%ebx)
+ jmp L(mm_return_pop_all)
+# endif
+
+L(forward):
+ cmp $16, %ecx
+ jbe L(len_0_16_bytes)
+
+# ifdef SHARED_CACHE_SIZE_HALF
+ cmp $SHARED_CACHE_SIZE_HALF, %ecx
+# else
+# ifdef SHARED
+ SETUP_PIC_REG(bx)
+ add $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmp __x86_shared_cache_size_half@GOTOFF(%ebx), %ecx
+# else
+ cmp __x86_shared_cache_size_half, %ecx
+# endif
+# endif
+ jae L(large_page)
+
+ movdqu (%eax), %xmm0
+ movdqu -16(%eax, %ecx), %xmm1
+ cmpl $32, %ecx
+ movdqu %xmm0, (%edx)
+ movdqu %xmm1, -16(%edx, %ecx)
+ jbe L(return)
+
+ movdqu 16(%eax), %xmm0
+ movdqu -32(%eax, %ecx), %xmm1
+ cmpl $64, %ecx
+ movdqu %xmm0, 16(%edx)
+ movdqu %xmm1, -32(%edx, %ecx)
+ jbe L(return)
+
+ movdqu 32(%eax), %xmm0
+ movdqu 48(%eax), %xmm1
+ movdqu -48(%eax, %ecx), %xmm2
+ movdqu -64(%eax, %ecx), %xmm3
+ cmpl $128, %ecx
+ movdqu %xmm0, 32(%edx)
+ movdqu %xmm1, 48(%edx)
+ movdqu %xmm2, -48(%edx, %ecx)
+ movdqu %xmm3, -64(%edx, %ecx)
+ jbe L(return)
+
+/* Now the main loop: we align the address of the destination. */
+ leal 64(%edx), %ebx
+ andl $-64, %ebx
+
+ addl %edx, %ecx
+ andl $-64, %ecx
+
+ subl %edx, %eax
+
+/* We should stop two iterations before the termination
+ (in order not to misprefetch). */
+ subl $64, %ecx
+ cmpl %ebx, %ecx
+ je L(main_loop_just_one_iteration)
+
+ subl $64, %ecx
+ cmpl %ebx, %ecx
+ je L(main_loop_last_two_iterations)
+
+ .p2align 4
+L(main_loop_cache):
+
+ prefetcht0 128(%ebx, %eax)
+
+ movdqu (%ebx, %eax), %xmm0
+ movdqu 16(%ebx, %eax), %xmm1
+ movdqu 32(%ebx, %eax), %xmm2
+ movdqu 48(%ebx, %eax), %xmm3
+ movdqa %xmm0, (%ebx)
+ movaps %xmm1, 16(%ebx)
+ movaps %xmm2, 32(%ebx)
+ movaps %xmm3, 48(%ebx)
+ lea 64(%ebx), %ebx
+ cmpl %ebx, %ecx
+ jne L(main_loop_cache)
+
+L(main_loop_last_two_iterations):
+ movdqu (%ebx, %eax), %xmm0
+ movdqu 16(%ebx, %eax), %xmm1
+ movdqu 32(%ebx, %eax), %xmm2
+ movdqu 48(%ebx, %eax), %xmm3
+ movdqu 64(%ebx, %eax), %xmm4
+ movdqu 80(%ebx, %eax), %xmm5
+ movdqu 96(%ebx, %eax), %xmm6
+ movdqu 112(%ebx, %eax), %xmm7
+ movdqa %xmm0, (%ebx)
+ movaps %xmm1, 16(%ebx)
+ movaps %xmm2, 32(%ebx)
+ movaps %xmm3, 48(%ebx)
+ movaps %xmm4, 64(%ebx)
+ movaps %xmm5, 80(%ebx)
+ movaps %xmm6, 96(%ebx)
+ movaps %xmm7, 112(%ebx)
+ jmp L(return)
+
+L(main_loop_just_one_iteration):
+ movdqu (%ebx, %eax), %xmm0
+ movdqu 16(%ebx, %eax), %xmm1
+ movdqu 32(%ebx, %eax), %xmm2
+ movdqu 48(%ebx, %eax), %xmm3
+ movdqa %xmm0, (%ebx)
+ movaps %xmm1, 16(%ebx)
+ movaps %xmm2, 32(%ebx)
+ movaps %xmm3, 48(%ebx)
+ jmp L(return)
+
+L(large_page):
+ movdqu (%eax), %xmm0
+ movdqu 16(%eax), %xmm1
+ movdqu 32(%eax), %xmm2
+ movdqu 48(%eax), %xmm3
+ movdqu -64(%eax, %ecx), %xmm4
+ movdqu -48(%eax, %ecx), %xmm5
+ movdqu -32(%eax, %ecx), %xmm6
+ movdqu -16(%eax, %ecx), %xmm7
+ movdqu %xmm0, (%edx)
+ movdqu %xmm1, 16(%edx)
+ movdqu %xmm2, 32(%edx)
+ movdqu %xmm3, 48(%edx)
+ movdqu %xmm4, -64(%edx, %ecx)
+ movdqu %xmm5, -48(%edx, %ecx)
+ movdqu %xmm6, -32(%edx, %ecx)
+ movdqu %xmm7, -16(%edx, %ecx)
+
+ movdqu 64(%eax), %xmm0
+ movdqu 80(%eax), %xmm1
+ movdqu 96(%eax), %xmm2
+ movdqu 112(%eax), %xmm3
+ movdqu -128(%eax, %ecx), %xmm4
+ movdqu -112(%eax, %ecx), %xmm5
+ movdqu -96(%eax, %ecx), %xmm6
+ movdqu -80(%eax, %ecx), %xmm7
+ movdqu %xmm0, 64(%edx)
+ movdqu %xmm1, 80(%edx)
+ movdqu %xmm2, 96(%edx)
+ movdqu %xmm3, 112(%edx)
+ movdqu %xmm4, -128(%edx, %ecx)
+ movdqu %xmm5, -112(%edx, %ecx)
+ movdqu %xmm6, -96(%edx, %ecx)
+ movdqu %xmm7, -80(%edx, %ecx)
+
+/* Now the main loop with non temporal stores. We align
+ the address of the destination. */
+ leal 128(%edx), %ebx
+ andl $-128, %ebx
+
+ addl %edx, %ecx
+ andl $-128, %ecx
+
+ subl %edx, %eax
+
+ .p2align 4
+L(main_loop_large_page):
+ movdqu (%ebx, %eax), %xmm0
+ movdqu 16(%ebx, %eax), %xmm1
+ movdqu 32(%ebx, %eax), %xmm2
+ movdqu 48(%ebx, %eax), %xmm3
+ movdqu 64(%ebx, %eax), %xmm4
+ movdqu 80(%ebx, %eax), %xmm5
+ movdqu 96(%ebx, %eax), %xmm6
+ movdqu 112(%ebx, %eax), %xmm7
+ movntdq %xmm0, (%ebx)
+ movntdq %xmm1, 16(%ebx)
+ movntdq %xmm2, 32(%ebx)
+ movntdq %xmm3, 48(%ebx)
+ movntdq %xmm4, 64(%ebx)
+ movntdq %xmm5, 80(%ebx)
+ movntdq %xmm6, 96(%ebx)
+ movntdq %xmm7, 112(%ebx)
+ lea 128(%ebx), %ebx
+ cmpl %ebx, %ecx
+ jne L(main_loop_large_page)
+ sfence
+ jmp L(return)
+
+L(len_0_16_bytes):
+ testb $24, %cl
+ jne L(len_9_16_bytes)
+ testb $4, %cl
+ .p2align 4,,5
+ jne L(len_5_8_bytes)
+ testl %ecx, %ecx
+ .p2align 4,,2
+ je L(return)
+ movzbl (%eax), %ebx
+ testb $2, %cl
+ movb %bl, (%edx)
+ je L(return)
+ movzwl -2(%eax,%ecx), %ebx
+ movw %bx, -2(%edx,%ecx)
+ jmp L(return)
+
+L(len_9_16_bytes):
+ movq (%eax), %xmm0
+ movq -8(%eax, %ecx), %xmm1
+ movq %xmm0, (%edx)
+ movq %xmm1, -8(%edx, %ecx)
+ jmp L(return)
+
+L(len_5_8_bytes):
+ movl (%eax), %ebx
+ movl %ebx, (%edx)
+ movl -4(%eax,%ecx), %ebx
+ movl %ebx, -4(%edx,%ecx)
+
+L(return):
+ movl %edx, %eax
+# if !defined USE_AS_BCOPY && defined USE_AS_MEMPCPY
+ movl LEN(%esp), %ecx
+ add %ecx, %eax
+# endif
+ RETURN
+
+END (MEMCPY)
+#endif
diff --git a/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
index c4cdcfdbe3..08d877c03a 100644
--- a/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
+++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
@@ -1,5 +1,5 @@
/* memcpy with SSSE3 and REP string.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -19,7 +19,7 @@
#include <sysdep.h>
-#if !defined NOT_IN_libc \
+#if IS_IN (libc) \
&& (defined SHARED \
|| defined USE_AS_MEMMOVE \
|| !defined USE_MULTIARCH)
diff --git a/sysdeps/i386/i686/multiarch/memcpy-ssse3.S b/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
index c0d718b8aa..27ab6a2c3e 100644
--- a/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
+++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
@@ -1,5 +1,5 @@
/* memcpy with SSSE3
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#if !defined NOT_IN_libc \
+#if IS_IN (libc) \
&& (defined SHARED \
|| defined USE_AS_MEMMOVE \
|| !defined USE_MULTIARCH)
diff --git a/sysdeps/i386/i686/multiarch/memcpy.S b/sysdeps/i386/i686/multiarch/memcpy.S
index f583482bd7..c6d20bd8e0 100644
--- a/sysdeps/i386/i686/multiarch/memcpy.S
+++ b/sysdeps/i386/i686/multiarch/memcpy.S
@@ -1,6 +1,6 @@
/* Multiple versions of memcpy
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -24,7 +24,7 @@
/* Define multiple versions only for the definition in lib and for
DSO. In static binaries we need memcpy before the initialization
happened. */
-#if defined SHARED && !defined NOT_IN_libc
+#if defined SHARED && IS_IN (libc)
.text
ENTRY(memcpy)
.type memcpy, @gnu_indirect_function
@@ -36,6 +36,11 @@ ENTRY(memcpy)
jne 1f
call __init_cpu_features
1: leal __memcpy_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memcpy_sse2_unaligned@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features@GOTOFF(%ebx)
+ jnz 2f
testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
jz 2f
leal __memcpy_ssse3@GOTOFF(%ebx), %eax
diff --git a/sysdeps/i386/i686/multiarch/memcpy_chk.S b/sysdeps/i386/i686/multiarch/memcpy_chk.S
index bf93b68fa4..93995879f8 100644
--- a/sysdeps/i386/i686/multiarch/memcpy_chk.S
+++ b/sysdeps/i386/i686/multiarch/memcpy_chk.S
@@ -1,6 +1,6 @@
/* Multiple versions of __memcpy_chk
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -24,7 +24,7 @@
/* Define multiple versions only for the definition in lib and for
DSO. There are no multiarch memcpy functions for static binaries.
*/
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
ENTRY(__memcpy_chk)
@@ -37,6 +37,11 @@ ENTRY(__memcpy_chk)
jne 1f
call __init_cpu_features
1: leal __memcpy_chk_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memcpy_chk_sse2_unaligned@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features@GOTOFF(%ebx)
+ jnz 2f
testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
jz 2f
leal __memcpy_chk_ssse3@GOTOFF(%ebx), %eax
diff --git a/sysdeps/i386/i686/multiarch/memmove-sse2-unaligned.S b/sysdeps/i386/i686/multiarch/memmove-sse2-unaligned.S
new file mode 100644
index 0000000000..3873594cb2
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memmove-sse2-unaligned.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMMOVE
+#define MEMCPY __memmove_sse2_unaligned
+#define MEMCPY_CHK __memmove_chk_sse2_unaligned
+#include "memcpy-sse2-unaligned.S"
diff --git a/sysdeps/i386/i686/multiarch/memmove.S b/sysdeps/i386/i686/multiarch/memmove.S
index 90cf16770f..70334639ba 100644
--- a/sysdeps/i386/i686/multiarch/memmove.S
+++ b/sysdeps/i386/i686/multiarch/memmove.S
@@ -1,6 +1,6 @@
/* Multiple versions of memmove
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -22,7 +22,7 @@
#include <init-arch.h>
/* Define multiple versions only for the definition in lib. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
ENTRY(memmove)
@@ -35,6 +35,11 @@ ENTRY(memmove)
jne 1f
call __init_cpu_features
1: leal __memmove_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memmove_sse2_unaligned@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features@GOTOFF(%ebx)
+ jnz 2f
testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
jz 2f
leal __memmove_ssse3@GOTOFF(%ebx), %eax
@@ -63,6 +68,11 @@ ENTRY(memmove)
jne 1f
call __init_cpu_features
1: leal __memmove_ia32, %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features
+ jz 2f
+ leal __memmove_sse2_unaligned, %eax
+ testl $bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features
+ jnz 2f
testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
jz 2f
leal __memmove_ssse3, %eax
diff --git a/sysdeps/i386/i686/multiarch/memmove_chk.S b/sysdeps/i386/i686/multiarch/memmove_chk.S
index 182aeb3d46..2b576d4960 100644
--- a/sysdeps/i386/i686/multiarch/memmove_chk.S
+++ b/sysdeps/i386/i686/multiarch/memmove_chk.S
@@ -1,6 +1,6 @@
/* Multiple versions of __memmove_chk
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -22,7 +22,7 @@
#include <init-arch.h>
/* Define multiple versions only for the definition in lib. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
ENTRY(__memmove_chk)
@@ -35,6 +35,11 @@ ENTRY(__memmove_chk)
jne 1f
call __init_cpu_features
1: leal __memmove_chk_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memmove_chk_sse2_unaligned@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features@GOTOFF(%ebx)
+ jnz 2f
testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
jz 2f
leal __memmove_chk_ssse3@GOTOFF(%ebx), %eax
@@ -54,6 +59,11 @@ ENTRY(__memmove_chk)
jne 1f
call __init_cpu_features
1: leal __memmove_chk_ia32, %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features
+ jz 2f
+ leal __memmove_chk_sse2_unaligned, %eax
+ testl $bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features
+ jnz 2f
testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
jz 2f
leal __memmove_chk_ssse3, %eax
@@ -63,6 +73,18 @@ ENTRY(__memmove_chk)
2: ret
END(__memmove_chk)
+ .type __memmove_chk_sse2_unaligned, @function
+ .p2align 4;
+__memmove_chk_sse2_unaligned:
+ cfi_startproc
+ CALL_MCOUNT
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb __chk_fail
+ jmp __memmove_sse2_unaligned
+ cfi_endproc
+ .size __memmove_chk_sse2_unaligned, .-__memmove_chk_sse2_unaligned
+
.type __memmove_chk_ssse3, @function
.p2align 4;
__memmove_chk_ssse3:
diff --git a/sysdeps/i386/i686/multiarch/mempcpy-sse2-unaligned.S b/sysdeps/i386/i686/multiarch/mempcpy-sse2-unaligned.S
new file mode 100644
index 0000000000..a1cea50771
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/mempcpy-sse2-unaligned.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMPCPY
+#define MEMCPY __mempcpy_sse2_unaligned
+#define MEMCPY_CHK __mempcpy_chk_sse2_unaligned
+#include "memcpy-sse2-unaligned.S"
diff --git a/sysdeps/i386/i686/multiarch/mempcpy.S b/sysdeps/i386/i686/multiarch/mempcpy.S
index 56b50bb2fc..39c934eb49 100644
--- a/sysdeps/i386/i686/multiarch/mempcpy.S
+++ b/sysdeps/i386/i686/multiarch/mempcpy.S
@@ -1,6 +1,6 @@
/* Multiple versions of mempcpy
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -24,7 +24,7 @@
/* Define multiple versions only for the definition in lib and for
DSO. In static binaries we need mempcpy before the initialization
happened. */
-#if defined SHARED && !defined NOT_IN_libc
+#if defined SHARED && IS_IN (libc)
.text
ENTRY(__mempcpy)
.type __mempcpy, @gnu_indirect_function
@@ -36,6 +36,11 @@ ENTRY(__mempcpy)
jne 1f
call __init_cpu_features
1: leal __mempcpy_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __mempcpy_sse2_unaligned@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features@GOTOFF(%ebx)
+ jnz 2f
testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
jz 2f
leal __mempcpy_ssse3@GOTOFF(%ebx), %eax
diff --git a/sysdeps/i386/i686/multiarch/mempcpy_chk.S b/sysdeps/i386/i686/multiarch/mempcpy_chk.S
index a76341c0e3..b6fa202833 100644
--- a/sysdeps/i386/i686/multiarch/mempcpy_chk.S
+++ b/sysdeps/i386/i686/multiarch/mempcpy_chk.S
@@ -1,6 +1,6 @@
/* Multiple versions of __mempcpy_chk
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -24,7 +24,7 @@
/* Define multiple versions only for the definition in lib and for
DSO. There are no multiarch mempcpy functions for static binaries.
*/
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
ENTRY(__mempcpy_chk)
@@ -37,6 +37,11 @@ ENTRY(__mempcpy_chk)
jne 1f
call __init_cpu_features
1: leal __mempcpy_chk_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __mempcpy_chk_sse2_unaligned@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features@GOTOFF(%ebx)
+ jnz 2f
testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
jz 2f
leal __mempcpy_chk_ssse3@GOTOFF(%ebx), %eax
diff --git a/sysdeps/i386/i686/multiarch/memrchr-c.c b/sysdeps/i386/i686/multiarch/memrchr-c.c
index 44ec1a6ed9..ef7bbbe792 100644
--- a/sysdeps/i386/i686/multiarch/memrchr-c.c
+++ b/sysdeps/i386/i686/multiarch/memrchr-c.c
@@ -1,4 +1,4 @@
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# define MEMRCHR __memrchr_ia32
# include <string.h>
extern void *__memrchr_ia32 (const void *, int, size_t);
diff --git a/sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S b/sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S
index 303ef9dd62..043e1bbd23 100644
--- a/sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S
+++ b/sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S
@@ -1,5 +1,5 @@
/* Optimized memrchr with sse2
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/memrchr-sse2.S b/sysdeps/i386/i686/multiarch/memrchr-sse2.S
index 90ba738498..65e3c8bc73 100644
--- a/sysdeps/i386/i686/multiarch/memrchr-sse2.S
+++ b/sysdeps/i386/i686/multiarch/memrchr-sse2.S
@@ -1,5 +1,5 @@
/* Optimized memrchr with sse2 without bsf
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
# define CFI_PUSH(REG) \
diff --git a/sysdeps/i386/i686/multiarch/memrchr.S b/sysdeps/i386/i686/multiarch/memrchr.S
index 0dff8b6e80..321e0b7e4e 100644
--- a/sysdeps/i386/i686/multiarch/memrchr.S
+++ b/sysdeps/i386/i686/multiarch/memrchr.S
@@ -1,6 +1,6 @@
/* Multiple versions of memrchr
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -21,7 +21,7 @@
#include <sysdep.h>
#include <init-arch.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# define CFI_POP(REG) \
cfi_adjust_cfa_offset (-4); \
cfi_restore (REG)
diff --git a/sysdeps/i386/i686/multiarch/memset-sse2-rep.S b/sysdeps/i386/i686/multiarch/memset-sse2-rep.S
index 8655a8c5b4..9c8f232c42 100644
--- a/sysdeps/i386/i686/multiarch/memset-sse2-rep.S
+++ b/sysdeps/i386/i686/multiarch/memset-sse2-rep.S
@@ -1,5 +1,5 @@
/* memset with SSE2 and REP string.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
#include <sysdep.h>
#include "asm-syntax.h"
@@ -79,7 +79,7 @@
#endif
.section .text.sse2,"ax",@progbits
-#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BZERO
+#if defined SHARED && IS_IN (libc) && !defined USE_AS_BZERO
ENTRY (__memset_chk_sse2_rep)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
diff --git a/sysdeps/i386/i686/multiarch/memset-sse2.S b/sysdeps/i386/i686/multiarch/memset-sse2.S
index cd94e4e7b9..d03e647a3f 100644
--- a/sysdeps/i386/i686/multiarch/memset-sse2.S
+++ b/sysdeps/i386/i686/multiarch/memset-sse2.S
@@ -1,5 +1,5 @@
/* memset with SSE2
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
#include <sysdep.h>
#include "asm-syntax.h"
@@ -79,7 +79,7 @@
#endif
.section .text.sse2,"ax",@progbits
-#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BZERO
+#if defined SHARED && IS_IN (libc) && !defined USE_AS_BZERO
ENTRY (__memset_chk_sse2)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
diff --git a/sysdeps/i386/i686/multiarch/memset.S b/sysdeps/i386/i686/multiarch/memset.S
index ecec1ead46..6d7d919409 100644
--- a/sysdeps/i386/i686/multiarch/memset.S
+++ b/sysdeps/i386/i686/multiarch/memset.S
@@ -1,6 +1,6 @@
/* Multiple versions of memset
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -22,7 +22,7 @@
#include <init-arch.h>
/* Define multiple versions only for the definition in lib. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
ENTRY(memset)
diff --git a/sysdeps/i386/i686/multiarch/memset_chk.S b/sysdeps/i386/i686/multiarch/memset_chk.S
index 92c6099590..a770c0d9e2 100644
--- a/sysdeps/i386/i686/multiarch/memset_chk.S
+++ b/sysdeps/i386/i686/multiarch/memset_chk.S
@@ -1,6 +1,6 @@
/* Multiple versions of __memset_chk
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -22,7 +22,7 @@
#include <init-arch.h>
/* Define multiple versions only for the definition in lib. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
ENTRY(__memset_chk)
diff --git a/sysdeps/i386/i686/multiarch/rawmemchr.S b/sysdeps/i386/i686/multiarch/rawmemchr.S
index 01850cf904..c2b7ee647e 100644
--- a/sysdeps/i386/i686/multiarch/rawmemchr.S
+++ b/sysdeps/i386/i686/multiarch/rawmemchr.S
@@ -1,6 +1,6 @@
/* Multiple versions of rawmemchr
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -21,7 +21,7 @@
#include <sysdep.h>
#include <init-arch.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# define CFI_POP(REG) \
cfi_adjust_cfa_offset (-4); \
cfi_restore (REG)
diff --git a/sysdeps/i386/i686/multiarch/s_fma-fma.c b/sysdeps/i386/i686/multiarch/s_fma-fma.c
index dcf1ee5ba3..1a8b48bd58 100644
--- a/sysdeps/i386/i686/multiarch/s_fma-fma.c
+++ b/sysdeps/i386/i686/multiarch/s_fma-fma.c
@@ -1,5 +1,5 @@
/* FMA version of fma.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
diff --git a/sysdeps/i386/i686/multiarch/s_fma.c b/sysdeps/i386/i686/multiarch/s_fma.c
index 49680e4937..dd70f78fd7 100644
--- a/sysdeps/i386/i686/multiarch/s_fma.c
+++ b/sysdeps/i386/i686/multiarch/s_fma.c
@@ -1,5 +1,5 @@
/* Multiple versions of fma.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
diff --git a/sysdeps/i386/i686/multiarch/s_fmaf-fma.c b/sysdeps/i386/i686/multiarch/s_fmaf-fma.c
index 42722acfa9..1775ef5dd0 100644
--- a/sysdeps/i386/i686/multiarch/s_fmaf-fma.c
+++ b/sysdeps/i386/i686/multiarch/s_fmaf-fma.c
@@ -1,5 +1,5 @@
/* FMA version of fmaf.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
diff --git a/sysdeps/i386/i686/multiarch/s_fmaf.c b/sysdeps/i386/i686/multiarch/s_fmaf.c
index 638980ae7d..9ffa4f15d9 100644
--- a/sysdeps/i386/i686/multiarch/s_fmaf.c
+++ b/sysdeps/i386/i686/multiarch/s_fmaf.c
@@ -1,5 +1,5 @@
/* Multiple versions of fmaf.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
diff --git a/sysdeps/i386/i686/multiarch/strcasecmp.S b/sysdeps/i386/i686/multiarch/strcasecmp.S
index 4f2de4f37b..c30ac3a8bd 100644
--- a/sysdeps/i386/i686/multiarch/strcasecmp.S
+++ b/sysdeps/i386/i686/multiarch/strcasecmp.S
@@ -1,6 +1,6 @@
/* Entry point for multi-version x86 strcasecmp.
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 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
@@ -37,7 +37,7 @@ ENTRY(__strcasecmp)
leal __strcasecmp_ssse3@GOTOFF(%ebx), %eax
testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
jz 2f
- testl $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features@GOTOFF(%ebx)
+ testl $bit_Slow_SSE4_2, FEATURE_OFFSET+index_Slow_SSE4_2+__cpu_features@GOTOFF(%ebx)
jnz 2f
leal __strcasecmp_sse4_2@GOTOFF(%ebx), %eax
2: popl %ebx
@@ -58,7 +58,7 @@ ENTRY(__strcasecmp)
leal __strcasecmp_ssse3, %eax
testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
jz 2f
- testl $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features
+ testl $bit_Slow_SSE4_2, FEATURE_OFFSET+index_Slow_SSE4_2+__cpu_features
jnz 2f
leal __strcasecmp_sse4_2, %eax
2: ret
diff --git a/sysdeps/i386/i686/multiarch/strcat-sse2.S b/sysdeps/i386/i686/multiarch/strcat-sse2.S
index efd3f67a39..0f9e13c6d3 100644
--- a/sysdeps/i386/i686/multiarch/strcat-sse2.S
+++ b/sysdeps/i386/i686/multiarch/strcat-sse2.S
@@ -1,5 +1,5 @@
/* strcat with SSE2
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -18,7 +18,7 @@
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/strcat-ssse3.S b/sysdeps/i386/i686/multiarch/strcat-ssse3.S
index 8527166f75..a5b0bc6818 100644
--- a/sysdeps/i386/i686/multiarch/strcat-ssse3.S
+++ b/sysdeps/i386/i686/multiarch/strcat-ssse3.S
@@ -1,5 +1,5 @@
/* strcat with SSSE3
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -18,7 +18,7 @@
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/strcat.S b/sysdeps/i386/i686/multiarch/strcat.S
index 598c3f0a58..474f753f3f 100644
--- a/sysdeps/i386/i686/multiarch/strcat.S
+++ b/sysdeps/i386/i686/multiarch/strcat.S
@@ -1,6 +1,6 @@
/* Multiple versions of strcat
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -43,7 +43,7 @@
/* Define multiple versions only for the definition in libc. Don't
define multiple versions for strncat in static library since we
need strncat before the initialization happened. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
diff --git a/sysdeps/i386/i686/multiarch/strchr-sse2-bsf.S b/sysdeps/i386/i686/multiarch/strchr-sse2-bsf.S
index 3357f53f56..ba2723bb51 100644
--- a/sysdeps/i386/i686/multiarch/strchr-sse2-bsf.S
+++ b/sysdeps/i386/i686/multiarch/strchr-sse2-bsf.S
@@ -1,5 +1,5 @@
/* strchr with SSE2 with bsf
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/strchr-sse2.S b/sysdeps/i386/i686/multiarch/strchr-sse2.S
index e0f3a2edf4..4f387eaeea 100644
--- a/sysdeps/i386/i686/multiarch/strchr-sse2.S
+++ b/sysdeps/i386/i686/multiarch/strchr-sse2.S
@@ -1,5 +1,5 @@
/* strchr SSE2 without bsf
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/strchr.S b/sysdeps/i386/i686/multiarch/strchr.S
index 0fc4d8c293..45624fdee0 100644
--- a/sysdeps/i386/i686/multiarch/strchr.S
+++ b/sysdeps/i386/i686/multiarch/strchr.S
@@ -1,6 +1,6 @@
/* Multiple versions of strchr
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -21,7 +21,7 @@
#include <sysdep.h>
#include <init-arch.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
.text
ENTRY(strchr)
.type strchr, @gnu_indirect_function
diff --git a/sysdeps/i386/i686/multiarch/strcmp-sse4.S b/sysdeps/i386/i686/multiarch/strcmp-sse4.S
index 42d308a923..38c2317c26 100644
--- a/sysdeps/i386/i686/multiarch/strcmp-sse4.S
+++ b/sysdeps/i386/i686/multiarch/strcmp-sse4.S
@@ -1,5 +1,5 @@
/* strcmp with SSE4.2
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
#include <sysdep.h>
#include "asm-syntax.h"
diff --git a/sysdeps/i386/i686/multiarch/strcmp-ssse3.S b/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
index c3107e50ef..fb21288c7d 100644
--- a/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
+++ b/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
@@ -1,5 +1,5 @@
/* strcmp with SSSE3
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
#include <sysdep.h>
#include "asm-syntax.h"
diff --git a/sysdeps/i386/i686/multiarch/strcmp.S b/sysdeps/i386/i686/multiarch/strcmp.S
index 2ad6bf4212..9df40089a7 100644
--- a/sysdeps/i386/i686/multiarch/strcmp.S
+++ b/sysdeps/i386/i686/multiarch/strcmp.S
@@ -1,6 +1,6 @@
/* Multiple versions of strcmp
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -50,7 +50,7 @@
/* Define multiple versions only for the definition in libc. Don't
define multiple versions for strncmp in static library since we
need strncmp before the initialization happened. */
-#if (defined SHARED || !defined USE_AS_STRNCMP) && !defined NOT_IN_libc
+#if (defined SHARED || !defined USE_AS_STRNCMP) && IS_IN (libc)
# ifdef SHARED
.text
ENTRY(STRCMP)
@@ -68,7 +68,7 @@ ENTRY(STRCMP)
leal __STRCMP_SSSE3@GOTOFF(%ebx), %eax
testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
jz 2f
- testl $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features@GOTOFF(%ebx)
+ testl $bit_Slow_SSE4_2, FEATURE_OFFSET+index_Slow_SSE4_2+__cpu_features@GOTOFF(%ebx)
jnz 2f
leal __STRCMP_SSE4_2@GOTOFF(%ebx), %eax
2: popl %ebx
@@ -89,7 +89,7 @@ ENTRY(STRCMP)
leal __STRCMP_SSSE3, %eax
testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
jz 2f
- testl $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features
+ testl $bit_Slow_SSE4_2, FEATURE_OFFSET+index_Slow_SSE4_2+__cpu_features
jnz 2f
leal __STRCMP_SSE4_2, %eax
2: ret
diff --git a/sysdeps/i386/i686/multiarch/strcpy-sse2.S b/sysdeps/i386/i686/multiarch/strcpy-sse2.S
index cbe040caf8..a37c44530d 100644
--- a/sysdeps/i386/i686/multiarch/strcpy-sse2.S
+++ b/sysdeps/i386/i686/multiarch/strcpy-sse2.S
@@ -1,5 +1,5 @@
/* strcpy with SSE2 and unaligned load
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -18,7 +18,7 @@
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/strcpy-ssse3.S b/sysdeps/i386/i686/multiarch/strcpy-ssse3.S
index 2d67994816..9f88e7735d 100644
--- a/sysdeps/i386/i686/multiarch/strcpy-ssse3.S
+++ b/sysdeps/i386/i686/multiarch/strcpy-ssse3.S
@@ -1,5 +1,5 @@
/* strcpy with SSSE3
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -18,7 +18,7 @@
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifndef USE_AS_STRCAT
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/strcpy.S b/sysdeps/i386/i686/multiarch/strcpy.S
index f44ddf7ec4..c279d468cb 100644
--- a/sysdeps/i386/i686/multiarch/strcpy.S
+++ b/sysdeps/i386/i686/multiarch/strcpy.S
@@ -1,6 +1,6 @@
/* Multiple versions of strcpy
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -59,7 +59,7 @@
/* Define multiple versions only for the definition in libc. Don't
define multiple versions for strncpy in static library since we
need strncpy before the initialization happened. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
diff --git a/sysdeps/i386/i686/multiarch/strcspn.S b/sysdeps/i386/i686/multiarch/strcspn.S
index c35f4bfc3b..e6ea454150 100644
--- a/sysdeps/i386/i686/multiarch/strcspn.S
+++ b/sysdeps/i386/i686/multiarch/strcspn.S
@@ -1,6 +1,6 @@
/* Multiple versions of strcspn
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2009-2014 Free Software Foundation, Inc.
+ Copyright (C) 2009-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -41,7 +41,7 @@
/* Define multiple versions only for the definition in libc. Don't
define multiple versions for strpbrk in static library since we
need strpbrk before the initialization happened. */
-#if (defined SHARED || !defined USE_AS_STRPBRK) && !defined NOT_IN_libc
+#if (defined SHARED || !defined USE_AS_STRPBRK) && IS_IN (libc)
# ifdef SHARED
.text
ENTRY(STRCSPN)
diff --git a/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S b/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S
index 8f9b149de0..668a2a65fc 100644
--- a/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S
+++ b/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S
@@ -1,5 +1,5 @@
/* strlen with SSE2 and BSF
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#if defined SHARED && !defined NOT_IN_libc
+#if defined SHARED && IS_IN (libc)
#include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/strlen-sse2.S b/sysdeps/i386/i686/multiarch/strlen-sse2.S
index 20e82a6104..3d30714b7a 100644
--- a/sysdeps/i386/i686/multiarch/strlen-sse2.S
+++ b/sysdeps/i386/i686/multiarch/strlen-sse2.S
@@ -1,5 +1,5 @@
/* strlen with SSE2
- Copyright (C) 2010-2014 Free Software Foundation, Inc.
+ Copyright (C) 2010-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -19,7 +19,7 @@
/* for strlen only SHARED version is optimized, for strcat, strncat, strnlen both STATIC and SHARED are optimized */
-#if (defined USE_AS_STRNLEN || defined USE_AS_STRCAT || defined SHARED) && !defined NOT_IN_libc
+#if (defined USE_AS_STRNLEN || defined USE_AS_STRCAT || defined SHARED) && IS_IN (libc)
# ifndef USE_AS_STRCAT
diff --git a/sysdeps/i386/i686/multiarch/strlen.S b/sysdeps/i386/i686/multiarch/strlen.S
index 5b262a2ef2..2e6993b738 100644
--- a/sysdeps/i386/i686/multiarch/strlen.S
+++ b/sysdeps/i386/i686/multiarch/strlen.S
@@ -1,6 +1,6 @@
/* Multiple versions of strlen
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2009-2014 Free Software Foundation, Inc.
+ Copyright (C) 2009-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -24,7 +24,7 @@
/* Define multiple versions only for the definition in libc and for the
DSO. In static binaries, we need strlen before the initialization
happened. */
-#if defined SHARED && !defined NOT_IN_libc
+#if defined SHARED && IS_IN (libc)
.text
ENTRY(strlen)
.type strlen, @gnu_indirect_function
diff --git a/sysdeps/i386/i686/multiarch/strncase.S b/sysdeps/i386/i686/multiarch/strncase.S
index 9b4cfa063a..c2cb03c2bb 100644
--- a/sysdeps/i386/i686/multiarch/strncase.S
+++ b/sysdeps/i386/i686/multiarch/strncase.S
@@ -1,6 +1,6 @@
/* Entry point for multi-version x86 strncasecmp.
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 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
@@ -37,7 +37,7 @@ ENTRY(__strncasecmp)
leal __strncasecmp_ssse3@GOTOFF(%ebx), %eax
testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
jz 2f
- testl $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features@GOTOFF(%ebx)
+ testl $bit_Slow_SSE4_2, FEATURE_OFFSET+index_Slow_SSE4_2+__cpu_features@GOTOFF(%ebx)
jnz 2f
leal __strncasecmp_sse4_2@GOTOFF(%ebx), %eax
2: popl %ebx
@@ -58,7 +58,7 @@ ENTRY(__strncasecmp)
leal __strncasecmp_ssse3, %eax
testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
jz 2f
- testl $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features
+ testl $bit_Slow_SSE4_2, FEATURE_OFFSET+index_Slow_SSE4_2+__cpu_features
jnz 2f
leal __strncasecmp_sse4_2, %eax
2: ret
diff --git a/sysdeps/i386/i686/multiarch/strnlen-c.c b/sysdeps/i386/i686/multiarch/strnlen-c.c
index f02465d6a4..351e939a93 100644
--- a/sysdeps/i386/i686/multiarch/strnlen-c.c
+++ b/sysdeps/i386/i686/multiarch/strnlen-c.c
@@ -2,7 +2,9 @@
#ifdef SHARED
# undef libc_hidden_def
# define libc_hidden_def(name) \
- __hidden_ver1 (__strnlen_ia32, __GI_strnlen, __strnlen_ia32);
+ __hidden_ver1 (__strnlen_ia32, __GI_strnlen, __strnlen_ia32); \
+ strong_alias (__strnlen_ia32, __strnlen_ia32_1); \
+ __hidden_ver1 (__strnlen_ia32_1, __GI___strnlen, __strnlen_ia32_1);
#endif
#include "string/strnlen.c"
diff --git a/sysdeps/i386/i686/multiarch/strnlen.S b/sysdeps/i386/i686/multiarch/strnlen.S
index 63357d7267..56a5136606 100644
--- a/sysdeps/i386/i686/multiarch/strnlen.S
+++ b/sysdeps/i386/i686/multiarch/strnlen.S
@@ -1,6 +1,6 @@
/* Multiple versions of strnlen
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -21,7 +21,7 @@
#include <sysdep.h>
#include <init-arch.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
.text
ENTRY(__strnlen)
.type __strnlen, @gnu_indirect_function
diff --git a/sysdeps/i386/i686/multiarch/strrchr-sse2-bsf.S b/sysdeps/i386/i686/multiarch/strrchr-sse2-bsf.S
index 622b9f2fe6..a3d42ddd4f 100644
--- a/sysdeps/i386/i686/multiarch/strrchr-sse2-bsf.S
+++ b/sysdeps/i386/i686/multiarch/strrchr-sse2-bsf.S
@@ -1,5 +1,5 @@
/* strrchr with SSE2 with bsf and bsr
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/strrchr-sse2.S b/sysdeps/i386/i686/multiarch/strrchr-sse2.S
index 1644d5d080..df36ba0a93 100644
--- a/sysdeps/i386/i686/multiarch/strrchr-sse2.S
+++ b/sysdeps/i386/i686/multiarch/strrchr-sse2.S
@@ -1,5 +1,5 @@
/* strrchr SSE2 without bsf and bsr
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/strrchr.S b/sysdeps/i386/i686/multiarch/strrchr.S
index 323f3f49ca..91074b4315 100644
--- a/sysdeps/i386/i686/multiarch/strrchr.S
+++ b/sysdeps/i386/i686/multiarch/strrchr.S
@@ -1,6 +1,6 @@
/* Multiple versions of strrchr
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -21,7 +21,7 @@
#include <sysdep.h>
#include <init-arch.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
.text
ENTRY(strrchr)
.type strrchr, @gnu_indirect_function
diff --git a/sysdeps/i386/i686/multiarch/strspn.S b/sysdeps/i386/i686/multiarch/strspn.S
index 703fc174b0..9d353a2735 100644
--- a/sysdeps/i386/i686/multiarch/strspn.S
+++ b/sysdeps/i386/i686/multiarch/strspn.S
@@ -1,6 +1,6 @@
/* Multiple versions of strspn
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2009-2014 Free Software Foundation, Inc.
+ Copyright (C) 2009-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -26,7 +26,7 @@
#include <init-arch.h>
/* Define multiple versions only for the definition in libc. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# ifdef SHARED
.text
ENTRY(strspn)
diff --git a/sysdeps/i386/i686/multiarch/wcschr-c.c b/sysdeps/i386/i686/multiarch/wcschr-c.c
index c23af26201..38d41d04de 100644
--- a/sysdeps/i386/i686/multiarch/wcschr-c.c
+++ b/sysdeps/i386/i686/multiarch/wcschr-c.c
@@ -1,14 +1,22 @@
#include <wchar.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
+# undef libc_hidden_weak
+# define libc_hidden_weak(name)
+
+# undef weak_alias
+# define weak_alias(name,alias)
+
# ifdef SHARED
# undef libc_hidden_def
# define libc_hidden_def(name) \
- __hidden_ver1 (__wcschr_ia32, __GI_wcschr, __wcschr_ia32);
+ __hidden_ver1 (__wcschr_ia32, __GI_wcschr, __wcschr_ia32); \
+ strong_alias (__wcschr_ia32, __wcschr_ia32_1); \
+ __hidden_ver1 (__wcschr_ia32_1, __GI___wcschr, __wcschr_ia32_1);
# endif
-# define WCSCHR __wcschr_ia32
#endif
extern __typeof (wcschr) __wcschr_ia32;
-#include "wcsmbs/wcschr.c"
+#define WCSCHR __wcschr_ia32
+#include <wcsmbs/wcschr.c>
diff --git a/sysdeps/i386/i686/multiarch/wcschr-sse2.S b/sysdeps/i386/i686/multiarch/wcschr-sse2.S
index 332bdb00be..818eaa3014 100644
--- a/sysdeps/i386/i686/multiarch/wcschr-sse2.S
+++ b/sysdeps/i386/i686/multiarch/wcschr-sse2.S
@@ -1,5 +1,5 @@
/* wcschr with SSE2, without using bsf instructions
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
# define CFI_PUSH(REG) \
diff --git a/sysdeps/i386/i686/multiarch/wcschr.S b/sysdeps/i386/i686/multiarch/wcschr.S
index 7622085984..603d7d79c1 100644
--- a/sysdeps/i386/i686/multiarch/wcschr.S
+++ b/sysdeps/i386/i686/multiarch/wcschr.S
@@ -1,6 +1,6 @@
/* Multiple versions of wcschr
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -21,9 +21,9 @@
#include <sysdep.h>
#include <init-arch.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
.text
-ENTRY(wcschr)
+ENTRY(__wcschr)
.type wcschr, @gnu_indirect_function
pushl %ebx
cfi_adjust_cfa_offset (4)
@@ -40,5 +40,6 @@ ENTRY(wcschr)
cfi_adjust_cfa_offset (-4);
cfi_restore (ebx)
ret
-END(wcschr)
+END(__wcschr)
+weak_alias (__wcschr, wcschr)
#endif
diff --git a/sysdeps/i386/i686/multiarch/wcscmp-c.c b/sysdeps/i386/i686/multiarch/wcscmp-c.c
index 165c56afb8..e3337d77e2 100644
--- a/sysdeps/i386/i686/multiarch/wcscmp-c.c
+++ b/sysdeps/i386/i686/multiarch/wcscmp-c.c
@@ -4,8 +4,10 @@
#ifdef SHARED
# undef libc_hidden_def
# define libc_hidden_def(name) \
- __hidden_ver1 (__wcscmp_ia32, __GI_wcscmp, __wcscmp_ia32);
+ __hidden_ver1 (__wcscmp_ia32, __GI___wcscmp, __wcscmp_ia32);
#endif
+#undef weak_alias
+#define weak_alias(name, alias)
extern __typeof (wcscmp) __wcscmp_ia32;
diff --git a/sysdeps/i386/i686/multiarch/wcscmp-sse2.S b/sysdeps/i386/i686/multiarch/wcscmp-sse2.S
index 926bdcf876..b25103df2d 100644
--- a/sysdeps/i386/i686/multiarch/wcscmp-sse2.S
+++ b/sysdeps/i386/i686/multiarch/wcscmp-sse2.S
@@ -1,5 +1,5 @@
/* wcscmp with SSE2
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
diff --git a/sysdeps/i386/i686/multiarch/wcscmp.S b/sysdeps/i386/i686/multiarch/wcscmp.S
index 37dd07fa9e..92c2c84ad4 100644
--- a/sysdeps/i386/i686/multiarch/wcscmp.S
+++ b/sysdeps/i386/i686/multiarch/wcscmp.S
@@ -1,6 +1,6 @@
/* Multiple versions of wcscmp
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -24,10 +24,10 @@
/* Define multiple versions only for the definition in libc and for the
DSO. In static binaries, we need wcscmp before the initialization
happened. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
.text
-ENTRY(wcscmp)
- .type wcscmp, @gnu_indirect_function
+ENTRY(__wcscmp)
+ .type __wcscmp, @gnu_indirect_function
pushl %ebx
cfi_adjust_cfa_offset (4)
cfi_rel_offset (ebx, 0)
@@ -43,5 +43,6 @@ ENTRY(wcscmp)
cfi_adjust_cfa_offset (-4);
cfi_restore (ebx)
ret
-END(wcscmp)
+END(__wcscmp)
+weak_alias (__wcscmp, wcscmp)
#endif
diff --git a/sysdeps/i386/i686/multiarch/wcscpy-c.c b/sysdeps/i386/i686/multiarch/wcscpy-c.c
index a3c4024c01..fb3000392b 100644
--- a/sysdeps/i386/i686/multiarch/wcscpy-c.c
+++ b/sysdeps/i386/i686/multiarch/wcscpy-c.c
@@ -1,4 +1,4 @@
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# define wcscpy __wcscpy_ia32
#endif
diff --git a/sysdeps/i386/i686/multiarch/wcscpy-ssse3.S b/sysdeps/i386/i686/multiarch/wcscpy-ssse3.S
index f404252a61..8828f6eff1 100644
--- a/sysdeps/i386/i686/multiarch/wcscpy-ssse3.S
+++ b/sysdeps/i386/i686/multiarch/wcscpy-ssse3.S
@@ -1,5 +1,5 @@
/* wcscpy with SSSE3
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
# define CFI_PUSH(REG) \
diff --git a/sysdeps/i386/i686/multiarch/wcscpy.S b/sysdeps/i386/i686/multiarch/wcscpy.S
index 54a432599f..f7253c7f45 100644
--- a/sysdeps/i386/i686/multiarch/wcscpy.S
+++ b/sysdeps/i386/i686/multiarch/wcscpy.S
@@ -1,6 +1,6 @@
/* Multiple versions of wcscpy
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -22,7 +22,7 @@
#include <init-arch.h>
/* Define multiple versions only for the definition in libc. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
.text
ENTRY(wcscpy)
.type wcscpy, @gnu_indirect_function
diff --git a/sysdeps/i386/i686/multiarch/wcslen-c.c b/sysdeps/i386/i686/multiarch/wcslen-c.c
index 8cebfea0e4..a335dc0f7e 100644
--- a/sysdeps/i386/i686/multiarch/wcslen-c.c
+++ b/sysdeps/i386/i686/multiarch/wcslen-c.c
@@ -1,6 +1,6 @@
#include <wchar.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# define WCSLEN __wcslen_ia32
#endif
diff --git a/sysdeps/i386/i686/multiarch/wcslen-sse2.S b/sysdeps/i386/i686/multiarch/wcslen-sse2.S
index 8e94545c04..1c54b1894c 100644
--- a/sysdeps/i386/i686/multiarch/wcslen-sse2.S
+++ b/sysdeps/i386/i686/multiarch/wcslen-sse2.S
@@ -1,5 +1,5 @@
/* wcslen with SSE2
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
# define STR 4
diff --git a/sysdeps/i386/i686/multiarch/wcslen.S b/sysdeps/i386/i686/multiarch/wcslen.S
index ba97cc49d6..3926a50a87 100644
--- a/sysdeps/i386/i686/multiarch/wcslen.S
+++ b/sysdeps/i386/i686/multiarch/wcslen.S
@@ -1,6 +1,6 @@
/* Multiple versions of wcslen
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -21,7 +21,7 @@
#include <sysdep.h>
#include <init-arch.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
.text
ENTRY(__wcslen)
.type __wcslen, @gnu_indirect_function
diff --git a/sysdeps/i386/i686/multiarch/wcsrchr-c.c b/sysdeps/i386/i686/multiarch/wcsrchr-c.c
index c7444ce89b..8d8a335b5b 100644
--- a/sysdeps/i386/i686/multiarch/wcsrchr-c.c
+++ b/sysdeps/i386/i686/multiarch/wcsrchr-c.c
@@ -1,4 +1,4 @@
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# define wcsrchr __wcsrchr_ia32
#endif
diff --git a/sysdeps/i386/i686/multiarch/wcsrchr-sse2.S b/sysdeps/i386/i686/multiarch/wcsrchr-sse2.S
index f6abd6b192..f897618a3a 100644
--- a/sysdeps/i386/i686/multiarch/wcsrchr-sse2.S
+++ b/sysdeps/i386/i686/multiarch/wcsrchr-sse2.S
@@ -1,5 +1,5 @@
/* wcsrchr with SSE2, without using bsf instructions.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -17,7 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# include <sysdep.h>
# define CFI_PUSH(REG) \
cfi_adjust_cfa_offset (4); \
diff --git a/sysdeps/i386/i686/multiarch/wcsrchr.S b/sysdeps/i386/i686/multiarch/wcsrchr.S
index 4d80b54f2e..5c96129fbe 100644
--- a/sysdeps/i386/i686/multiarch/wcsrchr.S
+++ b/sysdeps/i386/i686/multiarch/wcsrchr.S
@@ -1,6 +1,6 @@
/* Multiple versions of wcsrchr
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -21,7 +21,7 @@
#include <sysdep.h>
#include <init-arch.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
.text
ENTRY(wcsrchr)
.type wcsrchr, @gnu_indirect_function
diff --git a/sysdeps/i386/i686/multiarch/wmemcmp-c.c b/sysdeps/i386/i686/multiarch/wmemcmp-c.c
index bd37660fcb..75ab4b94c1 100644
--- a/sysdeps/i386/i686/multiarch/wmemcmp-c.c
+++ b/sysdeps/i386/i686/multiarch/wmemcmp-c.c
@@ -1,6 +1,6 @@
#include <wchar.h>
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# define WMEMCMP __wmemcmp_ia32
#endif
diff --git a/sysdeps/i386/i686/multiarch/wmemcmp.S b/sysdeps/i386/i686/multiarch/wmemcmp.S
index 1b5a211982..6ca60531db 100644
--- a/sysdeps/i386/i686/multiarch/wmemcmp.S
+++ b/sysdeps/i386/i686/multiarch/wmemcmp.S
@@ -1,6 +1,6 @@
/* Multiple versions of wmemcmp
All versions must be listed in ifunc-impl-list.c.
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2015 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -23,7 +23,7 @@
/* Define multiple versions only for the definition in libc. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
.text
ENTRY(wmemcmp)
.type wmemcmp, @gnu_indirect_function
diff --git a/sysdeps/i386/i686/nptl/tls.h b/sysdeps/i386/i686/nptl/tls.h
new file mode 100644
index 0000000000..7512b131d3
--- /dev/null
+++ b/sysdeps/i386/i686/nptl/tls.h
@@ -0,0 +1,35 @@
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _TLS_H
+
+/* Additional definitions for <tls.h> on i686 and up. */
+
+
+/* Macros to load from and store into segment registers. We can use
+ the 32-bit instructions. */
+#define TLS_GET_GS() \
+ ({ int __seg; __asm ("movl %%gs, %0" : "=q" (__seg)); __seg; })
+#define TLS_SET_GS(val) \
+ __asm ("movl %0, %%gs" :: "q" (val))
+
+
+/* Get the full set of definitions. */
+#include_next <tls.h>
+
+#endif /* tls.h */
diff --git a/sysdeps/i386/i686/hp-timing.c b/sysdeps/i386/i686/pthread_spin_trylock.S
index faa6dadd0a..924c4d728e 100644
--- a/sysdeps/i386/i686/hp-timing.c
+++ b/sysdeps/i386/i686/pthread_spin_trylock.S
@@ -1,7 +1,6 @@
-/* Support for high precision, low overhead timing functions. i686 version.
- Copyright (C) 1998-2014 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,7 +16,5 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#include <hp-timing.h>
-
-/* We have to define the variable for the overhead. */
-hp_timing_t _dl_hp_timing_overhead;
+#define HAVE_CMOV 1
+#include <sysdeps/i386/i486/pthread_spin_trylock.S>
diff --git a/sysdeps/i386/i686/stack-aliasing.h b/sysdeps/i386/i686/stack-aliasing.h
new file mode 100644
index 0000000000..d49a92b580
--- /dev/null
+++ b/sysdeps/i386/i686/stack-aliasing.h
@@ -0,0 +1,28 @@
+/* Define macros for stack address aliasing issues for NPTL. i686 version.
+ Copyright (C) 2014-2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* It turns out that stack coloring is in general not good on P4s. Some
+ applications will benefit. We will probably have a configuration option
+ at some point. To enable coloring, set this to 128. */
+#define COLORING_INCREMENT 0
+
+/* What is useful is to avoid the 64k aliasing problem which reliably
+ happens if all stacks use sizes which are a multiple of 64k. Tell
+ the stack allocator to disturb this by allocation one more page if
+ necessary. */
+#define MULTI_PAGE_ALIASING 65536
diff --git a/sysdeps/i386/i686/strcmp.S b/sysdeps/i386/i686/strcmp.S
index 24ed78328f..a7b884835e 100644
--- a/sysdeps/i386/i686/strcmp.S
+++ b/sysdeps/i386/i686/strcmp.S
@@ -1,5 +1,5 @@
/* Highly optimized version for ix86, x>=6.
- Copyright (C) 1999-2014 Free Software Foundation, Inc.
+ Copyright (C) 1999-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
diff --git a/sysdeps/i386/i686/strtok.S b/sysdeps/i386/i686/strtok.S
index 6cb76dcb8c..3cfc008b59 100644
--- a/sysdeps/i386/i686/strtok.S
+++ b/sysdeps/i386/i686/strtok.S
@@ -1,6 +1,6 @@
/* strtok (str, delim) -- Return next DELIM separated token from STR.
For Intel 80686.
- Copyright (C) 1998-2014 Free Software Foundation, Inc.
+ Copyright (C) 1998-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
diff --git a/sysdeps/i386/i686/tst-stack-align.h b/sysdeps/i386/i686/tst-stack-align.h
index ddfa12cf4e..8cc36814d0 100644
--- a/sysdeps/i386/i686/tst-stack-align.h
+++ b/sysdeps/i386/i686/tst-stack-align.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003-2014 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2015 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
diff --git a/sysdeps/i386/jmpbuf-offsets.h b/sysdeps/i386/jmpbuf-offsets.h
index afd2316fa1..79560d54fd 100644
--- a/sysdeps/i386/jmpbuf-offsets.h
+++ b/sysdeps/i386/jmpbuf-offsets.h
@@ -1,5 +1,5 @@
/* Private macros for accessing __jmp_buf contents. i386 version.
- Copyright (C) 2006-2014 Free Software Foundation, Inc.
+ Copyright (C) 2006-2015 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
diff --git a/sysdeps/i386/jmpbuf-unwind.h b/sysdeps/i386/jmpbuf-unwind.h
index 81faab2a71..4e8b2cec1b 100644
--- a/sysdeps/i386/jmpbuf-unwind.h
+++ b/sysdeps/i386/jmpbuf-unwind.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003-2014 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
diff --git a/sysdeps/i386/ldbl2mpn.c b/sysdeps/i386/ldbl2mpn.c
index 09e30965ef..6274f54cfd 100644
--- a/sysdeps/i386/ldbl2mpn.c
+++ b/sysdeps/i386/ldbl2mpn.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2014 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2015 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
@@ -69,7 +69,7 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
for denormalized number. If it is one, the number is according
to Intel's specification an invalid number. We make the
representation unique by explicitly clearing this bit. */
- res_ptr[N - 1] &= ~(1L << ((LDBL_MANT_DIG - 1) % BITS_PER_MP_LIMB));
+ res_ptr[N - 1] &= ~((mp_limb_t) 1 << ((LDBL_MANT_DIG - 1) % BITS_PER_MP_LIMB));
if (res_ptr[N - 1] != 0)
{
diff --git a/sysdeps/i386/ldsodefs.h b/sysdeps/i386/ldsodefs.h
index 645ba3154f..d80cf0185e 100644
--- a/sysdeps/i386/ldsodefs.h
+++ b/sysdeps/i386/ldsodefs.h
@@ -1,5 +1,5 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ Copyright (C) 1995-2015 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
diff --git a/sysdeps/i386/link-defines.sym b/sysdeps/i386/link-defines.sym
new file mode 100644
index 0000000000..0995adb37f
--- /dev/null
+++ b/sysdeps/i386/link-defines.sym
@@ -0,0 +1,20 @@
+#include "link.h"
+#include <stddef.h>
+
+--
+LONG_DOUBLE_SIZE sizeof (long double)
+
+LR_SIZE sizeof (struct La_i86_regs)
+LR_EDX_OFFSET offsetof (struct La_i86_regs, lr_edx)
+LR_ECX_OFFSET offsetof (struct La_i86_regs, lr_ecx)
+LR_EAX_OFFSET offsetof (struct La_i86_regs, lr_eax)
+LR_EBP_OFFSET offsetof (struct La_i86_regs, lr_ebp)
+LR_ESP_OFFSET offsetof (struct La_i86_regs, lr_esp)
+
+LRV_SIZE sizeof (struct La_i86_retval)
+LRV_EAX_OFFSET offsetof (struct La_i86_retval, lrv_eax)
+LRV_EDX_OFFSET offsetof (struct La_i86_retval, lrv_edx)
+LRV_ST0_OFFSET offsetof (struct La_i86_retval, lrv_st0)
+LRV_ST1_OFFSET offsetof (struct La_i86_retval, lrv_st1)
+LRV_BND0_OFFSET offsetof (struct La_i86_retval, lrv_bnd0)
+LRV_BND1_OFFSET offsetof (struct La_i86_retval, lrv_bnd1)
diff --git a/sysdeps/i386/lshift.S b/sysdeps/i386/lshift.S
index 513c0a5eff..7ab993c638 100644
--- a/sysdeps/i386/lshift.S
+++ b/sysdeps/i386/lshift.S
@@ -1,5 +1,5 @@
/* i80386 __mpn_lshift --
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/machine-gmon.h b/sysdeps/i386/machine-gmon.h
index 48d0b07df3..b9c72df919 100644
--- a/sysdeps/i386/machine-gmon.h
+++ b/sysdeps/i386/machine-gmon.h
@@ -1,5 +1,5 @@
/* i386-specific implementation of profiling support.
- Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/sysdeps/i386/memchr.S b/sysdeps/i386/memchr.S
index f82e894ca4..b6a89427fb 100644
--- a/sysdeps/i386/memchr.S
+++ b/sysdeps/i386/memchr.S
@@ -1,6 +1,6 @@
/* memchr (str, chr, len) -- Return pointer to first occurrence of CHR in STR
less than LEN. For Intel 80x86, x>=3.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
diff --git a/sysdeps/i386/memcmp.S b/sysdeps/i386/memcmp.S
index 88a9a9e416..af2ff12c16 100644
--- a/sysdeps/i386/memcmp.S
+++ b/sysdeps/i386/memcmp.S
@@ -1,5 +1,5 @@
/* Compare two memory blocks for differences in the first COUNT bytes.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ Copyright (C) 1995-2015 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
diff --git a/sysdeps/i386/memcopy.h b/sysdeps/i386/memcopy.h
index 7a34b56c52..adc650fd47 100644
--- a/sysdeps/i386/memcopy.h
+++ b/sysdeps/i386/memcopy.h
@@ -1,5 +1,5 @@
/* memcopy.h -- definitions for memory copy functions. i386 version.
- Copyright (C) 1991-2014 Free Software Foundation, Inc.
+ Copyright (C) 1991-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund (tege@sics.se).
diff --git a/sysdeps/i386/memset.c b/sysdeps/i386/memset.c
index fc4f3ba9f4..bf11590460 100644
--- a/sysdeps/i386/memset.c
+++ b/sysdeps/i386/memset.c
@@ -1,6 +1,6 @@
/* Set a block of memory to some byte value.
For Intel 80x86, x>=3.
- Copyright (C) 1991-2014 Free Software Foundation, Inc.
+ Copyright (C) 1991-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund (tege@sics.se).
diff --git a/sysdeps/i386/memusage.h b/sysdeps/i386/memusage.h
index 2ae89e9941..45889cc400 100644
--- a/sysdeps/i386/memusage.h
+++ b/sysdeps/i386/memusage.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2014 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2015 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
diff --git a/sysdeps/i386/mul_1.S b/sysdeps/i386/mul_1.S
index 779b7d1e23..84a68ff83d 100644
--- a/sysdeps/i386/mul_1.S
+++ b/sysdeps/i386/mul_1.S
@@ -1,6 +1,6 @@
/* i80386 __mpn_mul_1 -- Multiply a limb vector with a limb and store
the result in a second limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/nptl/Makefile b/sysdeps/i386/nptl/Makefile
new file mode 100644
index 0000000000..a5134c30f2
--- /dev/null
+++ b/sysdeps/i386/nptl/Makefile
@@ -0,0 +1,26 @@
+# Copyright (C) 2002-2015 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+ifeq ($(subdir),csu)
+gen-as-const-headers += tcb-offsets.sym
+endif
+
+ifeq ($(subdir),nptl)
+CFLAGS-pthread_create.c += -mpreferred-stack-boundary=4
+CFLAGS-tst-align.c += -mpreferred-stack-boundary=4
+CFLAGS-tst-align2.c += -mpreferred-stack-boundary=4
+endif
diff --git a/sysdeps/i386/nptl/pthread_spin_init.c b/sysdeps/i386/nptl/pthread_spin_init.c
new file mode 100644
index 0000000000..3a4547f962
--- /dev/null
+++ b/sysdeps/i386/nptl/pthread_spin_init.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* Not needed. pthread_spin_init is an alias for pthread_spin_unlock. */
diff --git a/sysdeps/i386/nptl/pthread_spin_lock.S b/sysdeps/i386/nptl/pthread_spin_lock.S
new file mode 100644
index 0000000000..6927f37d16
--- /dev/null
+++ b/sysdeps/i386/nptl/pthread_spin_lock.S
@@ -0,0 +1,37 @@
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <lowlevellock.h>
+
+ .globl pthread_spin_lock
+ .type pthread_spin_lock,@function
+ .align 16
+pthread_spin_lock:
+ mov 4(%esp), %eax
+1: LOCK
+ decl 0(%eax)
+ jne 2f
+ xor %eax, %eax
+ ret
+
+ .align 16
+2: rep
+ nop
+ cmpl $0, 0(%eax)
+ jg 1b
+ jmp 2b
+ .size pthread_spin_lock,.-pthread_spin_lock
diff --git a/sysdeps/i386/nptl/pthread_spin_unlock.S b/sysdeps/i386/nptl/pthread_spin_unlock.S
new file mode 100644
index 0000000000..d4231a6947
--- /dev/null
+++ b/sysdeps/i386/nptl/pthread_spin_unlock.S
@@ -0,0 +1,31 @@
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+ .globl pthread_spin_unlock
+ .type pthread_spin_unlock,@function
+ .align 16
+pthread_spin_unlock:
+ movl 4(%esp), %eax
+ movl $1, (%eax)
+ xorl %eax, %eax
+ ret
+ .size pthread_spin_unlock,.-pthread_spin_unlock
+
+ /* The implementation of pthread_spin_init is identical. */
+ .globl pthread_spin_init
+pthread_spin_init = pthread_spin_unlock
diff --git a/sysdeps/i386/nptl/pthreaddef.h b/sysdeps/i386/nptl/pthreaddef.h
new file mode 100644
index 0000000000..15ec14dcae
--- /dev/null
+++ b/sysdeps/i386/nptl/pthreaddef.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* Default stack size. */
+#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
+
+/* Required stack pointer alignment at beginning. SSE requires 16
+ bytes. */
+#define STACK_ALIGN 16
+
+/* Minimal stack size after allocating thread descriptor and guard size. */
+#define MINIMAL_REST_STACK 2048
+
+/* Alignment requirement for TCB.
+
+ Some processors such as Intel Atom pay a big penalty on every
+ access using a segment override if that segment's base is not
+ aligned to the size of a cache line. (See Intel 64 and IA-32
+ Architectures Optimization Reference Manual, section 13.3.3.3,
+ "Segment Base".) On such machines, a cache line is 64 bytes. */
+#define TCB_ALIGNMENT 64
+
+
+/* Location of current stack frame. */
+#define CURRENT_STACK_FRAME __builtin_frame_address (0)
diff --git a/sysdeps/i386/nptl/tcb-offsets.sym b/sysdeps/i386/nptl/tcb-offsets.sym
new file mode 100644
index 0000000000..7bdf161b29
--- /dev/null
+++ b/sysdeps/i386/nptl/tcb-offsets.sym
@@ -0,0 +1,18 @@
+#include <sysdep.h>
+#include <tls.h>
+#include <kernel-features.h>
+
+RESULT offsetof (struct pthread, result)
+TID offsetof (struct pthread, tid)
+PID offsetof (struct pthread, pid)
+CANCELHANDLING offsetof (struct pthread, cancelhandling)
+CLEANUP_JMP_BUF offsetof (struct pthread, cleanup_jmp_buf)
+MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
+SYSINFO_OFFSET offsetof (tcbhead_t, sysinfo)
+CLEANUP offsetof (struct pthread, cleanup)
+CLEANUP_PREV offsetof (struct _pthread_cleanup_buffer, __prev)
+MUTEX_FUTEX offsetof (pthread_mutex_t, __data.__lock)
+POINTER_GUARD offsetof (tcbhead_t, pointer_guard)
+#ifndef __ASSUME_PRIVATE_FUTEX
+PRIVATE_FUTEX offsetof (tcbhead_t, private_futex)
+#endif
diff --git a/sysdeps/i386/nptl/tls.h b/sysdeps/i386/nptl/tls.h
new file mode 100644
index 0000000000..829cd3a008
--- /dev/null
+++ b/sysdeps/i386/nptl/tls.h
@@ -0,0 +1,463 @@
+/* Definition for thread-local data handling. nptl/i386 version.
+ Copyright (C) 2002-2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _TLS_H
+#define _TLS_H 1
+
+#include <dl-sysdep.h>
+#ifndef __ASSEMBLER__
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+# include <stdlib.h>
+# include <sysdep.h>
+# include <libc-internal.h>
+# include <kernel-features.h>
+
+
+/* Type for the dtv. */
+typedef union dtv
+{
+ size_t counter;
+ struct
+ {
+ void *val;
+ bool is_static;
+ } pointer;
+} dtv_t;
+
+
+typedef struct
+{
+ void *tcb; /* Pointer to the TCB. Not necessarily the
+ thread descriptor used by libpthread. */
+ dtv_t *dtv;
+ void *self; /* Pointer to the thread descriptor. */
+ int multiple_threads;
+ uintptr_t sysinfo;
+ uintptr_t stack_guard;
+ uintptr_t pointer_guard;
+ int gscope_flag;
+#ifndef __ASSUME_PRIVATE_FUTEX
+ int private_futex;
+#else
+ int __glibc_reserved1;
+#endif
+ /* Reservation of some values for the TM ABI. */
+ void *__private_tm[4];
+ /* GCC split stack support. */
+ void *__private_ss;
+} tcbhead_t;
+
+# define TLS_MULTIPLE_THREADS_IN_TCB 1
+
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
+#endif
+
+
+/* Alignment requirement for the stack. For IA-32 this is governed by
+ the SSE memory functions. */
+#define STACK_ALIGN 16
+
+#ifndef __ASSEMBLER__
+/* Get system call information. */
+# include <sysdep.h>
+
+/* The old way: using LDT. */
+
+/* Structure passed to `modify_ldt', 'set_thread_area', and 'clone' calls. */
+struct user_desc
+{
+ unsigned int entry_number;
+ unsigned long int base_addr;
+ unsigned int limit;
+ unsigned int seg_32bit:1;
+ unsigned int contents:2;
+ unsigned int read_exec_only:1;
+ unsigned int limit_in_pages:1;
+ unsigned int seg_not_present:1;
+ unsigned int useable:1;
+ unsigned int empty:25;
+};
+
+/* Initializing bit fields is slow. We speed it up by using a union. */
+union user_desc_init
+{
+ struct user_desc desc;
+ unsigned int vals[4];
+};
+
+
+/* This is the size of the initial TCB. Can't be just sizeof (tcbhead_t),
+ because NPTL getpid, __libc_alloca_cutoff etc. need (almost) the whole
+ struct pthread even when not linked with -lpthread. */
+# define TLS_INIT_TCB_SIZE sizeof (struct pthread)
+
+/* Alignment requirements for the initial TCB. */
+# define TLS_INIT_TCB_ALIGN __alignof__ (struct pthread)
+
+/* This is the size of the TCB. */
+# define TLS_TCB_SIZE sizeof (struct pthread)
+
+/* Alignment requirements for the TCB. */
+# define TLS_TCB_ALIGN __alignof__ (struct pthread)
+
+/* The TCB can have any size and the memory following the address the
+ thread pointer points to is unspecified. Allocate the TCB there. */
+# define TLS_TCB_AT_TP 1
+# define TLS_DTV_AT_TP 0
+
+/* Get the thread descriptor definition. */
+# include <nptl/descr.h>
+
+
+/* Install the dtv pointer. The pointer passed is to the element with
+ index -1 which contain the length. */
+# define INSTALL_DTV(descr, dtvp) \
+ ((tcbhead_t *) (descr))->dtv = (dtvp) + 1
+
+/* Install new dtv for current thread. */
+# define INSTALL_NEW_DTV(dtvp) \
+ ({ struct pthread *__pd; \
+ THREAD_SETMEM (__pd, header.dtv, (dtvp)); })
+
+/* Return dtv of given thread descriptor. */
+# define GET_DTV(descr) \
+ (((tcbhead_t *) (descr))->dtv)
+
+/* Macros to load from and store into segment registers. */
+# ifndef TLS_GET_GS
+# define TLS_GET_GS() \
+ ({ int __seg; __asm ("movw %%gs, %w0" : "=q" (__seg)); __seg & 0xffff; })
+# endif
+# ifndef TLS_SET_GS
+# define TLS_SET_GS(val) \
+ __asm ("movw %w0, %%gs" :: "q" (val))
+# endif
+
+#ifdef NEED_DL_SYSINFO
+# define INIT_SYSINFO \
+ _head->sysinfo = GLRO(dl_sysinfo)
+# define SETUP_THREAD_SYSINFO(pd) \
+ ((pd)->header.sysinfo = THREAD_GETMEM (THREAD_SELF, header.sysinfo))
+# define CHECK_THREAD_SYSINFO(pd) \
+ assert ((pd)->header.sysinfo == THREAD_GETMEM (THREAD_SELF, header.sysinfo))
+#else
+# define INIT_SYSINFO
+#endif
+
+#ifndef LOCK_PREFIX
+# ifdef UP
+# define LOCK_PREFIX /* nothing */
+# else
+# define LOCK_PREFIX "lock;"
+# endif
+#endif
+
+static inline void __attribute__ ((unused, always_inline))
+tls_fill_user_desc (union user_desc_init *desc,
+ unsigned int entry_number,
+ void *pd)
+{
+ desc->vals[0] = entry_number;
+ /* The 'base_addr' field. Pointer to the TCB. */
+ desc->vals[1] = (unsigned long int) pd;
+ /* The 'limit' field. We use 4GB which is 0xfffff pages. */
+ desc->vals[2] = 0xfffff;
+ /* Collapsed value of the bitfield:
+ .seg_32bit = 1
+ .contents = 0
+ .read_exec_only = 0
+ .limit_in_pages = 1
+ .seg_not_present = 0
+ .useable = 1 */
+ desc->vals[3] = 0x51;
+}
+
+/* Code to initially initialize the thread pointer. This might need
+ special attention since 'errno' is not yet available and if the
+ operation can cause a failure 'errno' must not be touched. */
+# define TLS_INIT_TP(thrdescr) \
+ ({ void *_thrdescr = (thrdescr); \
+ tcbhead_t *_head = _thrdescr; \
+ union user_desc_init _segdescr; \
+ int _result; \
+ \
+ _head->tcb = _thrdescr; \
+ /* For now the thread descriptor is at the same address. */ \
+ _head->self = _thrdescr; \
+ /* New syscall handling support. */ \
+ INIT_SYSINFO; \
+ \
+ /* Let the kernel pick a value for the 'entry_number' field. */ \
+ tls_fill_user_desc (&_segdescr, -1, _thrdescr); \
+ \
+ /* Install the TLS. */ \
+ INTERNAL_SYSCALL_DECL (err); \
+ _result = INTERNAL_SYSCALL (set_thread_area, err, 1, &_segdescr.desc); \
+ \
+ if (_result == 0) \
+ /* We know the index in the GDT, now load the segment register. \
+ The use of the GDT is described by the value 3 in the lower \
+ three bits of the segment descriptor value. \
+ \
+ Note that we have to do this even if the numeric value of \
+ the descriptor does not change. Loading the segment register \
+ causes the segment information from the GDT to be loaded \
+ which is necessary since we have changed it. */ \
+ TLS_SET_GS (_segdescr.desc.entry_number * 8 + 3); \
+ \
+ _result == 0 ? NULL \
+ : "set_thread_area failed when setting up thread-local storage\n"; })
+
+# define TLS_DEFINE_INIT_TP(tp, pd) \
+ union user_desc_init _segdescr; \
+ /* Find the 'entry_number' field that the kernel selected in TLS_INIT_TP. \
+ The first three bits of the segment register value select the GDT, \
+ ignore them. We get the index from the value of the %gs register in \
+ the current thread. */ \
+ tls_fill_user_desc (&_segdescr, TLS_GET_GS () >> 3, pd); \
+ const struct user_desc *tp = &_segdescr.desc
+
+
+/* Return the address of the dtv for the current thread. */
+# define THREAD_DTV() \
+ ({ struct pthread *__pd; \
+ THREAD_GETMEM (__pd, header.dtv); })
+
+
+/* Return the thread descriptor for the current thread.
+
+ The contained asm must *not* be marked volatile since otherwise
+ assignments like
+ pthread_descr self = thread_self();
+ do not get optimized away. */
+# define THREAD_SELF \
+ ({ struct pthread *__self; \
+ asm ("movl %%gs:%c1,%0" : "=r" (__self) \
+ : "i" (offsetof (struct pthread, header.self))); \
+ __self;})
+
+/* Magic for libthread_db to know how to do THREAD_SELF. */
+# define DB_THREAD_SELF \
+ REGISTER_THREAD_AREA (32, offsetof (struct user_regs_struct, xgs), 3) \
+ REGISTER_THREAD_AREA (64, 26 * 8, 3) /* x86-64's user_regs_struct->gs */
+
+
+/* Read member of the thread descriptor directly. */
+# define THREAD_GETMEM(descr, member) \
+ ({ __typeof (descr->member) __value; \
+ if (sizeof (__value) == 1) \
+ asm volatile ("movb %%gs:%P2,%b0" \
+ : "=q" (__value) \
+ : "0" (0), "i" (offsetof (struct pthread, member))); \
+ else if (sizeof (__value) == 4) \
+ asm volatile ("movl %%gs:%P1,%0" \
+ : "=r" (__value) \
+ : "i" (offsetof (struct pthread, member))); \
+ else \
+ { \
+ if (sizeof (__value) != 8) \
+ /* There should not be any value with a size other than 1, \
+ 4 or 8. */ \
+ abort (); \
+ \
+ asm volatile ("movl %%gs:%P1,%%eax\n\t" \
+ "movl %%gs:%P2,%%edx" \
+ : "=A" (__value) \
+ : "i" (offsetof (struct pthread, member)), \
+ "i" (offsetof (struct pthread, member) + 4)); \
+ } \
+ __value; })
+
+
+/* Same as THREAD_GETMEM, but the member offset can be non-constant. */
+# define THREAD_GETMEM_NC(descr, member, idx) \
+ ({ __typeof (descr->member[0]) __value; \
+ if (sizeof (__value) == 1) \
+ asm volatile ("movb %%gs:%P2(%3),%b0" \
+ : "=q" (__value) \
+ : "0" (0), "i" (offsetof (struct pthread, member[0])), \
+ "r" (idx)); \
+ else if (sizeof (__value) == 4) \
+ asm volatile ("movl %%gs:%P1(,%2,4),%0" \
+ : "=r" (__value) \
+ : "i" (offsetof (struct pthread, member[0])), \
+ "r" (idx)); \
+ else \
+ { \
+ if (sizeof (__value) != 8) \
+ /* There should not be any value with a size other than 1, \
+ 4 or 8. */ \
+ abort (); \
+ \
+ asm volatile ("movl %%gs:%P1(,%2,8),%%eax\n\t" \
+ "movl %%gs:4+%P1(,%2,8),%%edx" \
+ : "=&A" (__value) \
+ : "i" (offsetof (struct pthread, member[0])), \
+ "r" (idx)); \
+ } \
+ __value; })
+
+
+
+/* Set member of the thread descriptor directly. */
+# define THREAD_SETMEM(descr, member, value) \
+ ({ if (sizeof (descr->member) == 1) \
+ asm volatile ("movb %b0,%%gs:%P1" : \
+ : "iq" (value), \
+ "i" (offsetof (struct pthread, member))); \
+ else if (sizeof (descr->member) == 4) \
+ asm volatile ("movl %0,%%gs:%P1" : \
+ : "ir" (value), \
+ "i" (offsetof (struct pthread, member))); \
+ else \
+ { \
+ if (sizeof (descr->member) != 8) \
+ /* There should not be any value with a size other than 1, \
+ 4 or 8. */ \
+ abort (); \
+ \
+ asm volatile ("movl %%eax,%%gs:%P1\n\t" \
+ "movl %%edx,%%gs:%P2" : \
+ : "A" ((uint64_t) cast_to_integer (value)), \
+ "i" (offsetof (struct pthread, member)), \
+ "i" (offsetof (struct pthread, member) + 4)); \
+ }})
+
+
+/* Same as THREAD_SETMEM, but the member offset can be non-constant. */
+# define THREAD_SETMEM_NC(descr, member, idx, value) \
+ ({ if (sizeof (descr->member[0]) == 1) \
+ asm volatile ("movb %b0,%%gs:%P1(%2)" : \
+ : "iq" (value), \
+ "i" (offsetof (struct pthread, member)), \
+ "r" (idx)); \
+ else if (sizeof (descr->member[0]) == 4) \
+ asm volatile ("movl %0,%%gs:%P1(,%2,4)" : \
+ : "ir" (value), \
+ "i" (offsetof (struct pthread, member)), \
+ "r" (idx)); \
+ else \
+ { \
+ if (sizeof (descr->member[0]) != 8) \
+ /* There should not be any value with a size other than 1, \
+ 4 or 8. */ \
+ abort (); \
+ \
+ asm volatile ("movl %%eax,%%gs:%P1(,%2,8)\n\t" \
+ "movl %%edx,%%gs:4+%P1(,%2,8)" : \
+ : "A" ((uint64_t) cast_to_integer (value)), \
+ "i" (offsetof (struct pthread, member)), \
+ "r" (idx)); \
+ }})
+
+
+/* Atomic compare and exchange on TLS, returning old value. */
+#define THREAD_ATOMIC_CMPXCHG_VAL(descr, member, newval, oldval) \
+ ({ __typeof (descr->member) __ret; \
+ __typeof (oldval) __old = (oldval); \
+ if (sizeof (descr->member) == 4) \
+ asm volatile (LOCK_PREFIX "cmpxchgl %2, %%gs:%P3" \
+ : "=a" (__ret) \
+ : "0" (__old), "r" (newval), \
+ "i" (offsetof (struct pthread, member))); \
+ else \
+ /* Not necessary for other sizes in the moment. */ \
+ abort (); \
+ __ret; })
+
+
+/* Atomic logical and. */
+#define THREAD_ATOMIC_AND(descr, member, val) \
+ (void) ({ if (sizeof ((descr)->member) == 4) \
+ asm volatile (LOCK_PREFIX "andl %1, %%gs:%P0" \
+ :: "i" (offsetof (struct pthread, member)), \
+ "ir" (val)); \
+ else \
+ /* Not necessary for other sizes in the moment. */ \
+ abort (); })
+
+
+/* Atomic set bit. */
+#define THREAD_ATOMIC_BIT_SET(descr, member, bit) \
+ (void) ({ if (sizeof ((descr)->member) == 4) \
+ asm volatile (LOCK_PREFIX "orl %1, %%gs:%P0" \
+ :: "i" (offsetof (struct pthread, member)), \
+ "ir" (1 << (bit))); \
+ else \
+ /* Not necessary for other sizes in the moment. */ \
+ abort (); })
+
+
+/* Call the user-provided thread function. */
+#define CALL_THREAD_FCT(descr) \
+ ({ void *__res; \
+ int __ignore1, __ignore2; \
+ asm volatile ("pushl %%eax\n\t" \
+ "pushl %%eax\n\t" \
+ "pushl %%eax\n\t" \
+ "pushl %%gs:%P4\n\t" \
+ "call *%%gs:%P3\n\t" \
+ "addl $16, %%esp" \
+ : "=a" (__res), "=c" (__ignore1), "=d" (__ignore2) \
+ : "i" (offsetof (struct pthread, start_routine)), \
+ "i" (offsetof (struct pthread, arg))); \
+ __res; })
+
+
+/* Set the stack guard field in TCB head. */
+#define THREAD_SET_STACK_GUARD(value) \
+ THREAD_SETMEM (THREAD_SELF, header.stack_guard, value)
+#define THREAD_COPY_STACK_GUARD(descr) \
+ ((descr)->header.stack_guard \
+ = THREAD_GETMEM (THREAD_SELF, header.stack_guard))
+
+
+/* Set the pointer guard field in the TCB head. */
+#define THREAD_SET_POINTER_GUARD(value) \
+ THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value)
+#define THREAD_COPY_POINTER_GUARD(descr) \
+ ((descr)->header.pointer_guard \
+ = THREAD_GETMEM (THREAD_SELF, header.pointer_guard))
+
+
+/* Get and set the global scope generation counter in the TCB head. */
+#define THREAD_GSCOPE_FLAG_UNUSED 0
+#define THREAD_GSCOPE_FLAG_USED 1
+#define THREAD_GSCOPE_FLAG_WAIT 2
+#define THREAD_GSCOPE_RESET_FLAG() \
+ do \
+ { int __res; \
+ asm volatile ("xchgl %0, %%gs:%P1" \
+ : "=r" (__res) \
+ : "i" (offsetof (struct pthread, header.gscope_flag)), \
+ "0" (THREAD_GSCOPE_FLAG_UNUSED)); \
+ if (__res == THREAD_GSCOPE_FLAG_WAIT) \
+ lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \
+ } \
+ while (0)
+#define THREAD_GSCOPE_SET_FLAG() \
+ THREAD_SETMEM (THREAD_SELF, header.gscope_flag, THREAD_GSCOPE_FLAG_USED)
+#define THREAD_GSCOPE_WAIT() \
+ GL(dl_wait_lookup_done) ()
+
+#endif /* __ASSEMBLER__ */
+
+#endif /* tls.h */
diff --git a/sysdeps/i386/preconfigure b/sysdeps/i386/preconfigure
new file mode 100644
index 0000000000..c8fefd1bff
--- /dev/null
+++ b/sysdeps/i386/preconfigure
@@ -0,0 +1,5 @@
+# preconfigure fragment for i386.
+
+case "$machine" in
+i[4567]86) base_machine=i386 machine=i386/$machine ;;
+esac
diff --git a/sysdeps/i386/rawmemchr.S b/sysdeps/i386/rawmemchr.S
index c33a5c2f4f..989669a865 100644
--- a/sysdeps/i386/rawmemchr.S
+++ b/sysdeps/i386/rawmemchr.S
@@ -1,6 +1,6 @@
/* rawmemchr (str, ch) -- Return pointer to first occurrence of CH in STR.
For Intel 80x86, x>=3.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
diff --git a/sysdeps/i386/rshift.S b/sysdeps/i386/rshift.S
index 1ed43f56db..fae324b417 100644
--- a/sysdeps/i386/rshift.S
+++ b/sysdeps/i386/rshift.S
@@ -1,5 +1,5 @@
/* i80386 __mpn_rshift --
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/setfpucw.c b/sysdeps/i386/setfpucw.c
index ceb02c39df..d7cc409495 100644
--- a/sysdeps/i386/setfpucw.c
+++ b/sysdeps/i386/setfpucw.c
@@ -1,5 +1,5 @@
/* Set the FPU control word for x86.
- Copyright (C) 2003-2014 Free Software Foundation, Inc.
+ Copyright (C) 2003-2015 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
diff --git a/sysdeps/i386/setjmp.S b/sysdeps/i386/setjmp.S
index b7637debee..5fe4900154 100644
--- a/sysdeps/i386/setjmp.S
+++ b/sysdeps/i386/setjmp.S
@@ -1,5 +1,5 @@
/* setjmp for i386.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ Copyright (C) 1995-2015 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
@@ -46,7 +46,7 @@ ENTRY (__sigsetjmp)
movl %ecx, (JB_PC*4)(%eax)
movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer. */
-#if defined NOT_IN_libc && defined IS_IN_rtld
+#if IS_IN (rtld)
/* In ld.so we never save the signal mask. */
xorl %eax, %eax
ret
diff --git a/sysdeps/i386/stackinfo.h b/sysdeps/i386/stackinfo.h
index f6eccf99bd..ca9ff851ec 100644
--- a/sysdeps/i386/stackinfo.h
+++ b/sysdeps/i386/stackinfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2014 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2015 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
diff --git a/sysdeps/i386/start.S b/sysdeps/i386/start.S
index b79bff2dfc..04c34b6c24 100644
--- a/sysdeps/i386/start.S
+++ b/sysdeps/i386/start.S
@@ -1,5 +1,5 @@
/* Startup code compliant to the ELF i386 ABI.
- Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ Copyright (C) 1995-2015 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
diff --git a/sysdeps/i386/stpcpy.S b/sysdeps/i386/stpcpy.S
index 176b258744..dd55d656e9 100644
--- a/sysdeps/i386/stpcpy.S
+++ b/sysdeps/i386/stpcpy.S
@@ -1,6 +1,6 @@
/* Copy SRC to DEST returning the address of the terminating '\0' in DEST.
For Intel 80x86, x>=3.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper (drepper@gnu.ai.mit.edu).
diff --git a/sysdeps/i386/stpncpy.S b/sysdeps/i386/stpncpy.S
index 0f6db6478a..fb9ff2f99e 100644
--- a/sysdeps/i386/stpncpy.S
+++ b/sysdeps/i386/stpncpy.S
@@ -1,7 +1,7 @@
/* copy no more than N bytes from SRC to DEST, returning the address of
the terminating '\0' in DEST.
For Intel 80x86, x>=3.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Some bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
diff --git a/sysdeps/i386/strchr.S b/sysdeps/i386/strchr.S
index 7a9cebaa21..d94a673ab1 100644
--- a/sysdeps/i386/strchr.S
+++ b/sysdeps/i386/strchr.S
@@ -1,6 +1,6 @@
/* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
For Intel 80x86, x>=3.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
diff --git a/sysdeps/i386/strchrnul.S b/sysdeps/i386/strchrnul.S
index 28ce91d789..da4385dd70 100644
--- a/sysdeps/i386/strchrnul.S
+++ b/sysdeps/i386/strchrnul.S
@@ -1,7 +1,7 @@
/* strchrnul (str, chr) -- Return pointer to first occurrence of CHR in STR
or the final NUL byte.
For Intel 80x86, x>=3.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>
Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
diff --git a/sysdeps/i386/strcspn.S b/sysdeps/i386/strcspn.S
index e5106b420a..960bf6b388 100644
--- a/sysdeps/i386/strcspn.S
+++ b/sysdeps/i386/strcspn.S
@@ -1,7 +1,7 @@
/* strcspn (str, ss) -- Return the length of the initial segment of STR
which contains no characters from SS.
For Intel 80x86, x>=3.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
diff --git a/sysdeps/i386/string-inlines.c b/sysdeps/i386/string-inlines.c
index 8e94ea1504..f2f59f8a88 100644
--- a/sysdeps/i386/string-inlines.c
+++ b/sysdeps/i386/string-inlines.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2014 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2015 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
diff --git a/sysdeps/i386/strlen.c b/sysdeps/i386/strlen.c
index be13e8774e..1839c90df4 100644
--- a/sysdeps/i386/strlen.c
+++ b/sysdeps/i386/strlen.c
@@ -1,5 +1,5 @@
/* Determine the length of a string. For Intel 80x86, x>=3.
- Copyright (C) 1991-2014 Free Software Foundation, Inc.
+ Copyright (C) 1991-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund (tege@sics.se).
diff --git a/sysdeps/i386/strpbrk.S b/sysdeps/i386/strpbrk.S
index ac526162cf..7e5961b355 100644
--- a/sysdeps/i386/strpbrk.S
+++ b/sysdeps/i386/strpbrk.S
@@ -1,7 +1,7 @@
/* strcspn (str, ss) -- Return the length of the initial segement of STR
which contains no characters from SS.
For Intel 80x86, x>=3.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
This file is part of the GNU C Library.
diff --git a/sysdeps/i386/strrchr.S b/sysdeps/i386/strrchr.S
index 33e706195f..c4ae95d4d6 100644
--- a/sysdeps/i386/strrchr.S
+++ b/sysdeps/i386/strrchr.S
@@ -1,6 +1,6 @@
/* strrchr (str, ch) -- Return pointer to last occurrence of CH in STR.
For Intel 80x86, x>=3.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
diff --git a/sysdeps/i386/strspn.S b/sysdeps/i386/strspn.S
index 903fe7d23c..b68d5a4776 100644
--- a/sysdeps/i386/strspn.S
+++ b/sysdeps/i386/strspn.S
@@ -1,7 +1,7 @@
/* strcspn (str, ss) -- Return the length of the initial segment of STR
which contains only characters from SS.
For Intel 80x86, x>=3.
- Copyright (C) 1994-2014 Free Software Foundation, Inc.
+ Copyright (C) 1994-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
diff --git a/sysdeps/i386/strtok.S b/sysdeps/i386/strtok.S
index 70ec8bbd62..b5f5f927ad 100644
--- a/sysdeps/i386/strtok.S
+++ b/sysdeps/i386/strtok.S
@@ -1,6 +1,6 @@
/* strtok (str, delim) -- Return next DELIM separated token from STR.
For Intel 80x86, x>=3.
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
diff --git a/sysdeps/i386/sub_n.S b/sysdeps/i386/sub_n.S
index 18a43aba49..43952c7f4d 100644
--- a/sysdeps/i386/sub_n.S
+++ b/sysdeps/i386/sub_n.S
@@ -1,6 +1,6 @@
/* i80386 __mpn_sub_n -- Add two limb vectors of the same length > 0 and store
sum in a third limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/submul_1.S b/sysdeps/i386/submul_1.S
index ea787eaffb..e86f9422d8 100644
--- a/sysdeps/i386/submul_1.S
+++ b/sysdeps/i386/submul_1.S
@@ -1,6 +1,6 @@
/* i80386 __mpn_submul_1 -- Multiply a limb vector with a limb and subtract
the result from a second limb vector.
- Copyright (C) 1992-2014 Free Software Foundation, Inc.
+ Copyright (C) 1992-2015 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
The GNU MP Library is free software; you can redistribute it and/or modify
diff --git a/sysdeps/i386/sys/ucontext.h b/sysdeps/i386/sys/ucontext.h
index c7ab13af17..baf1b57220 100644
--- a/sysdeps/i386/sys/ucontext.h
+++ b/sysdeps/i386/sys/ucontext.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2014 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2015 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
diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h
index 217e746c6d..bde11bf26f 100644
--- a/sysdeps/i386/sysdep.h
+++ b/sysdeps/i386/sysdep.h
@@ -1,5 +1,5 @@
/* Assembler macros for i386.
- Copyright (C) 1991-2014 Free Software Foundation, Inc.
+ Copyright (C) 1991-2015 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
diff --git a/sysdeps/i386/tls-macros.h b/sysdeps/i386/tls-macros.h
index 0b857383c9..053cba05d1 100644
--- a/sysdeps/i386/tls-macros.h
+++ b/sysdeps/i386/tls-macros.h
@@ -1,3 +1,5 @@
+#include <features.h> /* For __GNUC_PREREQ. */
+
#define TLS_LE(x) \
({ int *__l; \
asm ("movl %%gs:0,%0\n\t" \
@@ -5,7 +7,7 @@
: "=r" (__l)); \
__l; })
-#ifdef PIC
+#if defined PIC && !__GNUC_PREREQ (5,0)
# define TLS_IE(x) \
({ int *__l; \
asm ("movl %%gs:0,%0\n\t" \
@@ -27,7 +29,7 @@
__l; })
#endif
-#ifdef PIC
+#if defined PIC && !__GNUC_PREREQ (5,0)
# define TLS_LD(x) \
({ int *__l, __c, __d; \
asm ("leal " #x "@tlsldm(%%ebx),%%eax\n\t" \
@@ -51,7 +53,7 @@
__l; })
#endif
-#ifdef PIC
+#if defined PIC && !__GNUC_PREREQ (5,0)
# define TLS_GD(x) \
({ int *__l, __c, __d; \
asm ("leal " #x "@tlsgd(%%ebx),%%eax\n\t" \
diff --git a/sysdeps/i386/tlsdesc.c b/sysdeps/i386/tlsdesc.c
index 9b6e359ae0..7ba373a77d 100644
--- a/sysdeps/i386/tlsdesc.c
+++ b/sysdeps/i386/tlsdesc.c
@@ -1,5 +1,5 @@
/* Manage TLS descriptors. i386 version.
- Copyright (C) 2005-2014 Free Software Foundation, Inc.
+ Copyright (C) 2005-2015 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
@@ -21,6 +21,7 @@
#include <elf/dynamic-link.h>
#include <tls.h>
#include <dl-tlsdesc.h>
+#include <dl-unmap-segments.h>
#include <tlsdeschtab.h>
/* The following 4 functions take an entry_check_offset argument.
@@ -258,10 +259,9 @@ void
internal_function
_dl_unmap (struct link_map *map)
{
- __munmap ((void *) (map)->l_map_start,
- (map)->l_map_end - (map)->l_map_start);
+ _dl_unmap_segments (map);
-#if SHARED
+#ifdef SHARED
if (map->l_mach.tlsdesc_table)
htab_delete (map->l_mach.tlsdesc_table);
#endif
diff --git a/sysdeps/i386/tst-audit.h b/sysdeps/i386/tst-audit.h
index 1ee2af3a5e..b64c2febf9 100644
--- a/sysdeps/i386/tst-audit.h
+++ b/sysdeps/i386/tst-audit.h
@@ -1,6 +1,6 @@
/* Definitions for testing PLT entry/exit auditing. i386 version.
- Copyright (C) 2012-2014 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
diff --git a/sysdeps/i386/tst-audit3.c b/sysdeps/i386/tst-audit3.c
new file mode 100644
index 0000000000..cb2fb909f5
--- /dev/null
+++ b/sysdeps/i386/tst-audit3.c
@@ -0,0 +1,37 @@
+/* Test case for i386 preserved registers in dynamic linker.
+ Copyright (C) 2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
+#include "tst-audit3.h"
+
+static int
+do_test (void)
+{
+ long long ll = audit1_test (1, 2, 3);
+ if (ll != 30)
+ abort ();
+
+ float f = audit2_test (1, 2, 3);
+ if (f != 30)
+ abort ();
+
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../../test-skeleton.c"
diff --git a/sysdeps/i386/tst-audit3.h b/sysdeps/i386/tst-audit3.h
new file mode 100644
index 0000000000..9395605959
--- /dev/null
+++ b/sysdeps/i386/tst-audit3.h
@@ -0,0 +1,20 @@
+/* Test case for i386 preserved registers in dynamic linker.
+ Copyright (C) 2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+extern long long audit1_test (int, int, int) __attribute__ ((regparm(3)));
+extern float audit2_test (int, int, int) __attribute__ ((regparm(3)));
diff --git a/sysdeps/i386/tst-auditmod3a.c b/sysdeps/i386/tst-auditmod3a.c
new file mode 100644
index 0000000000..72fcfa7af7
--- /dev/null
+++ b/sysdeps/i386/tst-auditmod3a.c
@@ -0,0 +1,38 @@
+/* Test case for i386 preserved registers in dynamic linker.
+ Copyright (C) 2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
+#include "tst-audit3.h"
+
+long long
+__attribute__ ((regparm(3)))
+audit1_test (int i, int j, int k)
+{
+ if (i != 1 || j != 2 || k != 3)
+ abort ();
+ return 30;
+}
+
+float
+__attribute__ ((regparm(3)))
+audit2_test (int i, int j, int k)
+{
+ if (i != 1 || j != 2 || k != 3)
+ abort ();
+ return 30;
+}
diff --git a/sysdeps/i386/tst-auditmod3b.c b/sysdeps/i386/tst-auditmod3b.c
new file mode 100644
index 0000000000..5b26a132fa
--- /dev/null
+++ b/sysdeps/i386/tst-auditmod3b.c
@@ -0,0 +1,185 @@
+/* Test case for i386 preserved registers in dynamic linker.
+ Copyright (C) 2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <unistd.h>
+#include <link.h>
+#include <bits/wordsize.h>
+#include <gnu/lib-names.h>
+
+unsigned int
+la_version (unsigned int v)
+{
+ setlinebuf (stdout);
+
+ printf ("version: %u\n", v);
+
+ char buf[20];
+ sprintf (buf, "%u", v);
+
+ return v;
+}
+
+void
+la_activity (uintptr_t *cookie, unsigned int flag)
+{
+ const char *flagstr;
+ switch (flag)
+ {
+ case LA_ACT_CONSISTENT:
+ flagstr = "consistent";
+ break;
+ case LA_ACT_ADD:
+ flagstr = "add";
+ break;
+ case LA_ACT_DELETE:
+ flagstr = "delete";
+ break;
+ default:
+ printf ("activity: unknown activity %u\n", flag);
+ return;
+ }
+ printf ("activity: %s\n", flagstr);
+}
+
+char *
+la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag)
+{
+ const char *flagstr;
+ switch (flag)
+ {
+ case LA_SER_ORIG:
+ flagstr = "LA_SET_ORIG";
+ break;
+ case LA_SER_LIBPATH:
+ flagstr = "LA_SER_LIBPATH";
+ break;
+ case LA_SER_RUNPATH:
+ flagstr = "LA_SER_RUNPATH";
+ break;
+ case LA_SER_CONFIG:
+ flagstr = "LA_SER_CONFIG";
+ break;
+ case LA_SER_DEFAULT:
+ flagstr = "LA_SER_DEFAULT";
+ case LA_SER_SECURE:
+ flagstr = "LA_SER_SECURE";
+ break;
+ default:
+ printf ("objsearch: %s, unknown flag %d\n", name, flag);
+ return (char *) name;
+ }
+
+ printf ("objsearch: %s, %s\n", name, flagstr);
+ return (char *) name;
+}
+
+unsigned int
+la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie)
+{
+ printf ("objopen: %ld, %s\n", lmid, l->l_name);
+
+ return 3;
+}
+
+void
+la_preinit (uintptr_t *cookie)
+{
+ printf ("preinit\n");
+}
+
+unsigned int
+la_objclose (uintptr_t *cookie)
+{
+ printf ("objclose\n");
+ return 0;
+}
+
+uintptr_t
+la_symbind32 (Elf32_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, unsigned int *flags, const char *symname)
+{
+ printf ("symbind32: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ return sym->st_value;
+}
+
+#include "tst-audit.h"
+
+ElfW(Addr)
+pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, La_regs *regs, unsigned int *flags,
+ const char *symname, long int *framesizep)
+{
+ printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ if (strcmp (symname, "audit1_test") == 0
+ || strcmp (symname, "audit2_test") == 0)
+ {
+ if (regs->lr_eax != 1
+ || regs->lr_edx != 2
+ || regs->lr_ecx != 3)
+ abort ();
+
+ *framesizep = 200;
+ }
+
+ return sym->st_value;
+}
+
+unsigned int
+pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, const La_regs *inregs, La_retval *outregs,
+ const char *symname)
+{
+ printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
+ symname, (long int) sym->st_value, ndx,
+ (ptrdiff_t) outregs->int_retval);
+
+ if (strcmp (symname, "audit1_test") == 0
+ || strcmp (symname, "audit2_test") == 0)
+ {
+ if (inregs->lr_eax != 1
+ || inregs->lr_edx != 2
+ || inregs->lr_ecx != 3)
+ abort ();
+
+ if (strcmp (symname, "audit1_test") == 0)
+ {
+ long long x = ((unsigned long long) outregs->lrv_eax
+ | (unsigned long long) outregs->lrv_edx << 32);
+
+ if (x != 30)
+ abort ();
+ }
+ else if (strcmp (symname, "audit2_test") == 0)
+ {
+ if (outregs->lrv_st0 != 30)
+ abort ();
+ }
+ }
+
+ return 0;
+}
diff --git a/sysdeps/i386/tst-stack-align.h b/sysdeps/i386/tst-stack-align.h
index 12ac56c160..cbd5a68192 100644
--- a/sysdeps/i386/tst-stack-align.h
+++ b/sysdeps/i386/tst-stack-align.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004-2014 Free Software Foundation, Inc.
+/* Copyright (C) 2004-2015 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